Untangled TMs and HMs from item ids (#7173)
This commit is contained in:
parent
b3f52166df
commit
e8abfbce49
@ -1027,9 +1027,6 @@
|
||||
#define MAIL_NONE 0xFF
|
||||
#define ITEM_TO_MULCH(itemId)(((itemId) - ITEM_GROWTH_MULCH) + 1)
|
||||
|
||||
#define NUM_TECHNICAL_MACHINES 100
|
||||
#define NUM_HIDDEN_MACHINES 8
|
||||
|
||||
#define MAX_BAG_ITEM_CAPACITY 999
|
||||
#define MAX_PC_ITEM_CAPACITY 999
|
||||
#define MAX_PYRAMID_BAG_ITEM_CAPACITY 99 // Values higher than 255 require free SaveBlock2 space.
|
||||
|
||||
124
include/item.h
124
include/item.h
@ -3,8 +3,44 @@
|
||||
|
||||
#include "constants/item.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/tms_hms.h"
|
||||
|
||||
/* Expands to:
|
||||
* enum
|
||||
* {
|
||||
* ITEM_TM_FOCUS_PUNCH = ITEM_TM01,
|
||||
* ...
|
||||
* ITEM_HM_CUT = ITM_HM01,
|
||||
* ...
|
||||
* }; */
|
||||
#define ENUM_TM(n, id) CAT(ITEM_TM_, id) = CAT(ITEM_TM, n),
|
||||
#define ENUM_HM(n, id) CAT(ITEM_HM_, id) = CAT(ITEM_HM, n),
|
||||
#define TO_TMHM_NUMS(a, ...) (__VA_ARGS__)
|
||||
enum TMHMItemId
|
||||
{
|
||||
RECURSIVELY(R_ZIP(ENUM_TM, TO_TMHM_NUMS NUMBERS_256, (FOREACH_TM(APPEND_COMMA))))
|
||||
RECURSIVELY(R_ZIP(ENUM_HM, TO_TMHM_NUMS NUMBERS_256, (FOREACH_HM(APPEND_COMMA))))
|
||||
};
|
||||
|
||||
#undef ENUM_TM
|
||||
#undef ENUM_HM
|
||||
#undef TO_TMHM_NUMS
|
||||
|
||||
/* Each of these TM_HM enums corresponds an index in the list of TMs + HMs item ids in
|
||||
* gTMHMItemMoveIds. The index for an item can be retrieved with GetItemTMHMIndex below.
|
||||
*/
|
||||
#define UNPACK_TM_HM_ENUM(_tmHm) CAT(ENUM_TM_HM_, _tmHm),
|
||||
enum TMHMIndex
|
||||
{
|
||||
FOREACH_TMHM(UNPACK_TM_HM_ENUM)
|
||||
NUM_ALL_MACHINES,
|
||||
NUM_TECHNICAL_MACHINES = (0 FOREACH_TM(PLUS_ONE)),
|
||||
NUM_HIDDEN_MACHINES = (0 FOREACH_HM(PLUS_ONE)),
|
||||
};
|
||||
|
||||
#undef UNPACK_TM_HM_ENUM
|
||||
|
||||
typedef void (*ItemUseFunc)(u8);
|
||||
|
||||
struct Item
|
||||
@ -20,8 +56,8 @@ struct Item
|
||||
u8 holdEffectParam;
|
||||
u8 importance:2;
|
||||
u8 notConsumed:1;
|
||||
u8 padding:5;
|
||||
enum Pocket pocket:8;
|
||||
enum Pocket pocket:5;
|
||||
u8 padding;
|
||||
u8 type;
|
||||
u8 battleUsage;
|
||||
u8 flingPower;
|
||||
@ -29,14 +65,75 @@ struct Item
|
||||
const u16 *iconPalette;
|
||||
};
|
||||
|
||||
struct __attribute__((packed, aligned(2))) BagPocket
|
||||
struct ALIGNED(2) BagPocket
|
||||
{
|
||||
struct ItemSlot *itemSlots;
|
||||
u16 capacity;
|
||||
};
|
||||
|
||||
struct TmHmIndexKey
|
||||
{
|
||||
enum TMHMItemId itemId:16;
|
||||
u16 moveId;
|
||||
};
|
||||
|
||||
extern const struct Item gItemsInfo[];
|
||||
extern struct BagPocket gBagPockets[];
|
||||
extern const struct TmHmIndexKey gTMHMItemMoveIds[];
|
||||
|
||||
#define UNPACK_ITEM_TO_TM_INDEX(_tm) case CAT(ITEM_TM_, _tm): return CAT(ENUM_TM_HM_, _tm) + 1;
|
||||
#define UNPACK_ITEM_TO_HM_INDEX(_hm) case CAT(ITEM_HM_, _hm): return CAT(ENUM_TM_HM_, _hm) + 1;
|
||||
#define UNPACK_ITEM_TO_TM_MOVE_ID(_tm) case CAT(ITEM_TM_, _tm): return CAT(MOVE_, _tm);
|
||||
#define UNPACK_ITEM_TO_HM_MOVE_ID(_hm) case CAT(ITEM_HM_, _hm): return CAT(MOVE_, _hm);
|
||||
|
||||
static inline enum TMHMIndex GetItemTMHMIndex(u16 item)
|
||||
{
|
||||
switch (item)
|
||||
{
|
||||
/* Expands to:
|
||||
* case ITEM_TM_FOCUS_PUNCH:
|
||||
* return 1;
|
||||
* case ITEM_TM_DRAGON_CLAW:
|
||||
* return 2;
|
||||
* etc */
|
||||
FOREACH_TM(UNPACK_ITEM_TO_TM_INDEX)
|
||||
FOREACH_HM(UNPACK_ITEM_TO_HM_INDEX)
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static inline u16 GetItemTMHMMoveId(u16 item)
|
||||
{
|
||||
switch (item)
|
||||
{
|
||||
/* Expands to:
|
||||
* case ITEM_TM_FOCUS_PUNCH:
|
||||
* return MOVE_FOCUS_PUNCH;
|
||||
* case ITEM_TM_DRAGON_CLAW:
|
||||
* return MOVE_DRAGON_CLAW;
|
||||
* etc */
|
||||
FOREACH_TM(UNPACK_ITEM_TO_TM_MOVE_ID)
|
||||
FOREACH_HM(UNPACK_ITEM_TO_HM_MOVE_ID)
|
||||
default:
|
||||
return MOVE_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
#undef UNPACK_ITEM_TO_TM_INDEX
|
||||
#undef UNPACK_ITEM_TO_HM_INDEX
|
||||
#undef UNPACK_ITEM_TO_TM_MOVE_ID
|
||||
#undef UNPACK_ITEM_TO_HM_MOVE_ID
|
||||
|
||||
static inline enum TMHMItemId GetTMHMItemId(enum TMHMIndex index)
|
||||
{
|
||||
return gTMHMItemMoveIds[index].itemId;
|
||||
}
|
||||
|
||||
static inline u16 GetTMHMMoveId(enum TMHMIndex index)
|
||||
{
|
||||
return gTMHMItemMoveIds[index].moveId;
|
||||
}
|
||||
|
||||
u16 GetBagItemId(enum Pocket pocketId, u32 pocketPos);
|
||||
u16 GetBagItemQuantity(enum Pocket pocketId, u32 pocketPos);
|
||||
@ -85,25 +182,4 @@ u32 GetItemStatus1Mask(u16 itemId);
|
||||
u32 GetItemStatus2Mask(u16 itemId);
|
||||
u32 GetItemSellPrice(u32 itemId);
|
||||
|
||||
/* Expands to:
|
||||
* enum
|
||||
* {
|
||||
* ITEM_TM_FOCUS_PUNCH,
|
||||
* ...
|
||||
* ITEM_HM_CUT,
|
||||
* ...
|
||||
* }; */
|
||||
#define ENUM_TM(id) CAT(ITEM_TM_, id),
|
||||
#define ENUM_HM(id) CAT(ITEM_HM_, id),
|
||||
enum
|
||||
{
|
||||
ENUM_TM_START_ = ITEM_TM01 - 1,
|
||||
FOREACH_TM(ENUM_TM)
|
||||
|
||||
ENUM_HM_START_ = ITEM_HM01 - 1,
|
||||
FOREACH_HM(ENUM_HM)
|
||||
};
|
||||
#undef ENUM_TM
|
||||
#undef ENUM_HM
|
||||
|
||||
#endif // GUARD_ITEM_H
|
||||
|
||||
@ -26,8 +26,9 @@
|
||||
#define STR(...) STR_(__VA_ARGS__)
|
||||
#define STR_(...) #__VA_ARGS__
|
||||
|
||||
/* You'll never guess what this one does */
|
||||
/* You'll never guess what these do */
|
||||
#define APPEND_SEMICOLON(a) a;
|
||||
#define APPEND_COMMA(a) a,
|
||||
|
||||
/* Converts a string to a compound literal, essentially making it a pointer to const u8 */
|
||||
#define COMPOUND_STRING(str) (const u8[]) _(str)
|
||||
@ -98,6 +99,21 @@
|
||||
#define R_FOR_EACH_WITH_(macro, args, a, ...) INVOKE_WITH(macro, args, a) __VA_OPT__(R_FOR_EACH_WITH_P PARENS (macro, args, __VA_ARGS__))
|
||||
#define R_FOR_EACH_WITH_P() R_FOR_EACH_WITH_
|
||||
|
||||
/* Expands to 'macro(a, b)' for each 'a' in 'as' and 'b' in 'bs'.
|
||||
* Uses the shorter of 'as' and 'bs'. (Credit to MGriffin) */
|
||||
#define R_ZIP(macro, as, bs) CAT(R_ZIP_, CAT(R_ZIP_NONEMPTY(as), R_ZIP_NONEMPTY(bs)))(macro, FIRST as, FIRST bs, (EXCEPT_1 as), (EXCEPT_1 bs))
|
||||
#define R_ZIP_00(macro, a, b, as, bs)
|
||||
#define R_ZIP_01(macro, a, b, as, bs)
|
||||
#define R_ZIP_10(macro, a, b, as, bs)
|
||||
#define R_ZIP_11(macro, a, b, as, bs) macro(a, b) R_ZIP_P PARENS (macro, as, bs)
|
||||
#define R_ZIP_P() R_ZIP
|
||||
|
||||
#define R_ZIP_NONEMPTY(as) R_ZIP_NONEMPTY_ as
|
||||
#define R_ZIP_NONEMPTY_(...) FIRST(__VA_OPT__(1,) 0)
|
||||
|
||||
/* Just a lot of numbers (with leading zeroes - remove with REMOVE_LEADING_ZEROES) */
|
||||
#define NUMBERS_256 (00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255)
|
||||
|
||||
/* Picks the xth VA_ARG if it exists, otherwise returns a default value */
|
||||
#define DEFAULT(_default, ...) FIRST(__VA_OPT__(__VA_ARGS__, ) _default)
|
||||
#define DEFAULT_2(_default, ...) DEFAULT(_default __VA_OPT__(, SECOND(__VA_ARGS__)))
|
||||
@ -171,4 +187,10 @@ Input must be of the form (upper << lower) where upper can be up to 3, lower up
|
||||
/* Finds the required digits to display the number (maximum 4) */
|
||||
#define MAX_DIGITS(_num) 1 + !!(_num / 10) + !!(_num / 100) + !!(_num / 1000)
|
||||
|
||||
/* Converts a number with leading zeroes to a normal int (base 10 and up to three digits only!) */
|
||||
#define REMOVE_LEADING_ZEROES(_num) (((0x##_num / 256) * 100) + ((0x##_num / 16) * 10) + (0x##_num % 16))
|
||||
|
||||
/* Useful for counting arguments */
|
||||
#define PLUS_ONE(...) + 1
|
||||
|
||||
#endif
|
||||
|
||||
@ -824,7 +824,8 @@ void CreateTask_PlayMapChosenOrBattleBGM(u16 songId);
|
||||
const u16 *GetMonFrontSpritePal(struct Pokemon *mon);
|
||||
const u16 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality);
|
||||
const u16 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFemale);
|
||||
bool8 IsMoveHM(u16 move);
|
||||
bool32 IsMoveHM(u16 move);
|
||||
bool32 CannotForgetMove(u16 move);
|
||||
bool8 IsMonSpriteNotFlipped(u16 species);
|
||||
s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor);
|
||||
s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor);
|
||||
|
||||
@ -353,14 +353,12 @@ static u16 GetRandomAlternateMove(u8 monId)
|
||||
// NOTE: Below is an infinite loop if a species which cannot learn TMs is assigned to an Apprentice
|
||||
do
|
||||
{
|
||||
id = Random() % (NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES);
|
||||
shouldUseMove = CanLearnTeachableMove(species, ItemIdToBattleMoveId(ITEM_TM01 + id));
|
||||
id = (Random() % NUM_ALL_MACHINES) + 1;
|
||||
move = GetTMHMMoveId(id);
|
||||
shouldUseMove = CanLearnTeachableMove(species, move);
|
||||
}
|
||||
while (!shouldUseMove);
|
||||
|
||||
move = ItemIdToBattleMoveId(ITEM_TM01 + id);
|
||||
shouldUseMove = TRUE;
|
||||
|
||||
if (numLearnsetMoves <= MAX_MON_MOVES)
|
||||
j = 0;
|
||||
else
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
#include "sound.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "data.h"
|
||||
#include "item.h"
|
||||
#include "international_string_util.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "scanline_effect.h"
|
||||
@ -3976,12 +3977,12 @@ static bool32 IsDomeLuckyMove(u32 move)
|
||||
static bool32 IsDomePopularMove(u32 move)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; i++)
|
||||
for (i = 0; i < NUM_ALL_MACHINES; i++)
|
||||
{
|
||||
if (ItemIdToBattleMoveId(ITEM_TM01 + i) == move)
|
||||
if (GetTMHMMoveId(i + 1) == move)
|
||||
return TRUE;
|
||||
}
|
||||
if (i == NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES)
|
||||
if (i == NUM_ALL_MACHINES)
|
||||
return FALSE;
|
||||
// Filter in TMs/HMs
|
||||
if (GetMovePower(move) >= 90)
|
||||
|
||||
@ -8497,7 +8497,7 @@ static void Cmd_yesnoboxlearnmove(void)
|
||||
else
|
||||
{
|
||||
u16 move = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + movePosition);
|
||||
if (IsMoveHM(move))
|
||||
if (CannotForgetMove(move))
|
||||
{
|
||||
PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, B_POSITION_PLAYER_LEFT);
|
||||
gBattleScripting.learnMoveState = 6;
|
||||
|
||||
@ -10445,7 +10445,7 @@ enum DamageCategory GetCategoryBasedOnStats(u32 battler)
|
||||
|
||||
static u32 GetFlingPowerFromItemId(u32 itemId)
|
||||
{
|
||||
if (itemId >= ITEM_TM01 && itemId <= ITEM_HM08)
|
||||
if (gItemsInfo[itemId].pocket == POCKET_TM_HM)
|
||||
{
|
||||
u32 power = GetMovePower(ItemIdToBattleMoveId(itemId));
|
||||
if (power > 1)
|
||||
|
||||
108
src/data/items.h
108
src/data/items.h
@ -10454,7 +10454,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_FOCUS_PUNCH,
|
||||
},
|
||||
|
||||
[ITEM_TM_DRAGON_CLAW] =
|
||||
@ -10469,7 +10468,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_DRAGON_CLAW,
|
||||
},
|
||||
|
||||
[ITEM_TM_WATER_PULSE] =
|
||||
@ -10484,7 +10482,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_WATER_PULSE,
|
||||
},
|
||||
|
||||
[ITEM_TM_CALM_MIND] =
|
||||
@ -10499,7 +10496,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_CALM_MIND,
|
||||
},
|
||||
|
||||
[ITEM_TM_ROAR] =
|
||||
@ -10514,7 +10510,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_ROAR,
|
||||
},
|
||||
|
||||
[ITEM_TM_TOXIC] =
|
||||
@ -10529,7 +10524,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_TOXIC,
|
||||
},
|
||||
|
||||
[ITEM_TM_HAIL] =
|
||||
@ -10551,7 +10545,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_HAIL,
|
||||
},
|
||||
|
||||
[ITEM_TM_BULK_UP] =
|
||||
@ -10566,7 +10559,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_BULK_UP,
|
||||
},
|
||||
|
||||
[ITEM_TM_BULLET_SEED] =
|
||||
@ -10581,7 +10573,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_BULLET_SEED,
|
||||
},
|
||||
|
||||
[ITEM_TM_HIDDEN_POWER] =
|
||||
@ -10596,7 +10587,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_HIDDEN_POWER,
|
||||
},
|
||||
|
||||
[ITEM_TM_SUNNY_DAY] =
|
||||
@ -10611,7 +10601,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SUNNY_DAY,
|
||||
},
|
||||
|
||||
[ITEM_TM_TAUNT] =
|
||||
@ -10626,7 +10615,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_TAUNT,
|
||||
},
|
||||
|
||||
[ITEM_TM_ICE_BEAM] =
|
||||
@ -10645,7 +10633,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_ICE_BEAM,
|
||||
},
|
||||
|
||||
[ITEM_TM_BLIZZARD] =
|
||||
@ -10666,7 +10653,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_BLIZZARD,
|
||||
},
|
||||
|
||||
[ITEM_TM_HYPER_BEAM] =
|
||||
@ -10681,7 +10667,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_HYPER_BEAM,
|
||||
},
|
||||
|
||||
[ITEM_TM_LIGHT_SCREEN] =
|
||||
@ -10696,7 +10681,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_LIGHT_SCREEN,
|
||||
},
|
||||
|
||||
[ITEM_TM_PROTECT] =
|
||||
@ -10711,7 +10695,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_PROTECT,
|
||||
},
|
||||
|
||||
[ITEM_TM_RAIN_DANCE] =
|
||||
@ -10726,7 +10709,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_RAIN_DANCE,
|
||||
},
|
||||
|
||||
[ITEM_TM_GIGA_DRAIN] =
|
||||
@ -10741,7 +10723,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_GIGA_DRAIN,
|
||||
},
|
||||
|
||||
[ITEM_TM_SAFEGUARD] =
|
||||
@ -10756,7 +10737,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SAFEGUARD,
|
||||
},
|
||||
|
||||
[ITEM_TM_FRUSTRATION] =
|
||||
@ -10771,7 +10751,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_FRUSTRATION,
|
||||
},
|
||||
|
||||
[ITEM_TM_SOLAR_BEAM] =
|
||||
@ -10786,7 +10765,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SOLAR_BEAM,
|
||||
},
|
||||
|
||||
[ITEM_TM_IRON_TAIL] =
|
||||
@ -10801,7 +10779,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_IRON_TAIL,
|
||||
},
|
||||
|
||||
[ITEM_TM_THUNDERBOLT] =
|
||||
@ -10816,7 +10793,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_THUNDERBOLT,
|
||||
},
|
||||
|
||||
[ITEM_TM_THUNDER] =
|
||||
@ -10831,7 +10807,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_THUNDER,
|
||||
},
|
||||
|
||||
[ITEM_TM_EARTHQUAKE] =
|
||||
@ -10846,7 +10821,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_EARTHQUAKE,
|
||||
},
|
||||
|
||||
[ITEM_TM_RETURN] =
|
||||
@ -10861,7 +10835,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_RETURN,
|
||||
},
|
||||
|
||||
[ITEM_TM_DIG] =
|
||||
@ -10876,7 +10849,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_DIG,
|
||||
},
|
||||
|
||||
[ITEM_TM_PSYCHIC] =
|
||||
@ -10891,7 +10863,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_PSYCHIC,
|
||||
},
|
||||
|
||||
[ITEM_TM_SHADOW_BALL] =
|
||||
@ -10906,7 +10877,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SHADOW_BALL,
|
||||
},
|
||||
|
||||
[ITEM_TM_BRICK_BREAK] =
|
||||
@ -10921,7 +10891,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_BRICK_BREAK,
|
||||
},
|
||||
|
||||
[ITEM_TM_DOUBLE_TEAM] =
|
||||
@ -10936,7 +10905,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_DOUBLE_TEAM,
|
||||
},
|
||||
|
||||
[ITEM_TM_REFLECT] =
|
||||
@ -10951,7 +10919,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_REFLECT,
|
||||
},
|
||||
|
||||
[ITEM_TM_SHOCK_WAVE] =
|
||||
@ -10966,7 +10933,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SHOCK_WAVE,
|
||||
},
|
||||
|
||||
[ITEM_TM_FLAMETHROWER] =
|
||||
@ -10981,7 +10947,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_FLAMETHROWER,
|
||||
},
|
||||
|
||||
[ITEM_TM_SLUDGE_BOMB] =
|
||||
@ -10996,7 +10961,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SLUDGE_BOMB,
|
||||
},
|
||||
|
||||
[ITEM_TM_SANDSTORM] =
|
||||
@ -11011,7 +10975,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SANDSTORM,
|
||||
},
|
||||
|
||||
[ITEM_TM_FIRE_BLAST] =
|
||||
@ -11026,7 +10989,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_FIRE_BLAST,
|
||||
},
|
||||
|
||||
[ITEM_TM_ROCK_TOMB] =
|
||||
@ -11041,7 +11003,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_ROCK_TOMB,
|
||||
},
|
||||
|
||||
[ITEM_TM_AERIAL_ACE] =
|
||||
@ -11056,7 +11017,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_AERIAL_ACE,
|
||||
},
|
||||
|
||||
[ITEM_TM_TORMENT] =
|
||||
@ -11071,7 +11031,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_TORMENT,
|
||||
},
|
||||
|
||||
[ITEM_TM_FACADE] =
|
||||
@ -11086,7 +11045,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_FACADE,
|
||||
},
|
||||
|
||||
[ITEM_TM_SECRET_POWER] =
|
||||
@ -11101,7 +11059,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SECRET_POWER,
|
||||
},
|
||||
|
||||
[ITEM_TM_REST] =
|
||||
@ -11116,7 +11073,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_REST,
|
||||
},
|
||||
|
||||
[ITEM_TM_ATTRACT] =
|
||||
@ -11131,7 +11087,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_ATTRACT,
|
||||
},
|
||||
|
||||
[ITEM_TM_THIEF] =
|
||||
@ -11146,7 +11101,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_THIEF,
|
||||
},
|
||||
|
||||
[ITEM_TM_STEEL_WING] =
|
||||
@ -11161,7 +11115,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_STEEL_WING,
|
||||
},
|
||||
|
||||
[ITEM_TM_SKILL_SWAP] =
|
||||
@ -11176,7 +11129,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SKILL_SWAP,
|
||||
},
|
||||
|
||||
[ITEM_TM_SNATCH] =
|
||||
@ -11191,7 +11143,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SNATCH,
|
||||
},
|
||||
|
||||
[ITEM_TM_OVERHEAT] =
|
||||
@ -11206,7 +11157,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_OVERHEAT,
|
||||
},
|
||||
|
||||
[ITEM_TM51] =
|
||||
@ -11218,7 +11168,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM52] =
|
||||
@ -11230,7 +11179,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM53] =
|
||||
@ -11242,7 +11190,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM54] =
|
||||
@ -11254,7 +11201,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM55] =
|
||||
@ -11266,7 +11212,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM56] =
|
||||
@ -11278,7 +11223,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM57] =
|
||||
@ -11290,7 +11234,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM58] =
|
||||
@ -11302,7 +11245,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM59] =
|
||||
@ -11314,7 +11256,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM60] =
|
||||
@ -11326,7 +11267,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM61] =
|
||||
@ -11338,7 +11278,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM62] =
|
||||
@ -11350,7 +11289,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM63] =
|
||||
@ -11362,7 +11300,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM64] =
|
||||
@ -11374,7 +11311,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM65] =
|
||||
@ -11386,7 +11322,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM66] =
|
||||
@ -11398,7 +11333,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM67] =
|
||||
@ -11410,7 +11344,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM68] =
|
||||
@ -11422,7 +11355,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM69] =
|
||||
@ -11434,7 +11366,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM70] =
|
||||
@ -11446,7 +11377,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM71] =
|
||||
@ -11458,7 +11388,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM72] =
|
||||
@ -11470,7 +11399,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM73] =
|
||||
@ -11482,7 +11410,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM74] =
|
||||
@ -11494,7 +11421,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM75] =
|
||||
@ -11506,7 +11432,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM76] =
|
||||
@ -11518,7 +11443,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM77] =
|
||||
@ -11530,7 +11454,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM78] =
|
||||
@ -11542,7 +11465,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM79] =
|
||||
@ -11554,7 +11476,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM80] =
|
||||
@ -11566,7 +11487,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM81] =
|
||||
@ -11578,7 +11498,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM82] =
|
||||
@ -11590,7 +11509,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM83] =
|
||||
@ -11602,7 +11520,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM84] =
|
||||
@ -11614,7 +11531,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM85] =
|
||||
@ -11626,7 +11542,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM86] =
|
||||
@ -11638,7 +11553,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM87] =
|
||||
@ -11650,7 +11564,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM88] =
|
||||
@ -11662,7 +11575,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM89] =
|
||||
@ -11674,7 +11586,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM90] =
|
||||
@ -11686,7 +11597,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM91] =
|
||||
@ -11698,7 +11608,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM92] =
|
||||
@ -11710,7 +11619,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM93] =
|
||||
@ -11722,7 +11630,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM94] =
|
||||
@ -11734,7 +11641,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM95] =
|
||||
@ -11746,7 +11652,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM96] =
|
||||
@ -11758,7 +11663,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM97] =
|
||||
@ -11770,7 +11674,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM98] =
|
||||
@ -11782,7 +11685,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM99] =
|
||||
@ -11794,7 +11696,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_TM100] =
|
||||
@ -11806,7 +11707,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_NONE, // Todo
|
||||
},
|
||||
|
||||
[ITEM_HM_CUT] =
|
||||
@ -11821,7 +11721,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_CUT,
|
||||
},
|
||||
|
||||
[ITEM_HM_FLY] =
|
||||
@ -11836,7 +11735,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_FLY,
|
||||
},
|
||||
|
||||
[ITEM_HM_SURF] =
|
||||
@ -11851,7 +11749,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_SURF,
|
||||
},
|
||||
|
||||
[ITEM_HM_STRENGTH] =
|
||||
@ -11866,7 +11763,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_STRENGTH,
|
||||
},
|
||||
|
||||
[ITEM_HM_FLASH] =
|
||||
@ -11881,7 +11777,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_FLASH,
|
||||
},
|
||||
|
||||
[ITEM_HM_ROCK_SMASH] =
|
||||
@ -11896,7 +11791,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_ROCK_SMASH,
|
||||
},
|
||||
|
||||
[ITEM_HM_WATERFALL] =
|
||||
@ -11911,7 +11805,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_WATERFALL,
|
||||
},
|
||||
|
||||
[ITEM_HM_DIVE] =
|
||||
@ -11926,7 +11819,6 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_TM_HM,
|
||||
.type = ITEM_USE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
|
||||
.secondaryId = MOVE_DIVE,
|
||||
},
|
||||
|
||||
|
||||
|
||||
@ -895,9 +895,9 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
|
||||
{
|
||||
if (sHatchedEggFatherMoves[i] != MOVE_NONE)
|
||||
{
|
||||
for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++)
|
||||
for (j = 0; j < NUM_ALL_MACHINES; j++)
|
||||
{
|
||||
u16 moveId = ItemIdToBattleMoveId(ITEM_TM01 + j);
|
||||
u16 moveId = GetTMHMMoveId(j + 1);
|
||||
if (sHatchedEggFatherMoves[i] == moveId && CanLearnTeachableMove(GetMonData(egg, MON_DATA_SPECIES_OR_EGG), moveId))
|
||||
{
|
||||
if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES)
|
||||
|
||||
@ -3236,10 +3236,11 @@ static void DebugAction_PCBag_Fill_PocketPokeBalls(u8 taskId)
|
||||
|
||||
static void DebugAction_PCBag_Fill_PocketTMHM(u8 taskId)
|
||||
{
|
||||
u16 itemId;
|
||||
u16 index, itemId;
|
||||
|
||||
for (itemId = ITEM_TM01; itemId <= ITEM_HM08; itemId++)
|
||||
for (index = 0; index < NUM_ALL_MACHINES; index++)
|
||||
{
|
||||
itemId = GetTMHMItemId(index + 1);
|
||||
if (CheckBagHasSpace(itemId, 1) && ItemIdToBattleMoveId(itemId) != MOVE_NONE)
|
||||
AddBagItem(itemId, 1);
|
||||
}
|
||||
|
||||
@ -992,7 +992,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
{
|
||||
// Selected move to forget
|
||||
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
|
||||
if (IsMoveHM(move))
|
||||
if (CannotForgetMove(move))
|
||||
{
|
||||
// Can't forget HMs
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN]);
|
||||
@ -1376,7 +1376,7 @@ static void Task_TradeEvolutionScene(u8 taskId)
|
||||
{
|
||||
// Selected move to forget
|
||||
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
|
||||
if (IsMoveHM(move))
|
||||
if (CannotForgetMove(move))
|
||||
{
|
||||
// Can't forget HMs
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN]);
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
#include "field_weather.h"
|
||||
#include "graphics.h"
|
||||
#include "international_string_util.h"
|
||||
#include "item.h"
|
||||
#include "item_icon.h"
|
||||
#include "link.h"
|
||||
#include "load_save.h"
|
||||
@ -1671,7 +1672,7 @@ u16 GetMysteryGiftCardStat(void)
|
||||
|
||||
bool8 BufferTMHMMoveName(void)
|
||||
{
|
||||
if (gSpecialVar_0x8004 >= ITEM_TM01 && gSpecialVar_0x8004 <= ITEM_HM08)
|
||||
if (gItemsInfo[gSpecialVar_0x8004].pocket == POCKET_TM_HM)
|
||||
{
|
||||
StringCopy(gStringVar2, GetMoveName(ItemIdToBattleMoveId(gSpecialVar_0x8004)));
|
||||
return TRUE;
|
||||
|
||||
25
src/item.c
25
src/item.c
@ -31,6 +31,27 @@ EWRAM_DATA struct BagPocket gBagPockets[POCKETS_COUNT] = {0};
|
||||
#include "data/pokemon/item_effects.h"
|
||||
#include "data/items.h"
|
||||
|
||||
#define UNPACK_TM_ITEM_ID(_tm) [CAT(ENUM_TM_HM_, _tm) + 1] = { CAT(ITEM_TM_, _tm), CAT(MOVE_, _tm) },
|
||||
#define UNPACK_HM_ITEM_ID(_hm) [CAT(ENUM_TM_HM_, _hm) + 1] = { CAT(ITEM_HM_, _hm), CAT(MOVE_, _hm) },
|
||||
|
||||
const struct TmHmIndexKey gTMHMItemMoveIds[NUM_ALL_MACHINES + 1] =
|
||||
{
|
||||
[0] = { ITEM_NONE, MOVE_NONE }, // Failsafe
|
||||
FOREACH_TM(UNPACK_TM_ITEM_ID)
|
||||
FOREACH_HM(UNPACK_HM_ITEM_ID)
|
||||
/*
|
||||
* Expands to the following:
|
||||
*
|
||||
* [1] = { ITEM_TM_FOCUS_PUNCH, MOVE_FOCUS_PUNCH },
|
||||
* [2] = { ITEM_TM_DRAGON_CLAW, MOVE_DRAGON_CLAW },
|
||||
* [3] = { ITEM_TM_WATER_PULSE, MOVE_WATER_PULSE },
|
||||
* etc etc
|
||||
*/
|
||||
};
|
||||
|
||||
#undef UNPACK_TM_ITEM_ID
|
||||
#undef UNPACK_HM_ITEM_ID
|
||||
|
||||
static inline u16 GetBagItemIdPocket(struct BagPocket *pocket, u32 pocketPos)
|
||||
{
|
||||
return pocket->itemSlots[pocketPos].itemId;
|
||||
@ -592,7 +613,9 @@ void SortBerriesOrTMHMs(enum Pocket pocketId)
|
||||
{
|
||||
if (GetBagItemQuantity(pocketId, j) == 0 || GetBagItemId(pocketId, j) == ITEM_NONE)
|
||||
continue;
|
||||
if (GetBagItemId(pocketId, i) <= GetBagItemId(pocketId, j))
|
||||
if (pocketId == POCKET_BERRIES && GetBagItemId(pocketId, i) <= GetBagItemId(pocketId, j)) // To do
|
||||
continue;
|
||||
if (pocketId == POCKET_TM_HM && GetItemTMHMIndex(GetBagItemId(pocketId, i)) <= GetItemTMHMIndex(GetBagItemId(pocketId, j)))
|
||||
continue;
|
||||
}
|
||||
SwapItemSlots(pocketId, i, j);
|
||||
|
||||
@ -166,11 +166,11 @@ const void *GetItemIconPic(u16 itemId)
|
||||
return gItemIcon_ReturnToFieldArrow; // Use last icon, the "return to field" arrow
|
||||
if (itemId >= ITEMS_COUNT)
|
||||
return gItemsInfo[0].iconPic;
|
||||
if (itemId >= ITEM_TM01 && itemId < ITEM_HM01 + NUM_HIDDEN_MACHINES)
|
||||
if (gItemsInfo[itemId].pocket == POCKET_TM_HM)
|
||||
{
|
||||
if (itemId < ITEM_TM01 + NUM_TECHNICAL_MACHINES)
|
||||
return gItemIcon_TM;
|
||||
return gItemIcon_HM;
|
||||
if (GetItemTMHMIndex(itemId) > NUM_TECHNICAL_MACHINES)
|
||||
return gItemIcon_HM;
|
||||
return gItemIcon_TM;
|
||||
}
|
||||
|
||||
return gItemsInfo[itemId].iconPic;
|
||||
@ -182,8 +182,8 @@ const u16 *GetItemIconPalette(u16 itemId)
|
||||
return gItemIconPalette_ReturnToFieldArrow;
|
||||
if (itemId >= ITEMS_COUNT)
|
||||
return gItemsInfo[0].iconPalette;
|
||||
if (itemId >= ITEM_TM01 && itemId < ITEM_HM01 + NUM_HIDDEN_MACHINES)
|
||||
return gTypesInfo[GetMoveType(gItemsInfo[itemId].secondaryId)].paletteTMHM;
|
||||
if (gItemsInfo[itemId].pocket == POCKET_TM_HM)
|
||||
return gTypesInfo[GetMoveType(GetItemTMHMMoveId(itemId))].paletteTMHM;
|
||||
|
||||
return gItemsInfo[itemId].iconPalette;
|
||||
}
|
||||
|
||||
@ -916,16 +916,16 @@ static void GetItemNameFromPocket(u8 *dest, u16 itemId)
|
||||
case POCKET_TM_HM:
|
||||
end = StringCopy(gStringVar2, GetMoveName(ItemIdToBattleMoveId(itemId)));
|
||||
PrependFontIdToFit(gStringVar2, end, FONT_NARROW, 61);
|
||||
if (itemId >= ITEM_HM01)
|
||||
if (GetItemTMHMIndex(itemId) > NUM_TECHNICAL_MACHINES)
|
||||
{
|
||||
// Get HM number
|
||||
ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_HM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 1);
|
||||
ConvertIntToDecimalStringN(gStringVar1, GetItemTMHMIndex(itemId) - NUM_TECHNICAL_MACHINES, STR_CONV_MODE_LEADING_ZEROS, 1);
|
||||
StringExpandPlaceholders(dest, gText_NumberItem_HM);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Get TM number
|
||||
ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_TM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
|
||||
ConvertIntToDecimalStringN(gStringVar1, GetItemTMHMIndex(itemId), STR_CONV_MODE_LEADING_ZEROS, 2);
|
||||
StringExpandPlaceholders(dest, gText_NumberItem_TMBerry);
|
||||
}
|
||||
break;
|
||||
@ -983,7 +983,7 @@ static void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 y)
|
||||
itemQuantity = GetBagItemQuantity(gBagPosition.pocket, itemIndex);
|
||||
|
||||
// Draw HM icon
|
||||
if (itemId >= ITEM_HM01 && itemId <= ITEM_HM08)
|
||||
if (gBagPosition.pocket == POCKET_TM_HM && GetItemTMHMIndex(itemId) > NUM_TECHNICAL_MACHINES)
|
||||
BlitBitmapToWindow(windowId, gBagMenuHMIcon_Gfx, 8, y - 1, 16, 16);
|
||||
|
||||
if (gBagPosition.pocket != POCKET_KEY_ITEMS && GetItemImportance(itemId) == FALSE)
|
||||
|
||||
@ -884,7 +884,7 @@ void ItemUseOutOfBattle_DynamaxCandy(u8 taskId)
|
||||
|
||||
void ItemUseOutOfBattle_TMHM(u8 taskId)
|
||||
{
|
||||
if (gSpecialVar_ItemId >= ITEM_HM01)
|
||||
if (GetItemTMHMIndex(gSpecialVar_ItemId) > NUM_TECHNICAL_MACHINES)
|
||||
DisplayItemMessage(taskId, FONT_NORMAL, sText_BootedUpHM, BootUpSoundTMHM); // HM
|
||||
else
|
||||
DisplayItemMessage(taskId, FONT_NORMAL, sText_BootedUpTM, BootUpSoundTMHM); // TM
|
||||
|
||||
@ -158,14 +158,6 @@ enum {
|
||||
#define MENU_DIR_RIGHT 2
|
||||
#define MENU_DIR_LEFT -2
|
||||
|
||||
#define HM_MOVES_END 0xFFFF
|
||||
|
||||
static const u16 sHMMoves[] =
|
||||
{
|
||||
MOVE_CUT, MOVE_FLY, MOVE_SURF, MOVE_STRENGTH, MOVE_FLASH,
|
||||
MOVE_ROCK_SMASH, MOVE_WATERFALL, MOVE_DIVE, HM_MOVES_END
|
||||
};
|
||||
|
||||
enum {
|
||||
CAN_LEARN_MOVE,
|
||||
CANNOT_LEARN_MOVE,
|
||||
@ -1567,14 +1559,8 @@ static bool8 DoesSelectedMonKnowHM(u8 *slotPtr)
|
||||
|
||||
for (u32 i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
u32 j = 0;
|
||||
u16 move = GetMonData(&gPlayerParty[*slotPtr], MON_DATA_MOVE1 + i);
|
||||
|
||||
while (sHMMoves[j] != HM_MOVES_END)
|
||||
{
|
||||
if (sHMMoves[j++] == move)
|
||||
return TRUE;
|
||||
}
|
||||
if (IsMoveHM(GetMonData(&gPlayerParty[*slotPtr], MON_DATA_MOVE1 + i)))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@ -5355,7 +5341,7 @@ void ItemUseCB_PPUp(u8 taskId, TaskFunc task)
|
||||
|
||||
u16 ItemIdToBattleMoveId(u16 item)
|
||||
{
|
||||
return (GetItemPocket(item) == POCKET_TM_HM) ? gItemsInfo[item].secondaryId : MOVE_NONE;
|
||||
return (GetItemPocket(item) == POCKET_TM_HM) ? GetItemTMHMMoveId(item) : MOVE_NONE;
|
||||
}
|
||||
|
||||
bool8 MonKnowsMove(struct Pokemon *mon, u16 move)
|
||||
|
||||
@ -290,9 +290,9 @@ static EWRAM_DATA u16 sLastSelectedPokemon = 0;
|
||||
static EWRAM_DATA u8 sPokeBallRotation = 0;
|
||||
static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
|
||||
//Pokedex Plus HGSS_Ui
|
||||
#define MOVES_COUNT_TOTAL (EGG_MOVES_ARRAY_COUNT + MAX_LEVEL_UP_MOVES + NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES)
|
||||
#define MOVES_COUNT_TOTAL (EGG_MOVES_ARRAY_COUNT + MAX_LEVEL_UP_MOVES + NUM_ALL_MACHINES)
|
||||
EWRAM_DATA static u16 sStatsMoves[MOVES_COUNT_TOTAL] = {0};
|
||||
EWRAM_DATA static u16 sStatsMovesTMHM_ID[NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES] = {0};
|
||||
EWRAM_DATA static u16 sStatsMovesTMHM_ID[NUM_ALL_MACHINES] = {0};
|
||||
|
||||
|
||||
struct SearchOptionText
|
||||
@ -5054,13 +5054,13 @@ static u16 AddTMTutorMoves(u16 species, u16 movesTotal, u8 *numTMHMMoves, u8 *nu
|
||||
// TM Moves
|
||||
if (HGSS_SORT_TMS_BY_NUM)
|
||||
{
|
||||
for (i = 0; i < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; i++)
|
||||
for (i = 0; i < NUM_ALL_MACHINES; i++)
|
||||
{
|
||||
move = ItemIdToBattleMoveId(ITEM_TM01 + i);
|
||||
move = GetTMHMMoveId(i + 1);
|
||||
if (move != MOVE_NONE && CanLearnTeachableMove(species, move))
|
||||
{
|
||||
isTMMove[move] = TRUE;
|
||||
sStatsMovesTMHM_ID[*numTMHMMoves] = ITEM_TM01 + i;
|
||||
sStatsMovesTMHM_ID[*numTMHMMoves] = GetTMHMItemId(i + 1);
|
||||
(*numTMHMMoves)++;
|
||||
sStatsMoves[movesTotal] = move;
|
||||
movesTotal++;
|
||||
@ -5072,12 +5072,12 @@ static u16 AddTMTutorMoves(u16 species, u16 movesTotal, u8 *numTMHMMoves, u8 *nu
|
||||
for (i = 0; teachableLearnset[i] != MOVE_UNAVAILABLE; i++)
|
||||
{
|
||||
move = teachableLearnset[i];
|
||||
for (u16 j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++)
|
||||
for (u16 j = 0; j < NUM_ALL_MACHINES; j++)
|
||||
{
|
||||
if (ItemIdToBattleMoveId(ITEM_TM01 + j) == move)
|
||||
if (GetTMHMMoveId(j + 1) == move)
|
||||
{
|
||||
isTMMove[move] = TRUE;
|
||||
sStatsMovesTMHM_ID[*numTMHMMoves] = ITEM_TM01 + j;
|
||||
sStatsMovesTMHM_ID[*numTMHMMoves] = GetTMHMItemId(j + 1);
|
||||
(*numTMHMMoves)++;
|
||||
sStatsMoves[movesTotal] = move;
|
||||
movesTotal++;
|
||||
|
||||
@ -871,14 +871,6 @@ static const s8 sFriendshipEventModifiers[][3] =
|
||||
[FRIENDSHIP_EVENT_FAINT_LARGE] = {-5, -5, -10},
|
||||
};
|
||||
|
||||
#define HM_MOVES_END 0xFFFF
|
||||
|
||||
static const u16 sHMMoves[] =
|
||||
{
|
||||
MOVE_CUT, MOVE_FLY, MOVE_SURF, MOVE_STRENGTH, MOVE_FLASH,
|
||||
MOVE_ROCK_SMASH, MOVE_WATERFALL, MOVE_DIVE, HM_MOVES_END
|
||||
};
|
||||
|
||||
static const struct SpeciesItem sAlteringCaveWildMonHeldItems[] =
|
||||
{
|
||||
{SPECIES_NONE, ITEM_NONE},
|
||||
@ -5947,19 +5939,21 @@ const u16 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFema
|
||||
}
|
||||
}
|
||||
|
||||
bool8 IsMoveHM(u16 move)
|
||||
{
|
||||
int i = 0;
|
||||
#define OR_MOVE_IS_HM(_hm) || (move == MOVE_##_hm)
|
||||
|
||||
bool32 IsMoveHM(u16 move)
|
||||
{
|
||||
return FALSE FOREACH_HM(OR_MOVE_IS_HM);
|
||||
}
|
||||
|
||||
#undef OR_MOVE_IS_HM
|
||||
|
||||
bool32 CannotForgetMove(u16 move)
|
||||
{
|
||||
if (P_CAN_FORGET_HIDDEN_MOVE)
|
||||
return FALSE;
|
||||
|
||||
while (sHMMoves[i] != HM_MOVES_END)
|
||||
{
|
||||
if (sHMMoves[i++] == move)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
return IsMoveHM(move);
|
||||
}
|
||||
|
||||
bool8 IsMonSpriteNotFlipped(u16 species)
|
||||
|
||||
@ -2609,7 +2609,7 @@ static bool8 CanReplaceMove(void)
|
||||
{
|
||||
if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES
|
||||
|| sMonSummaryScreen->newMove == MOVE_NONE
|
||||
|| IsMoveHM(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]) != TRUE)
|
||||
|| !CannotForgetMove(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user