Reusable TMs (#2903)

* Reusable TMs
* Forgot about Gen9 making TMs expendable again
* Change importance check based on Alex's suggestion
* Prevent items with importance from being bought more than once
* Change importance check to ghoul's suggestion
* Update include/config/item.h
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>

---------

Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
This commit is contained in:
Bassoonian 2023-04-19 01:52:20 +02:00 committed by GitHub
parent e6505bda4b
commit d5b36c7c60
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 126 additions and 5 deletions

View File

@ -9,6 +9,9 @@
#define I_SITRUS_BERRY_HEAL GEN_LATEST // In Gen4+, Sitrus Berry was changed from healing 30 HP to healing 25% of Max HP.
#define I_VITAMIN_EV_CAP GEN_LATEST // In Gen8, the Vitamins no longer have a cap of 100 EV per stat.
// TM config
#define I_REUSABLE_TMS FALSE // In Gen5-8, TMs are reusable. Setting this to TRUE will make all vanilla TMs reusable, though they can also be cherry-picked by setting their importance to 1.
// Repel/Lure config
// These two settings are both independent and complementary.
#define VAR_LAST_REPEL_LURE_USED 0 // If this var has been assigned, last Repel/Lure used will be saved and the player will get prompted with the vanilla repel YES/NO option, unless I_REPEL_LURE_MENU is set to TRUE.

View File

@ -1025,6 +1025,8 @@ extern const u8 gText_ThrowInPremierBall[];
extern const u8 gText_ShopBuy[];
extern const u8 gText_ShopSell[];
extern const u8 gText_ShopQuit[];
extern const u8 gText_SoldOut[];
extern const u8 gText_SoldOut2[];
extern const u8 gText_OhABite[];
extern const u8 gText_PokemonOnHook[];

View File

@ -7728,6 +7728,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM01_FOCUS_PUNCH,
.price = 3000,
.description = sTM01Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7739,6 +7740,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM02_DRAGON_CLAW,
.price = 3000,
.description = sTM02Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7750,6 +7752,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM03_WATER_PULSE,
.price = 3000,
.description = sTM03Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7761,6 +7764,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM04_CALM_MIND,
.price = 3000,
.description = sTM04Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7772,6 +7776,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM05_ROAR,
.price = 1000,
.description = sTM05Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7783,6 +7788,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM06_TOXIC,
.price = 3000,
.description = sTM06Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7794,6 +7800,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM07_HAIL,
.price = 3000,
.description = sTM07Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7805,6 +7812,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM08_BULK_UP,
.price = 3000,
.description = sTM08Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7816,6 +7824,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM09_BULLET_SEED,
.price = 3000,
.description = sTM09Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7827,6 +7836,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM10_HIDDEN_POWER,
.price = 3000,
.description = sTM10Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7838,6 +7848,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM11_SUNNY_DAY,
.price = 2000,
.description = sTM11Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7849,6 +7860,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM12_TAUNT,
.price = 3000,
.description = sTM12Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7860,6 +7872,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM13_ICE_BEAM,
.price = 3000,
.description = sTM13Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7871,6 +7884,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM14_BLIZZARD,
.price = 5500,
.description = sTM14Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7882,6 +7896,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM15_HYPER_BEAM,
.price = 7500,
.description = sTM15Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7893,6 +7908,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM16_LIGHT_SCREEN,
.price = 3000,
.description = sTM16Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7904,6 +7920,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM17_PROTECT,
.price = 3000,
.description = sTM17Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7915,6 +7932,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM18_RAIN_DANCE,
.price = 2000,
.description = sTM18Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7926,6 +7944,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM19_GIGA_DRAIN,
.price = 3000,
.description = sTM19Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7937,6 +7956,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM20_SAFEGUARD,
.price = 3000,
.description = sTM20Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7948,6 +7968,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM21_FRUSTRATION,
.price = 1000,
.description = sTM21Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7959,6 +7980,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM22_SOLAR_BEAM,
.price = 3000,
.description = sTM22Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7970,6 +7992,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM23_IRON_TAIL,
.price = 3000,
.description = sTM23Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7981,6 +8004,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM24_THUNDERBOLT,
.price = 3000,
.description = sTM24Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -7992,6 +8016,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM25_THUNDER,
.price = 5500,
.description = sTM25Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8003,6 +8028,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM26_EARTHQUAKE,
.price = 3000,
.description = sTM26Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8014,6 +8040,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM27_RETURN,
.price = 1000,
.description = sTM27Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8025,6 +8052,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM28_DIG,
.price = 2000,
.description = sTM28Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8036,6 +8064,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM29_PSYCHIC,
.price = 2000,
.description = sTM29Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8047,6 +8076,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM30_SHADOW_BALL,
.price = 3000,
.description = sTM30Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8058,6 +8088,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM31_BRICK_BREAK,
.price = 3000,
.description = sTM31Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8069,6 +8100,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM32_DOUBLE_TEAM,
.price = 2000,
.description = sTM32Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8080,6 +8112,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM33_REFLECT,
.price = 3000,
.description = sTM33Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8091,6 +8124,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM34_SHOCK_WAVE,
.price = 3000,
.description = sTM34Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8102,6 +8136,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM35_FLAMETHROWER,
.price = 3000,
.description = sTM35Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8113,6 +8148,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM36_SLUDGE_BOMB,
.price = 1000,
.description = sTM36Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8124,6 +8160,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM37_SANDSTORM,
.price = 2000,
.description = sTM37Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8135,6 +8172,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM38_FIRE_BLAST,
.price = 5500,
.description = sTM38Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8146,6 +8184,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM39_ROCK_TOMB,
.price = 3000,
.description = sTM39Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8157,6 +8196,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM40_AERIAL_ACE,
.price = 3000,
.description = sTM40Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8168,6 +8208,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM41_TORMENT,
.price = 3000,
.description = sTM41Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8179,6 +8220,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM42_FACADE,
.price = 3000,
.description = sTM42Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8190,6 +8232,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM43_SECRET_POWER,
.price = 3000,
.description = sTM43Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8201,6 +8244,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM44_REST,
.price = 3000,
.description = sTM44Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8212,6 +8256,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM45_ATTRACT,
.price = 3000,
.description = sTM45Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8223,6 +8268,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM46_THIEF,
.price = 3000,
.description = sTM46Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8234,6 +8280,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM47_STEEL_WING,
.price = 3000,
.description = sTM47Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8245,6 +8292,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM48_SKILL_SWAP,
.price = 3000,
.description = sTM48Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8256,6 +8304,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM49_SNATCH,
.price = 3000,
.description = sTM49Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8267,6 +8316,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM50_OVERHEAT,
.price = 3000,
.description = sTM50Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8278,6 +8328,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM51,
.price = 3000,
.description = sTM51Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8289,6 +8340,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM52,
.price = 3000,
.description = sTM52Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8300,6 +8352,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM53,
.price = 3000,
.description = sTM53Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8311,6 +8364,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM54,
.price = 3000,
.description = sTM54Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8322,6 +8376,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM55,
.price = 3000,
.description = sTM55Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8333,6 +8388,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM56,
.price = 3000,
.description = sTM56Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8344,6 +8400,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM57,
.price = 3000,
.description = sTM57Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8355,6 +8412,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM58,
.price = 3000,
.description = sTM58Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8366,6 +8424,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM59,
.price = 3000,
.description = sTM59Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8377,6 +8436,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM60,
.price = 3000,
.description = sTM60Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8388,6 +8448,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM61,
.price = 3000,
.description = sTM61Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8399,6 +8460,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM62,
.price = 3000,
.description = sTM62Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8410,6 +8472,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM63,
.price = 3000,
.description = sTM63Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8421,6 +8484,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM64,
.price = 3000,
.description = sTM64Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8432,6 +8496,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM65,
.price = 3000,
.description = sTM65Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8443,6 +8508,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM66,
.price = 3000,
.description = sTM66Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8454,6 +8520,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM67,
.price = 3000,
.description = sTM67Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8465,6 +8532,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM68,
.price = 3000,
.description = sTM68Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8476,6 +8544,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM69,
.price = 3000,
.description = sTM69Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8487,6 +8556,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM70,
.price = 3000,
.description = sTM70Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8498,6 +8568,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM71,
.price = 3000,
.description = sTM71Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8509,6 +8580,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM72,
.price = 3000,
.description = sTM72Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8520,6 +8592,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM73,
.price = 3000,
.description = sTM73Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8531,6 +8604,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM74,
.price = 3000,
.description = sTM74Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8542,6 +8616,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM75,
.price = 3000,
.description = sTM75Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8553,6 +8628,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM76,
.price = 3000,
.description = sTM76Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8564,6 +8640,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM77,
.price = 3000,
.description = sTM77Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8575,6 +8652,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM78,
.price = 3000,
.description = sTM78Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8586,6 +8664,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM79,
.price = 3000,
.description = sTM79Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8597,6 +8676,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM80,
.price = 3000,
.description = sTM80Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8608,6 +8688,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM81,
.price = 3000,
.description = sTM81Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8619,6 +8700,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM82,
.price = 3000,
.description = sTM82Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8630,6 +8712,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM83,
.price = 3000,
.description = sTM83Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8641,6 +8724,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM84,
.price = 3000,
.description = sTM84Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8652,6 +8736,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM85,
.price = 3000,
.description = sTM85Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8663,6 +8748,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM86,
.price = 3000,
.description = sTM86Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8674,6 +8760,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM87,
.price = 3000,
.description = sTM87Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8685,6 +8772,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM88,
.price = 3000,
.description = sTM88Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8696,6 +8784,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM89,
.price = 3000,
.description = sTM89Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8707,6 +8796,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM90,
.price = 3000,
.description = sTM90Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8718,6 +8808,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM91,
.price = 3000,
.description = sTM91Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8729,6 +8820,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM92,
.price = 3000,
.description = sTM92Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8740,6 +8832,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM93,
.price = 3000,
.description = sTM93Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8751,6 +8844,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM94,
.price = 3000,
.description = sTM94Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8762,6 +8856,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM95,
.price = 3000,
.description = sTM95Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8773,6 +8868,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM96,
.price = 3000,
.description = sTM96Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8784,6 +8880,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM97,
.price = 3000,
.description = sTM97Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8795,6 +8892,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM98,
.price = 3000,
.description = sTM98Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8806,6 +8904,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM99,
.price = 3000,
.description = sTM99Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
@ -8817,6 +8916,7 @@ const struct Item gItems[] =
.itemId = ITEM_TM100,
.price = 3000,
.description = sTM100Desc,
.importance = I_REUSABLE_TMS,
.pocket = POCKET_TM_HM,
.type = ITEM_USE_PARTY_MENU,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,

View File

@ -5090,7 +5090,7 @@ static void Task_LearnedMove(u8 taskId)
if (move[1] == 0)
{
AdjustFriendship(mon, FRIENDSHIP_EVENT_LEARN_TMHM);
if (item < ITEM_HM01_CUT)
if (!ItemId_GetImportance(item))
RemoveBagItem(item, 1);
}
GetMonNickname(mon, gStringVar1);

View File

@ -639,7 +639,10 @@ static void BuyMenuPrintPriceInList(u8 windowId, u32 itemId, u8 y)
5);
}
StringExpandPlaceholders(gStringVar4, gText_PokedollarVar1);
if (ItemId_GetImportance(itemId) && (CheckBagHasItem(itemId, 1) || CheckPCHasItem(itemId, 1)))
StringCopy(gStringVar4, gText_SoldOut2);
else
StringExpandPlaceholders(gStringVar4, gText_PokedollarVar1);
x = GetStringRightAlignXOffset(FONT_NARROW, gStringVar4, 120);
AddTextPrinterParameterized4(windowId, FONT_NARROW, x, y, 0, 0, sShopBuyMenuTextColors[COLORID_ITEM_LIST], TEXT_SKIP_DRAW, gStringVar4);
}
@ -989,7 +992,9 @@ static void Task_BuyMenu(u8 taskId)
else
sShopData->totalCost = gDecorations[itemId].price;
if (!IsEnoughMoney(&gSaveBlock1Ptr->money, sShopData->totalCost))
if (ItemId_GetImportance(itemId) && (CheckBagHasItem(itemId, 1) || CheckPCHasItem(itemId, 1)))
BuyMenuDisplayMessage(taskId, gText_SoldOut, BuyMenuReturnToItemList);
else if (!IsEnoughMoney(&gSaveBlock1Ptr->money, sShopData->totalCost))
{
BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, BuyMenuReturnToItemList);
}
@ -998,7 +1003,15 @@ static void Task_BuyMenu(u8 taskId)
if (sMartInfo.martType == MART_TYPE_NORMAL)
{
CopyItemName(itemId, gStringVar1);
if (ItemId_GetPocket(itemId) == POCKET_TM_HM)
if (ItemId_GetImportance(itemId))
{
ConvertIntToDecimalStringN(gStringVar2, sShopData->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_YouWantedVar1ThatllBeVar2);
tItemCount = 1;
sShopData->totalCost = (ItemId_GetPrice(tItemId) >> IsPokeNewsActive(POKENEWS_SLATEPORT)) * tItemCount;
BuyMenuDisplayMessage(taskId, gStringVar4, BuyMenuConfirmPurchase);
}
else if (ItemId_GetPocket(itemId) == POCKET_TM_HM)
{
StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(itemId)]);
BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany2, Task_BuyHowManyDialogueInit);
@ -1103,8 +1116,8 @@ static void BuyMenuTryMakePurchase(u8 taskId)
{
if (AddBagItem(tItemId, tItemCount) == TRUE)
{
BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, BuyMenuSubtractMoney);
RecordItemPurchase(taskId);
BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, BuyMenuSubtractMoney);
}
else
{
@ -1170,6 +1183,7 @@ static void BuyMenuReturnToItemList(u8 taskId)
s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrameToTransparent(WIN_MESSAGE, FALSE);
RedrawListMenu(tListTaskId);
BuyMenuPrintCursor(tListTaskId, COLORID_ITEM_LIST);
PutWindowTilemap(WIN_ITEM_LIST);
PutWindowTilemap(WIN_ITEM_DESCRIPTION);

View File

@ -341,6 +341,8 @@ const u8 gText_Var1DisdainfullyAteVar2[] = _("{STR_VAR_1} disdainfully ate the\n
const u8 gText_ShopBuy[] = _("BUY");
const u8 gText_ShopSell[] = _("SELL");
const u8 gText_ShopQuit[] = _("QUIT");
const u8 gText_SoldOut[] = _("I'm sorry, but that item is sold out.\p");
const u8 gText_SoldOut2[] = _("SOLD OUT");
const u8 gText_InBagVar1[] = _("IN BAG: {STR_VAR_1}");
const u8 gText_QuitShopping[] = _("Quit shopping.");
const u8 gText_Var1CertainlyHowMany[] = _("{STR_VAR_1}? Certainly.\nHow many would you like?");