new item structure integrated and new items added; fixed bug with pocketId for pokeball pocket

This commit is contained in:
cawtds
2024-04-21 14:39:40 +02:00
parent 71b9b1ef25
commit 74c7b222c4
22 changed files with 14113 additions and 11494 deletions

View File

@@ -14,6 +14,10 @@
#define I_USE_EVO_HELD_ITEMS_FROM_BAG FALSE // If TRUE, items such as Razor Claw or Electirizer will be usable from the bag to evolve a Pokémon just like in LA.
#define I_TYPE_BOOST_POWER GEN_LATEST // In Gen4+, all regular type boosting held items had their power increased from 10% to 20%. eg. Charcoal
#define I_SELL_VALUE_FRACTION GEN_LATEST // In Gen9+, items sell for 1/4 of their value instead of 1/2.
#define I_PRICE GEN_LATEST // Some items have varied in value across generations.
#define I_BERRY_PRICE GEN_7 // Since Berries have become unplantable (Gen8+), their price has gone up.
#define I_POWER_ITEM_BOOST GEN_LATEST // In Gen7+, Power Items grant 8 EVs instead of 4 EVs.
#define I_PREMIER_BALL_BONUS GEN_LATEST // In LGPE onwards (Gen8+ here), you are given a Premier Ball for every 10 Poké Balls of any type and in the same purchase. Previously, it only applied to regular Poké Balls and only 1 could be obtained per purchase.
// 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.

View File

@@ -2,6 +2,7 @@
#define GUARD_CONSTANTS_GLOBAL_H
#include "config/battle.h"
#include "config/item.h"
#include "config/pokemon.h"
// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen.
// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen.

View File

@@ -30,6 +30,7 @@
#define HOLD_EFFECT_QUICK_CLAW 26
#define HOLD_EFFECT_FRIENDSHIP_UP 27
#define HOLD_EFFECT_CURE_ATTRACT 28
#define HOLD_EFFECT_MENTAL_HERB HOLD_EFFECT_CURE_ATTRACT
#define HOLD_EFFECT_CHOICE_BAND 29
#define HOLD_EFFECT_FLINCH 30
#define HOLD_EFFECT_BUG_POWER 31
@@ -63,11 +64,13 @@
#define HOLD_EFFECT_DRAGON_POWER 59
#define HOLD_EFFECT_NORMAL_POWER 60
#define HOLD_EFFECT_UP_GRADE 61
#define HOLD_EFFECT_UPGRADE HOLD_EFFECT_UP_GRADE
#define HOLD_EFFECT_SHELL_BELL 62
#define HOLD_EFFECT_LUCKY_PUNCH 63
#define HOLD_EFFECT_METAL_POWDER 64
#define HOLD_EFFECT_THICK_CLUB 65
#define HOLD_EFFECT_STICK 66
#define HOLD_EFFECT_LEEK HOLD_EFFECT_STICK
// Gen4 hold effects.
#define HOLD_EFFECT_CHOICE_SCARF 67
@@ -162,4 +165,15 @@
#define HOLD_EFFECT_BOOSTER_ENERGY 181 // Not implemented.
#define HOLD_EFFECT_MASK 183
// Gen2 hold effect
#define HOLD_EFFECT_BERSERK_GENE 184
#define HOLD_EFFECT_CHOICE(holdEffect)((holdEffect == HOLD_EFFECT_CHOICE_BAND || holdEffect == HOLD_EFFECT_CHOICE_SCARF || holdEffect == HOLD_EFFECT_CHOICE_SPECS))
// Terrain seed params
#define HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN 0
#define HOLD_EFFECT_PARAM_GRASSY_TERRAIN 1
#define HOLD_EFFECT_PARAM_MISTY_TERRAIN 2
#define HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN 3
#endif // GUARD_HOLD_EFFECTS_H

File diff suppressed because it is too large Load Diff

View File

@@ -93,6 +93,7 @@ u8 CountItemsInPC(void);
void ApplyNewEncryptionKeyToBagItems_(u32 newKey);
bool8 HasAtLeastOneBerry(void);
const u8 *ItemId_GetEffect(u32 itemId);
u32 GetItemStatus1Mask(u16 itemId);
u32 GetItemStatus2Mask(u16 itemId);

View File

@@ -6,34 +6,34 @@
void Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker(u8);
void ItemUse_SetQuestLogEvent(u8, struct Pokemon *, u16, u16);
void FieldUseFunc_Mail(u8 taskId);
void FieldUseFunc_Bike(u8 taskId);
void FieldUseFunc_Rod(u8 taskId);
void FieldUseFunc_CoinCase(u8 taskId);
void FieldUseFunc_PowderJar(u8 taskId);
void FieldUseFunc_PokeFlute(u8 taskId);
void FieldUseFunc_Medicine(u8 taskId);
void FieldUseFunc_Ether(u8 taskId);
void FieldUseFunc_PpUp(u8 taskId);
void FieldUseFunc_RareCandy(u8 taskId);
void FieldUseFunc_EvoItem(u8 taskId);
void FieldUseFunc_SacredAsh(u8 taskId);
void FieldUseFunc_TmCase(u8 taskId);
void FieldUseFunc_BerryPouch(u8 taskId);
void ItemUseOutOfBattle_Mail(u8 taskId);
void ItemUseOutOfBattle_Bike(u8 taskId);
void ItemUseOutOfBattle_Rod(u8 taskId);
void ItemUseOutOfBattle_CoinCase(u8 taskId);
void ItemUseOutOfBattle_PowderJar(u8 taskId);
void ItemUseOutOfBattle_PokeFlute(u8 taskId);
void ItemUseOutOfBattle_Medicine(u8 taskId);
void ItemUseOutOfBattle_PPRecovery(u8 taskId);
void ItemUseOutOfBattle_PPUp(u8 taskId);
void ItemUseOutOfBattle_RareCandy(u8 taskId);
void ItemUseOutOfBattle_EvolutionStone(u8 taskId);
void ItemUseOutOfBattle_SacredAsh(u8 taskId);
void ItemUseOutOfBattle_TmCase(u8 taskId);
void ItemUseOutOfBattle_BerryPouch(u8 taskId);
void BattleUseFunc_BerryPouch(u8 taskId);
void FieldUseFunc_TeachyTv(u8 taskId);
void FieldUseFunc_Repel(u8 taskId);
void FieldUseFunc_BlackWhiteFlute(u8 taskId);
void FieldUseFunc_TownMap(u8 taskId);
void FieldUseFunc_FameChecker(u8 taskId);
void FieldUseFunc_VsSeeker(u8 taskId);
void ItemUseOutOfBattle_TeachyTv(u8 taskId);
void ItemUseOutOfBattle_Repel(u8 taskId);
void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId);
void ItemUseOutOfBattle_TownMap(u8 taskId);
void ItemUseOutOfBattle_FameChecker(u8 taskId);
void ItemUseOutOfBattle_VsSeeker(u8 taskId);
void BattleUseFunc_PokeBallEtc(u8 taskId);
void BattleUseFunc_PokeFlute(u8 taskId);
void BattleUseFunc_StatBooster(u8 taskId);
void BattleUseFunc_Medicine(u8 taskId);
void BattleUseFunc_Ether(u8 taskId);
void BattleUseFunc_PokeDoll(u8 taskId);
void FieldUseFunc_OakStopsYou(u8 taskId);
void ItemUseOutOfBattle_CannotUse(u8 taskId);
void ItemUseOutOfBattle_EscapeRope(u8 taskId);
void ItemUseOutOfBattle_EnigmaBerry(u8 taskId);
void ItemUseInBattle_EnigmaBerry(u8 taskId);

View File

@@ -18,9 +18,9 @@
|| itemId == ITEM_FAB_MAIL \
|| itemId == ITEM_RETRO_MAIL))
#define FIRST_MAIL_IDX ITEM_ORANGE_MAIL
// #define FIRST_MAIL_IDX ITEM_ORANGE_MAIL
#define ITEM_TO_MAIL(itemId) (itemId - FIRST_MAIL_IDX)
// #define ITEM_TO_MAIL(itemId) (itemId - FIRST_MAIL_IDX)
void ReadMail(struct Mail * mail, void (*savedCallback)(void), bool8 messageExists);

View File

@@ -2,6 +2,7 @@
#include "battle.h"
#include "battle_anim.h"
#include "battle_controllers.h"
#include "item.h"
#include "random.h"
#include "util.h"
#include "constants/abilities.h"
@@ -580,12 +581,12 @@ static bool8 ShouldUseItem(void)
if (i && validMons > (gBattleResources->battleHistory->itemsNo - i) + 1)
continue;
item = gBattleResources->battleHistory->trainerItems[i];
if (item == ITEM_NONE || gItemEffectTable[item] == NULL)
if (item == ITEM_NONE)
continue;
if (item == ITEM_ENIGMA_BERRY)
itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect;
else
itemEffects = gItemEffectTable[item];
itemEffects = ItemId_GetEffect(item);
if (itemEffects == NULL)
continue;
*(gBattleStruct->AI_itemType + gActiveBattler / 2) = GetAI_ItemType(item, itemEffects);
switch (*(gBattleStruct->AI_itemType + gActiveBattler / 2))
{

View File

@@ -2407,6 +2407,7 @@ static void PlayerHandleChooseAction(void)
{
s32 i;
DebugPrintfLevel(MGBA_LOG_ERROR, "PlayerHandleChooseAction: start0");
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG);
BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU);

View File

@@ -4164,6 +4164,7 @@ static void HandleAction_Switch(void)
static void HandleAction_UseItem(void)
{
DebugPrintfLevel(MGBA_LOG_ERROR, "BattleUsage: start");
gBattlerAttacker = gBattlerTarget = gBattlerByTurnOrder[gCurrentTurnActionNumber];
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
@@ -4171,7 +4172,7 @@ static void HandleAction_UseItem(void)
gLastUsedItem = gBattleBufferB[gBattlerAttacker][1] | (gBattleBufferB[gBattlerAttacker][2] << 8);
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) {
// change to index minus 1
DebugPrintfLevel(MGBA_LOG_WARN, "BattleUsage: %d", ItemId_GetBattleUsage(gLastUsedItem));
DebugPrintfLevel(MGBA_LOG_ERROR, "BattleUsage: %d", ItemId_GetBattleUsage(gLastUsedItem));
gBattlescriptCurrInstr = gBattlescriptsForUsingItem[ItemId_GetBattleUsage(gLastUsedItem)];
}
// if (gLastUsedItem <= ITEM_PREMIER_BALL) // is ball

View File

@@ -9547,7 +9547,6 @@ u8 GetCatchingBattler(void)
static void Cmd_handleballthrow(void)
{
u8 ballMultiplier = 0;
if (gBattleControllerExecFlags)
return;
@@ -9988,7 +9987,7 @@ void BS_ItemRestoreHP(void)
NATIVE_ARGS();
u16 healAmount;
u32 battler = MAX_BATTLERS_COUNT;
u32 healParam = GetItemEffect(gLastUsedItem)[6];
u32 healParam = ItemId_GetEffect(gLastUsedItem)[6];
u32 side = GetBattlerSide(gBattlerAttacker);
struct Pokemon *party = GetSideParty(side);
u8 itemPartyIndex = gBattleStruct->itemPartyIndex[gBattlerAttacker];
@@ -10092,7 +10091,7 @@ void BS_ItemCureStatus(void)
void BS_ItemIncreaseStat(void)
{
NATIVE_ARGS();
u16 statId = GetItemEffect(gLastUsedItem)[1];
u16 statId = ItemId_GetEffect(gLastUsedItem)[1];
u16 stages = ItemId_GetHoldEffectParam(gLastUsedItem);
DebugPrintfLevel(MGBA_LOG_WARN, "BS_ItemIncreaseStat: statId=%d", statId);
DebugPrintfLevel(MGBA_LOG_WARN, "BS_ItemIncreaseStat: stages=%d", stages);
@@ -10103,7 +10102,7 @@ void BS_ItemIncreaseStat(void)
void BS_ItemRestorePP(void)
{
NATIVE_ARGS();
const u8 *effect = GetItemEffect(gLastUsedItem);
const u8 *effect = ItemId_GetEffect(gLastUsedItem);
u32 i, pp, maxPP, moveId, loopEnd;
u32 battler = MAX_BATTLERS_COUNT;
struct Pokemon *mon = (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) ? &gPlayerParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]] : &gEnemyParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]];

View File

@@ -1072,7 +1072,7 @@ static void Task_BerryPouch_Use(u8 taskId)
{
u16 type = ItemId_GetType(gSpecialVar_ItemId);
if (!ItemId_GetBattleUsage(gSpecialVar_ItemId)) {
FieldUseFunc_OakStopsYou(taskId);
ItemUseOutOfBattle_CannotUse(taskId);
return;
}
if (type == ITEM_TYPE_BAG_MENU) {

View File

@@ -56,17 +56,17 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_YELLOW_SHARD] = {gItemIcon_Shard, gItemIconPalette_YellowShard},
[ITEM_GREEN_SHARD] = {gItemIcon_Shard, gItemIconPalette_GreenShard},
// ????????
[ITEM_034] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_035] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_036] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_037] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_038] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_039] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_03A] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_03B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_03C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_03D] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_03E] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_034] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_035] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_036] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_037] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_038] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_039] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_03A] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_03B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_03C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_03D] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_03E] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// Vitamins
[ITEM_HP_UP] = {gItemIcon_HPUp, gItemIconPalette_HPUp},
[ITEM_PROTEIN] = {gItemIcon_Vitamin, gItemIconPalette_Protein},
@@ -78,7 +78,7 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_ZINC] = {gItemIcon_Vitamin, gItemIconPalette_Zinc},
[ITEM_PP_MAX] = {gItemIcon_PPMax, gItemIconPalette_PPMax},
// ????????
[ITEM_048] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_048] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// Battle items
[ITEM_GUARD_SPEC] = {gItemIcon_BattleStatItem, gItemIconPalette_GuardSpec},
[ITEM_DIRE_HIT] = {gItemIcon_BattleStatItem, gItemIconPalette_DireHit},
@@ -90,19 +90,19 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_POKE_DOLL] = {gItemIcon_PokeDoll, gItemIconPalette_PokeDoll},
[ITEM_FLUFFY_TAIL] = {gItemIcon_FluffyTail, gItemIconPalette_FluffyTail},
// ????????
[ITEM_052] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_052] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// Field items
[ITEM_SUPER_REPEL] = {gItemIcon_Repel, gItemIconPalette_SuperRepel},
[ITEM_MAX_REPEL] = {gItemIcon_Repel, gItemIconPalette_MaxRepel},
[ITEM_ESCAPE_ROPE] = {gItemIcon_EscapeRope, gItemIconPalette_EscapeRope},
[ITEM_REPEL] = {gItemIcon_Repel, gItemIconPalette_Repel},
// ????????
[ITEM_057] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_058] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_059] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_05A] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_05B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_05C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_057] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_058] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_059] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_05A] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_05B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_05C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// Evolution stones
[ITEM_SUN_STONE] = {gItemIcon_SunStone, gItemIconPalette_SunStone},
[ITEM_MOON_STONE] = {gItemIcon_MoonStone, gItemIconPalette_MoonStone},
@@ -111,14 +111,14 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_WATER_STONE] = {gItemIcon_WaterStone, gItemIconPalette_WaterStone},
[ITEM_LEAF_STONE] = {gItemIcon_LeafStone, gItemIconPalette_LeafStone},
// ????????
[ITEM_063] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_064] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_065] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_066] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_063] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_064] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_065] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_066] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// Valuables
[ITEM_TINY_MUSHROOM] = {gItemIcon_TinyMushroom, gItemIconPalette_Mushroom},
[ITEM_BIG_MUSHROOM] = {gItemIcon_BigMushroom, gItemIconPalette_Mushroom},
[ITEM_069] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_069] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_PEARL] = {gItemIcon_Pearl, gItemIconPalette_Pearl},
[ITEM_BIG_PEARL] = {gItemIcon_BigPearl, gItemIconPalette_Pearl},
[ITEM_STARDUST] = {gItemIcon_Stardust, gItemIconPalette_Star},
@@ -126,15 +126,15 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_NUGGET] = {gItemIcon_Nugget, gItemIconPalette_Nugget},
[ITEM_HEART_SCALE] = {gItemIcon_HeartScale, gItemIconPalette_HeartScale},
// ????????
[ITEM_070] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_071] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_072] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_073] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_074] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_075] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_076] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_077] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_078] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_070] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_071] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_072] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_073] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_074] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_075] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_076] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_077] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_078] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// Mail
[ITEM_ORANGE_MAIL] = {gItemIcon_OrangeMail, gItemIconPalette_OrangeMail},
[ITEM_HARBOR_MAIL] = {gItemIcon_HarborMail, gItemIconPalette_HarborMail},
@@ -192,9 +192,9 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_LANSAT_BERRY] = {gItemIcon_LansatBerry, gItemIconPalette_LansatBerry},
[ITEM_STARF_BERRY] = {gItemIcon_StarfBerry, gItemIconPalette_StarfBerry},
[ITEM_ENIGMA_BERRY] = {gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry},
[ITEM_UNUSED_BERRY_1] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_UNUSED_BERRY_2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_UNUSED_BERRY_3] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_UNUSED_BERRY_1] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_UNUSED_BERRY_2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_UNUSED_BERRY_3] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// Hold items
[ITEM_BRIGHT_POWDER] = {gItemIcon_BrightPowder, gItemIconPalette_BrightPowder},
[ITEM_WHITE_HERB] = {gItemIcon_InBattleHerb, gItemIconPalette_WhiteHerb},
@@ -244,34 +244,34 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_THICK_CLUB] = {gItemIcon_ThickClub, gItemIconPalette_ThickClub},
[ITEM_STICK] = {gItemIcon_Stick, gItemIconPalette_Stick},
// ????????
[ITEM_0E2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0E3] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0E4] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0E5] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0E6] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0E7] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0E8] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0E9] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0EA] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0EB] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0EC] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0ED] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0EE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0EF] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F0] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F1] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F3] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F4] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F5] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F6] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F7] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F8] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0F9] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0FA] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0FB] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0FC] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_0FD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0E2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0E3] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0E4] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0E5] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0E6] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0E7] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0E8] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0E9] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0EA] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0EB] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0EC] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0ED] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0EE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0EF] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F0] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F1] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F3] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F4] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F5] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F6] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F7] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F8] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0F9] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0FA] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0FB] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0FC] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_0FD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// Contest hold items
[ITEM_RED_SCARF] = {gItemIcon_Scarf, gItemIconPalette_RedScarf},
[ITEM_BLUE_SCARF] = {gItemIcon_Scarf, gItemIconPalette_BlueScarf},
@@ -287,7 +287,7 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_SUPER_ROD] = {gItemIcon_SuperRod, gItemIconPalette_SuperRod},
[ITEM_SS_TICKET] = {gItemIcon_SSTicket, gItemIconPalette_SSTicket},
[ITEM_CONTEST_PASS] = {gItemIcon_ContestPass, gItemIconPalette_ContestPass},
[ITEM_10B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_10B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_WAILMER_PAIL] = {gItemIcon_WailmerPail, gItemIconPalette_WailmerPail},
[ITEM_DEVON_GOODS] = {gItemIcon_DevonGoods, gItemIconPalette_DevonGoods},
[ITEM_SOOT_SACK] = {gItemIcon_SootSack, gItemIconPalette_SootSack},
@@ -301,10 +301,10 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_SCANNER] = {gItemIcon_Scanner, gItemIconPalette_Scanner},
[ITEM_GO_GOGGLES] = {gItemIcon_GoGoggles, gItemIconPalette_GoGoggles},
[ITEM_METEORITE] = {gItemIcon_Meteorite, gItemIconPalette_Meteorite},
[ITEM_ROOM_1_KEY] = {gItemIcon_Room1Key, gItemIconPalette_Key},
[ITEM_ROOM_2_KEY] = {gItemIcon_Room2Key, gItemIconPalette_Key},
[ITEM_ROOM_4_KEY] = {gItemIcon_Room4Key, gItemIconPalette_Key},
[ITEM_ROOM_6_KEY] = {gItemIcon_Room6Key, gItemIconPalette_Key},
[ITEM_RM_1_KEY] = {gItemIcon_Room1Key, gItemIconPalette_Key},
[ITEM_RM_2_KEY] = {gItemIcon_Room2Key, gItemIconPalette_Key},
[ITEM_RM_4_KEY] = {gItemIcon_Room4Key, gItemIconPalette_Key},
[ITEM_RM_6_KEY] = {gItemIcon_Room6Key, gItemIconPalette_Key},
[ITEM_STORAGE_KEY] = {gItemIcon_StorageKey, gItemIconPalette_OldKey},
[ITEM_ROOT_FOSSIL] = {gItemIcon_RootFossil, gItemIconPalette_HoennFossil},
[ITEM_CLAW_FOSSIL] = {gItemIcon_ClawFossil, gItemIconPalette_HoennFossil},
@@ -369,8 +369,8 @@ static const u32 *const sItemIconTable[ITEMS_COUNT + 1][2] =
[ITEM_HM07] = {gItemIcon_TMHM, gItemIconPalette_WaterTMHM},
[ITEM_HM08] = {gItemIcon_TMHM, gItemIconPalette_WaterTMHM},
// ????????
[ITEM_15B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[ITEM_15C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_15B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// [ITEM_15C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
// FireRed/LeafGreen key items
[ITEM_OAKS_PARCEL] = {gItemIcon_OaksParcel, gItemIconPalette_OaksParcel},
[ITEM_POKE_FLUTE] = {gItemIcon_PokeFlute, gItemIconPalette_PokeFlute},

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,33 +0,0 @@
{{ doNotModifyHeader }}
## for item in items
## if item.pocket == "POCKET_TM_CASE"
extern const u8 s{{ item.moveId }}Description[];
## endif
{% if item.itemId != "ITEM_NONE" %}
const u8 gItemDescription_{{ item.itemId }}[] = _("{{ item.description_english }}");
{% endif %}
## endfor
const u8 gItemDescription_ITEM_NONE[] = _("?????");
const struct Item gItems[] = {
{% for item in items %}{
.name = _("{{ item.english }}"),
.itemId = {{ item.itemId }},
.price = {{ item.price }},
.holdEffect = {{ item.holdEffect }},
.holdEffectParam = {{ item.holdEffectParam }},
## if item.pocket == "POCKET_TM_CASE"
.description = s{{ item.moveId }}Description,
## else
.description = gItemDescription_{{ item.itemId }},
## endif
.importance = {{ item.importance }},
.registrability = {{ item.registrability }},
.pocket = {{ item.pocket }},
.type = {{ item.type }},
.fieldUseFunc = {{ item.fieldUseFunc }},
.battleUsage = {{ item.battleUsage }},
.battleUseFunc = {{ item.battleUseFunc }},
.secondaryId = {{ item.secondaryId }}
}, {% endfor %}
};

View File

@@ -1,102 +1,102 @@
static const u8 sItemEffect_Potion[7] = {
const u8 gItemEffect_Potion[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 20, // Amount of HP to recover
};
static const u8 sItemEffect_Antidote[6] = {
const u8 gItemEffect_Antidote[6] = {
[3] = ITEM3_POISON,
};
static const u8 sItemEffect_BurnHeal[6] = {
const u8 gItemEffect_BurnHeal[6] = {
[3] = ITEM3_BURN,
};
static const u8 sItemEffect_IceHeal[6] = {
const u8 gItemEffect_IceHeal[6] = {
[3] = ITEM3_FREEZE,
};
static const u8 sItemEffect_Awakening[6] = {
const u8 gItemEffect_Awakening[6] = {
[3] = ITEM3_SLEEP,
};
static const u8 sItemEffect_ParalyzeHeal[6] = {
const u8 gItemEffect_ParalyzeHeal[6] = {
[3] = ITEM3_PARALYSIS,
};
static const u8 sItemEffect_FullRestore[7] = {
const u8 gItemEffect_FullRestore[7] = {
[3] = ITEM3_STATUS_ALL,
[4] = ITEM4_HEAL_HP,
[6] = ITEM6_HEAL_HP_FULL,
};
static const u8 sItemEffect_MaxPotion[7] = {
const u8 gItemEffect_MaxPotion[7] = {
[4] = ITEM4_HEAL_HP,
[6] = ITEM6_HEAL_HP_FULL,
};
static const u8 sItemEffect_HyperPotion[7] = {
const u8 gItemEffect_HyperPotion[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 200, // Amount of HP to recover
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 120 : 200, // Amount of HP to recover
};
static const u8 sItemEffect_SuperPotion[7] = {
const u8 gItemEffect_SuperPotion[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 50, // Amount of HP to recover
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 60 : 50, // Amount of HP to recover
};
static const u8 sItemEffect_FullHeal[6] = {
const u8 gItemEffect_FullHeal[6] = {
[3] = ITEM3_STATUS_ALL,
};
static const u8 sItemEffect_Revive[7] = {
const u8 gItemEffect_Revive[7] = {
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
[6] = ITEM6_HEAL_HP_HALF,
};
static const u8 sItemEffect_MaxRevive[7] = {
const u8 gItemEffect_MaxRevive[7] = {
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
[6] = ITEM6_HEAL_HP_FULL,
};
static const u8 sItemEffect_FreshWater[7] = {
const u8 gItemEffect_FreshWater[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 50, // Amount of HP to recover
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 30 : 50, // Amount of HP to recover
};
static const u8 sItemEffect_SodaPop[7] = {
const u8 gItemEffect_SodaPop[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 60, // Amount of HP to recover
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 50 : 60, // Amount of HP to recover
};
static const u8 sItemEffect_Lemonade[7] = {
const u8 gItemEffect_Lemonade[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 80, // Amount of HP to recover
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 70 : 80, // Amount of HP to recover
};
static const u8 sItemEffect_MoomooMilk[7] = {
const u8 gItemEffect_MoomooMilk[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 100, // Amount of HP to recover
};
static const u8 sItemEffect_EnergyPowder[10] = {
const u8 gItemEffect_EnergyPowder[10] = {
[4] = ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = 50, // Amount of HP to recover
[7] = -5, // Friendship change, low
[8] = -5, // Friendship change, mid
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 60 : 50, // Amount of HP to recover
[7] = -5, // Friendship change, low
[8] = -5, // Friendship change, mid
[9] = -10, // Friendship change, high
};
static const u8 sItemEffect_EnergyRoot[10] = {
const u8 gItemEffect_EnergyRoot[10] = {
[4] = ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = 200, // Amount of HP to recover
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 120 : 200, // Amount of HP to recover
[7] = -10, // Friendship change, low
[8] = -10, // Friendship change, mid
[9] = -15, // Friendship change, high
};
static const u8 sItemEffect_HealPowder[9] = {
const u8 gItemEffect_HealPowder[9] = {
[3] = ITEM3_STATUS_ALL,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = -5, // Friendship change, low
@@ -104,7 +104,7 @@ static const u8 sItemEffect_HealPowder[9] = {
[8] = -10, // Friendship change, high
};
static const u8 sItemEffect_RevivalHerb[10] = {
const u8 gItemEffect_RevivalHerb[10] = {
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_HEAL_HP_FULL,
@@ -113,48 +113,62 @@ static const u8 sItemEffect_RevivalHerb[10] = {
[9] = -20, // Friendship change, high
};
static const u8 sItemEffect_Ether[7] = {
[4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP,
[6] = 10, // Amount of PP to recover
const u8 gItemEffect_Remedy[10] = {
[4] = ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = 20, // Amount of HP to recover
[7] = -5, // Friendship change, low
[8] = -5, // Friendship change, mid
[9] = -10, // Friendship change, high
};
static const u8 sItemEffect_MaxEther[7] = {
const u8 gItemEffect_FineRemedy[10] = {
[4] = ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 60 : 50, // Amount of HP to recover
[7] = -10, // Friendship change, low
[8] = -10, // Friendship change, mid
[9] = -15, // Friendship change, high
};
const u8 gItemEffect_SuperbRemedy[10] = {
[4] = ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = I_HEALTH_RECOVERY >= GEN_7 ? 120 : 200, // Amount of HP to recover
[7] = -15, // Friendship change, low
[8] = -15, // Friendship change, mid
[9] = -20, // Friendship change, high
};
const u8 gItemEffect_Ether[7] = {
[4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP,
[6] = 10,
};
const u8 gItemEffect_MaxEther[7] = {
[4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP,
[6] = ITEM6_HEAL_PP_FULL,
};
static const u8 sItemEffect_Elixir[7] = {
const u8 gItemEffect_Elixir[7] = {
[4] = ITEM4_HEAL_PP,
[6] = 10, // Amount of PP to recover
};
static const u8 sItemEffect_MaxElixir[7] = {
const u8 gItemEffect_MaxElixir[7] = {
[4] = ITEM4_HEAL_PP,
[6] = ITEM6_HEAL_PP_FULL,
};
static const u8 sItemEffect_LavaCookie[6] = {
[3] = ITEM3_STATUS_ALL,
};
static const u8 sItemEffect_BlueFlute[6] = {
[3] = ITEM3_SLEEP,
};
static const u8 sItemEffect_YellowFlute[6] = {
const u8 gItemEffect_YellowFlute[6] = {
[3] = ITEM3_CONFUSION,
};
static const u8 sItemEffect_RedFlute[6] = {
const u8 gItemEffect_RedFlute[6] = {
[0] = ITEM0_INFATUATION,
};
static const u8 sItemEffect_BerryJuice[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 20, // Amount of HP to recover
};
static const u8 sItemEffect_SacredAsh[7] = {
const u8 gItemEffect_SacredAsh[7] = {
[0] = ITEM0_SACRED_ASH,
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
[6] = ITEM6_HEAL_HP_FULL,
@@ -165,39 +179,143 @@ static const u8 sItemEffect_SacredAsh[7] = {
[(i) + 1] = 3, /* Friendship change, mid */ \
[(i) + 2] = 2 /* Friendship change, high */
static const u8 sItemEffect_HPUp[10] = {
const u8 gItemEffect_HPUp[11] = {
[4] = ITEM4_EV_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_EV,
VITAMIN_FRIENDSHIP_CHANGE(7),
[10] = ITEM10_IS_VITAMIN,
};
static const u8 sItemEffect_Protein[10] = {
const u8 gItemEffect_Protein[11] = {
[4] = ITEM4_EV_ATK,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_EV,
VITAMIN_FRIENDSHIP_CHANGE(7),
[10] = ITEM10_IS_VITAMIN,
};
static const u8 sItemEffect_Iron[10] = {
const u8 gItemEffect_Iron[11] = {
[5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_EV,
VITAMIN_FRIENDSHIP_CHANGE(7),
[10] = ITEM10_IS_VITAMIN,
};
static const u8 sItemEffect_Carbos[10] = {
const u8 gItemEffect_Carbos[11] = {
[5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_EV,
VITAMIN_FRIENDSHIP_CHANGE(7),
[10] = ITEM10_IS_VITAMIN,
};
static const u8 sItemEffect_Calcium[10] = {
const u8 gItemEffect_Calcium[11] = {
[5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_EV,
VITAMIN_FRIENDSHIP_CHANGE(7),
[10] = ITEM10_IS_VITAMIN,
};
static const u8 sItemEffect_RareCandy[10] = {
const u8 gItemEffect_Zinc[11] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_EV,
VITAMIN_FRIENDSHIP_CHANGE(7),
[10] = ITEM10_IS_VITAMIN,
};
#define FEATHER_FRIENDSHIP_CHANGE(i) \
[(i) + 0] = 3, /* Friendship change, low */ \
[(i) + 1] = 2, /* Friendship change, mid */ \
[(i) + 2] = 1 /* Friendship change, high */
const u8 gItemEffect_HpFeather[11] = {
[4] = ITEM4_EV_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_ONE_EV,
FEATHER_FRIENDSHIP_CHANGE(7),
[10] = 0,
};
const u8 gItemEffect_AtkFeather[11] = {
[4] = ITEM4_EV_ATK,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_ONE_EV,
FEATHER_FRIENDSHIP_CHANGE(7),
[10] = 0,
};
const u8 gItemEffect_DefFeather[11] = {
[5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_ONE_EV,
FEATHER_FRIENDSHIP_CHANGE(7),
[10] = 0,
};
const u8 gItemEffect_SpeedFeather[11] = {
[5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_ONE_EV,
FEATHER_FRIENDSHIP_CHANGE(7),
[10] = 0,
};
const u8 gItemEffect_SpatkFeather[11] = {
[5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_ONE_EV,
FEATHER_FRIENDSHIP_CHANGE(7),
[10] = 0,
};
const u8 gItemEffect_SpdefFeather[11] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_ONE_EV,
FEATHER_FRIENDSHIP_CHANGE(7),
[10] = 0,
};
const u8 gItemEffect_HpMochi[11] = {
[4] = ITEM4_EV_HP,
[6] = ITEM6_ADD_EV,
[10] = 0,
};
const u8 gItemEffect_AtkMochi[11] = {
[4] = ITEM4_EV_ATK,
[6] = ITEM6_ADD_EV,
[10] = 0,
};
const u8 gItemEffect_DefMochi[11] = {
[5] = ITEM5_EV_DEF,
[6] = ITEM6_ADD_EV,
[10] = 0,
};
const u8 gItemEffect_SpeedMochi[11] = {
[5] = ITEM5_EV_SPEED,
[6] = ITEM6_ADD_EV,
[10] = 0,
};
const u8 gItemEffect_SpatkMochi[11] = {
[5] = ITEM5_EV_SPATK,
[6] = ITEM6_ADD_EV,
[10] = 0,
};
const u8 gItemEffect_SpdefMochi[11] = {
[5] = ITEM5_EV_SPDEF,
[6] = ITEM6_ADD_EV,
[10] = 0,
};
const u8 gItemEffect_ResetMochi[11] = {
[4] = ITEM4_EV_HP | ITEM4_EV_ATK,
[5] = ITEM5_EV_DEF | ITEM5_EV_SPEED | ITEM5_EV_SPATK | ITEM5_EV_SPDEF,
[6] = ITEM6_RESET_EV,
[10] = 0,
};
const u8 gItemEffect_RareCandy[10] = {
[3] = ITEM3_LEVEL_UP,
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
@@ -205,19 +323,13 @@ static const u8 sItemEffect_RareCandy[10] = {
VITAMIN_FRIENDSHIP_CHANGE(7),
};
static const u8 sItemEffect_PPUp[9] = {
const u8 gItemEffect_PPUp[9] = {
[4] = ITEM4_PP_UP,
[5] = ITEM5_FRIENDSHIP_ALL,
VITAMIN_FRIENDSHIP_CHANGE(6),
};
static const u8 sItemEffect_Zinc[10] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_ADD_EV,
VITAMIN_FRIENDSHIP_CHANGE(7),
};
static const u8 sItemEffect_PPMax[9] = {
const u8 gItemEffect_PPMax[9] = {
[5] = ITEM5_PP_MAX | ITEM5_FRIENDSHIP_ALL,
VITAMIN_FRIENDSHIP_CHANGE(6),
};
@@ -226,179 +338,124 @@ static const u8 sItemEffect_PPMax[9] = {
[6] = 1, /* Friendship change, low */ \
[7] = 1 /* Friendship change, mid */
static const u8 sItemEffect_GuardSpec[8] = {
const u8 gItemEffect_GuardSpec[8] = {
[3] = ITEM3_GUARD_SPEC,
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
STAT_BOOST_FRIENDSHIP_CHANGE
STAT_BOOST_FRIENDSHIP_CHANGE,
};
static const u8 sItemEffect_DireHit[8] = {
[0] = 2 << 4, // ITEM0_DIRE_HIT
// The first item effect value for the stat boost items
// only uses the least significant bit of its full mask.
// The full constant is commented next to it
const u8 gItemEffect_DireHit[8] = {
[0] = 1 << 5, // ITEM0_DIRE_HIT
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
STAT_BOOST_FRIENDSHIP_CHANGE
STAT_BOOST_FRIENDSHIP_CHANGE,
};
static const u8 sItemEffect_XAttack[8] = {
const u8 gItemEffect_XAttack[8] = {
[1] = ITEM1_X_ATTACK,
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
STAT_BOOST_FRIENDSHIP_CHANGE
STAT_BOOST_FRIENDSHIP_CHANGE,
};
static const u8 sItemEffect_XDefend[8] = {
[1] = 1 << 4, /// ITEM1_X_DEFENSE
const u8 gItemEffect_XDefense[8] = {
[1] = ITEM1_X_DEFENSE,
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
STAT_BOOST_FRIENDSHIP_CHANGE,
};
static const u8 sItemEffect_XSpeed[8] = {
[1] = 1, // ITEM1_X_SPEED
const u8 gItemEffect_XSpeed[8] = {
[1] = ITEM1_X_SPEED,
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
STAT_BOOST_FRIENDSHIP_CHANGE,
};
static const u8 sItemEffect_XAccuracy[8] = {
[2] = 1 << 4, // ITEM2_X_ACCURACY
const u8 gItemEffect_XAccuracy[8] = {
[1] = ITEM1_X_ACCURACY,
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
STAT_BOOST_FRIENDSHIP_CHANGE,
};
static const u8 sItemEffect_XSpecial[8] = {
[2] = 1, // ITEM2_X_SPATK
const u8 gItemEffect_XSpecialAttack[8] = {
[1] = ITEM1_X_SPATK,
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
STAT_BOOST_FRIENDSHIP_CHANGE,
};
static const u8 sItemEffect_SunStone[6] = {
const u8 gItemEffect_XSpecialDefense[8] = {
[1] = ITEM1_X_SPDEF,
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
STAT_BOOST_FRIENDSHIP_CHANGE,
};
const u8 gItemEffect_EvoItem[6] = {
[4] = ITEM4_EVO_STONE,
};
static const u8 sItemEffect_MoonStone[6] = {
[4] = ITEM4_EVO_STONE,
};
static const u8 sItemEffect_FireStone[6] = {
[4] = ITEM4_EVO_STONE,
};
static const u8 sItemEffect_ThunderStone[6] = {
[4] = ITEM4_EVO_STONE,
};
static const u8 sItemEffect_WaterStone[6] = {
[4] = ITEM4_EVO_STONE,
};
static const u8 sItemEffect_LeafStone[6] = {
[4] = ITEM4_EVO_STONE,
};
static const u8 sItemEffect_CheriBerry[6] = {
[3] = ITEM3_PARALYSIS,
};
static const u8 sItemEffect_ChestoBerry[6] = {
[3] = ITEM3_SLEEP,
};
static const u8 sItemEffect_PechaBerry[6] = {
[3] = ITEM3_POISON,
};
static const u8 sItemEffect_RawstBerry[6] = {
[3] = ITEM3_BURN,
};
static const u8 sItemEffect_AspearBerry[6] = {
[3] = ITEM3_FREEZE,
};
static const u8 sItemEffect_LeppaBerry[7] = {
const u8 gItemEffect_LeppaBerry[7] = {
[4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP,
[6] = 10, // Amount of PP to recover
};
static const u8 sItemEffect_OranBerry[7] = {
const u8 gItemEffect_OranBerry[7] = {
[4] = ITEM4_HEAL_HP,
[6] = 10, // Amount of HP to recover
};
static const u8 sItemEffect_PersimBerry[6] = {
const u8 gItemEffect_PersimBerry[6] = {
[3] = ITEM3_CONFUSION,
};
static const u8 sItemEffect_LumBerry[6] = {
[3] = ITEM3_STATUS_ALL,
};
static const u8 sItemEffect_SitrusBerry[7] = {
const u8 gItemEffect_SitrusBerry[7] = {
[4] = ITEM4_HEAL_HP,
#if I_SITRUS_BERRY_HEAL >= GEN_4
[6] = ITEM6_HEAL_HP_QUARTER,
#else
[6] = 30, // Amount of HP to recover
#endif
};
const u8 *const gItemEffectTable[ITEMS_COUNT] =
{
[ITEM_POTION] = sItemEffect_Potion,
[ITEM_ANTIDOTE] = sItemEffect_Antidote,
[ITEM_BURN_HEAL] = sItemEffect_BurnHeal,
[ITEM_ICE_HEAL] = sItemEffect_IceHeal,
[ITEM_AWAKENING] = sItemEffect_Awakening,
[ITEM_PARALYZE_HEAL] = sItemEffect_ParalyzeHeal,
[ITEM_FULL_RESTORE] = sItemEffect_FullRestore,
[ITEM_MAX_POTION] = sItemEffect_MaxPotion,
[ITEM_HYPER_POTION] = sItemEffect_HyperPotion,
[ITEM_SUPER_POTION] = sItemEffect_SuperPotion,
[ITEM_FULL_HEAL] = sItemEffect_FullHeal,
[ITEM_REVIVE] = sItemEffect_Revive,
[ITEM_MAX_REVIVE] = sItemEffect_MaxRevive,
[ITEM_FRESH_WATER] = sItemEffect_FreshWater,
[ITEM_SODA_POP] = sItemEffect_SodaPop,
[ITEM_LEMONADE] = sItemEffect_Lemonade,
[ITEM_MOOMOO_MILK] = sItemEffect_MoomooMilk,
[ITEM_ENERGY_POWDER] = sItemEffect_EnergyPowder,
[ITEM_ENERGY_ROOT] = sItemEffect_EnergyRoot,
[ITEM_HEAL_POWDER] = sItemEffect_HealPowder,
[ITEM_REVIVAL_HERB] = sItemEffect_RevivalHerb,
[ITEM_ETHER] = sItemEffect_Ether,
[ITEM_MAX_ETHER] = sItemEffect_MaxEther,
[ITEM_ELIXIR] = sItemEffect_Elixir,
[ITEM_MAX_ELIXIR] = sItemEffect_MaxElixir,
[ITEM_LAVA_COOKIE] = sItemEffect_LavaCookie,
[ITEM_BLUE_FLUTE] = sItemEffect_BlueFlute,
[ITEM_YELLOW_FLUTE] = sItemEffect_YellowFlute,
[ITEM_RED_FLUTE] = sItemEffect_RedFlute,
[ITEM_BERRY_JUICE] = sItemEffect_BerryJuice,
[ITEM_SACRED_ASH] = sItemEffect_SacredAsh,
[ITEM_HP_UP] = sItemEffect_HPUp,
[ITEM_PROTEIN] = sItemEffect_Protein,
[ITEM_IRON] = sItemEffect_Iron,
[ITEM_CARBOS] = sItemEffect_Carbos,
[ITEM_CALCIUM] = sItemEffect_Calcium,
[ITEM_RARE_CANDY] = sItemEffect_RareCandy,
[ITEM_PP_UP] = sItemEffect_PPUp,
[ITEM_ZINC] = sItemEffect_Zinc,
[ITEM_PP_MAX] = sItemEffect_PPMax,
[ITEM_GUARD_SPEC] = sItemEffect_GuardSpec,
[ITEM_DIRE_HIT] = sItemEffect_DireHit,
[ITEM_X_ATTACK] = sItemEffect_XAttack,
[ITEM_X_DEFEND] = sItemEffect_XDefend,
[ITEM_X_SPEED] = sItemEffect_XSpeed,
[ITEM_X_ACCURACY] = sItemEffect_XAccuracy,
[ITEM_X_SPECIAL] = sItemEffect_XSpecial,
[ITEM_SUN_STONE] = sItemEffect_SunStone,
[ITEM_MOON_STONE] = sItemEffect_MoonStone,
[ITEM_FIRE_STONE] = sItemEffect_FireStone,
[ITEM_THUNDER_STONE] = sItemEffect_ThunderStone,
[ITEM_WATER_STONE] = sItemEffect_WaterStone,
[ITEM_LEAF_STONE] = sItemEffect_LeafStone,
[ITEM_CHERI_BERRY] = sItemEffect_CheriBerry,
[ITEM_CHESTO_BERRY] = sItemEffect_ChestoBerry,
[ITEM_PECHA_BERRY] = sItemEffect_PechaBerry,
[ITEM_RAWST_BERRY] = sItemEffect_RawstBerry,
[ITEM_ASPEAR_BERRY] = sItemEffect_AspearBerry,
[ITEM_LEPPA_BERRY] = sItemEffect_LeppaBerry,
[ITEM_ORAN_BERRY] = sItemEffect_OranBerry,
[ITEM_PERSIM_BERRY] = sItemEffect_PersimBerry,
[ITEM_LUM_BERRY] = sItemEffect_LumBerry,
[ITEM_SITRUS_BERRY] = sItemEffect_SitrusBerry,
[LAST_BERRY_INDEX] = NULL,
#define EV_BERRY_FRIENDSHIP_CHANGE \
[7] = 10, /* Friendship change, low */ \
[8] = 5, /* Friendship change, mid */ \
[9] = 2 /* Friendship change, high */
const u8 gItemEffect_PomegBerry[10] = {
[4] = ITEM4_EV_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_SUBTRACT_EV,
EV_BERRY_FRIENDSHIP_CHANGE,
};
const u8 gItemEffect_KelpsyBerry[10] = {
[4] = ITEM4_EV_ATK,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_SUBTRACT_EV,
EV_BERRY_FRIENDSHIP_CHANGE,
};
const u8 gItemEffect_QualotBerry[10] = {
[5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_SUBTRACT_EV,
EV_BERRY_FRIENDSHIP_CHANGE,
};
const u8 gItemEffect_HondewBerry[10] = {
[5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_SUBTRACT_EV,
EV_BERRY_FRIENDSHIP_CHANGE,
};
const u8 gItemEffect_GrepaBerry[10] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_SUBTRACT_EV,
EV_BERRY_FRIENDSHIP_CHANGE,
};
const u8 gItemEffect_TamatoBerry[10] = {
[5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
[6] = ITEM6_SUBTRACT_EV,
EV_BERRY_FRIENDSHIP_CHANGE,
};

View File

@@ -20,6 +20,7 @@ void SortAndCompactBagPocket(struct BagPocket * pocket);
// Item descriptions and data
#include "constants/moves.h"
#include "pokemon_summary_screen.h"
#include "data/pokemon/item_effects.h"
#include "data/items.h"
u16 GetBagItemQuantity(u16 * ptr)
@@ -145,7 +146,7 @@ bool8 CheckBagHasItem(u16 itemId, u16 count)
bool8 HasAtLeastOneBerry(void)
{
u8 itemId;
u16 itemId;
bool8 exists;
exists = CheckBagHasItem(ITEM_BERRY_POUCH, 1);
@@ -666,10 +667,31 @@ u8 ItemId_GetSecondaryId(u16 itemId)
return gItems[SanitizeItemId(itemId)].secondaryId;
}
const u8 *ItemId_GetEffect(u32 itemId)
{
if (itemId == ITEM_ENIGMA_BERRY)
{
return gSaveBlock1Ptr->enigmaBerry.itemEffect;
}
else
{
return gItems[SanitizeItemId(itemId)].effect;
}
// if (itemId == ITEM_ENIGMA_BERRY_E_READER)
// #if FREE_ENIGMA_BERRY == FALSE
// return gSaveBlock1Ptr->enigmaBerry.itemEffect;
// #else
// return 0;
// #endif //FREE_ENIGMA_BERRY
// else
// return gItems[SanitizeItemId(itemId)].effect;
}
u32 GetItemStatus1Mask(u16 itemId)
{
const u8 *effect = GetItemEffect(itemId);
const u8 *effect = ItemId_GetEffect(itemId);
switch (effect[3])
{
case ITEM3_PARALYSIS:
@@ -690,7 +712,7 @@ u32 GetItemStatus1Mask(u16 itemId)
u32 GetItemStatus2Mask(u16 itemId)
{
const u8 *effect = GetItemEffect(itemId);
const u8 *effect = ItemId_GetEffect(itemId);
if (effect[3] & ITEM3_STATUS_ALL)
return STATUS2_INFATUATION | STATUS2_CONFUSION;
else if (effect[0] & ITEM0_INFATUATION)

View File

@@ -1705,7 +1705,6 @@ static void Task_ItemMenuAction_BattleUse(u8 taskId)
return;
}
DebugPrintfLevel(MGBA_LOG_WARN, "Task_ItemMenuAction_BattleUse");
if (type == ITEM_TYPE_BAG_MENU) {
ItemUseInBattle_BagMenu(taskId);

View File

@@ -207,7 +207,7 @@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId)
{
if (ItemId_GetPocket(itemId) == POCKET_TM_CASE)
return 1;
else if (ItemId_GetFieldFunc(itemId) == FieldUseFunc_EvoItem)
else if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone)
return 2;
else
return 0;
@@ -238,7 +238,7 @@ static void Task_ItemUseWaitForFade(u8 taskId)
}
}
void FieldUseFunc_Mail(u8 taskId)
void ItemUseOutOfBattle_Mail(u8 taskId)
{
ItemMenu_SetExitCallback(CB2_CheckMail);
ItemMenu_StartFadeToExitCallback(taskId);
@@ -252,7 +252,7 @@ static void CB2_CheckMail(void)
ReadMail(&mail, CB2_BagMenuFromStartMenu, FALSE);
}
void FieldUseFunc_Bike(u8 taskId)
void ItemUseOutOfBattle_Bike(u8 taskId)
{
s16 x, y;
u8 behavior;
@@ -285,7 +285,7 @@ static void ItemUseOnFieldCB_Bicycle(u8 taskId)
DestroyTask(taskId);
}
void FieldUseFunc_Rod(u8 taskId)
void ItemUseOutOfBattle_Rod(u8 taskId)
{
if (CanFish() == TRUE)
{
@@ -336,7 +336,7 @@ void ItemUseOutOfBattle_Itemfinder(u8 taskId)
SetUpItemUseOnFieldCallback(taskId);
}
void FieldUseFunc_CoinCase(u8 taskId)
void ItemUseOutOfBattle_CoinCase(u8 taskId)
{
ConvertIntToDecimalStringN(gStringVar1, GetCoins(), STR_CONV_MODE_LEFT_ALIGN, 4);
StringExpandPlaceholders(gStringVar4, gText_CoinCase);
@@ -347,7 +347,7 @@ void FieldUseFunc_CoinCase(u8 taskId)
DisplayItemMessageOnField(taskId, FONT_NORMAL, gStringVar4, Task_ItemUse_CloseMessageBoxAndReturnToField);
}
void FieldUseFunc_PowderJar(u8 taskId)
void ItemUseOutOfBattle_PowderJar(u8 taskId)
{
ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 5);
StringExpandPlaceholders(gStringVar4, gText_PowderQty);
@@ -358,7 +358,7 @@ void FieldUseFunc_PowderJar(u8 taskId)
DisplayItemMessageOnField(taskId, FONT_NORMAL, gStringVar4, Task_ItemUse_CloseMessageBoxAndReturnToField);
}
void FieldUseFunc_PokeFlute(u8 taskId)
void ItemUseOutOfBattle_PokeFlute(u8 taskId)
{
bool8 wokeSomeoneUp = FALSE;
u8 i;
@@ -408,43 +408,43 @@ static void DoSetUpItemUseCallback(u8 taskId)
SetUpItemUseCallback(taskId);
}
void FieldUseFunc_Medicine(u8 taskId)
void ItemUseOutOfBattle_Medicine(u8 taskId)
{
gItemUseCB = ItemUseCB_Medicine;
DoSetUpItemUseCallback(taskId);
}
void FieldUseFunc_Ether(u8 taskId)
void ItemUseOutOfBattle_PPRecovery(u8 taskId)
{
gItemUseCB = ItemUseCB_TryRestorePP;
DoSetUpItemUseCallback(taskId);
}
void FieldUseFunc_PpUp(u8 taskId)
void ItemUseOutOfBattle_PPUp(u8 taskId)
{
gItemUseCB = ItemUseCB_PPUp;
DoSetUpItemUseCallback(taskId);
}
void FieldUseFunc_RareCandy(u8 taskId)
void ItemUseOutOfBattle_RareCandy(u8 taskId)
{
gItemUseCB = ItemUseCB_RareCandy;
DoSetUpItemUseCallback(taskId);
}
void FieldUseFunc_EvoItem(u8 taskId)
void ItemUseOutOfBattle_EvolutionStone(u8 taskId)
{
gItemUseCB = ItemUseCB_EvolutionStone;
DoSetUpItemUseCallback(taskId);
}
void FieldUseFunc_SacredAsh(u8 taskId)
void ItemUseOutOfBattle_SacredAsh(u8 taskId)
{
gItemUseCB = ItemUseCB_SacredAsh;
SetUpItemUseCallback(taskId);
}
void FieldUseFunc_TmCase(u8 taskId)
void ItemUseOutOfBattle_TmCase(u8 taskId)
{
if (gTasks[taskId].data[3] == 0)
{
@@ -475,7 +475,7 @@ static void Task_InitTMCaseFromField(u8 taskId)
}
}
void FieldUseFunc_BerryPouch(u8 taskId)
void ItemUseOutOfBattle_BerryPouch(u8 taskId)
{
if (gTasks[taskId].data[3] == 0)
{
@@ -517,7 +517,7 @@ static void InitBerryPouchFromBattle(void)
InitBerryPouch(BERRYPOUCH_FROMBATTLE, CB2_BagMenuFromBattle, 0);
}
void FieldUseFunc_TeachyTv(u8 taskId)
void ItemUseOutOfBattle_TeachyTv(u8 taskId)
{
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].data[3] == 0)
@@ -549,7 +549,7 @@ static void Task_InitTeachyTvFromField(u8 taskId)
}
}
void FieldUseFunc_Repel(u8 taskId)
void ItemUseOutOfBattle_Repel(u8 taskId)
{
if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
{
@@ -574,14 +574,15 @@ static void Task_UseRepel(u8 taskId)
static void RemoveUsedItem(void)
{
u8 pocketId = ItemId_GetPocket(gSpecialVar_ItemId) - 1;
RemoveBagItem(gSpecialVar_ItemId, 1);
Pocket_CalculateNItemsAndMaxShowed(ItemId_GetPocket(gSpecialVar_ItemId));
PocketCalculateInitialCursorPosAndItemsAbove(ItemId_GetPocket(gSpecialVar_ItemId));
Pocket_CalculateNItemsAndMaxShowed(pocketId);
PocketCalculateInitialCursorPosAndItemsAbove(pocketId);
CopyItemName(gSpecialVar_ItemId, gStringVar2);
StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2);
}
void FieldUseFunc_BlackWhiteFlute(u8 taskId)
void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
{
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE)
@@ -648,7 +649,7 @@ void Task_UseDigEscapeRopeOnField(u8 taskId)
DestroyTask(taskId);
}
void FieldUseFunc_TownMap(u8 taskId)
void ItemUseOutOfBattle_TownMap(u8 taskId)
{
if (gTasks[taskId].data[3] == 0)
{
@@ -679,7 +680,7 @@ static void Task_UseTownMapFromField(u8 taskId)
}
}
void FieldUseFunc_FameChecker(u8 taskId)
void ItemUseOutOfBattle_FameChecker(u8 taskId)
{
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].data[3] == 0)
@@ -711,7 +712,7 @@ static void Task_UseFameCheckerFromField(u8 taskId)
}
}
void FieldUseFunc_VsSeeker(u8 taskId)
void ItemUseOutOfBattle_VsSeeker(u8 taskId)
{
if ((gMapHeader.mapType != MAP_TYPE_ROUTE
&& gMapHeader.mapType != MAP_TYPE_TOWN
@@ -910,7 +911,7 @@ static bool32 CannotUseBagBattleItem(u16 itemId)
}
// X-Items
if (battleUsage == EFFECT_ITEM_INCREASE_STAT
&& gBattleMons[gBattlerInMenuId].statStages[gItemEffectTable[itemId][1]] == MAX_STAT_STAGE)
&& gBattleMons[gBattlerInMenuId].statStages[ItemId_GetEffect(itemId)[1]] == MAX_STAT_STAGE)
{
cannotUse++;
}
@@ -994,28 +995,28 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
case ITEM_EFFECT_SPEED_EV:
case ITEM_EFFECT_DEF_EV:
gTasks[taskId].data[4] = 1;
FieldUseFunc_Medicine(taskId);
ItemUseOutOfBattle_Medicine(taskId);
break;
case ITEM_EFFECT_SACRED_ASH:
gTasks[taskId].data[4] = 1;
FieldUseFunc_SacredAsh(taskId);
ItemUseOutOfBattle_SacredAsh(taskId);
break;
case ITEM_EFFECT_RAISE_LEVEL:
gTasks[taskId].data[4] = 1;
FieldUseFunc_RareCandy(taskId);
ItemUseOutOfBattle_RareCandy(taskId);
break;
case ITEM_EFFECT_PP_UP:
case ITEM_EFFECT_PP_MAX:
gTasks[taskId].data[4] = 1;
FieldUseFunc_PpUp(taskId);
ItemUseOutOfBattle_PPUp(taskId);
break;
case ITEM_EFFECT_HEAL_PP:
gTasks[taskId].data[4] = 1;
FieldUseFunc_Ether(taskId);
ItemUseOutOfBattle_PPRecovery(taskId);
break;
default:
gTasks[taskId].data[4] = 4;
FieldUseFunc_OakStopsYou(taskId);
ItemUseOutOfBattle_CannotUse(taskId);
}
}
@@ -1041,11 +1042,11 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId)
BattleUseFunc_Ether(taskId);
break;
default:
FieldUseFunc_OakStopsYou(taskId);
ItemUseOutOfBattle_CannotUse(taskId);
}
}
void FieldUseFunc_OakStopsYou(u8 taskId)
void ItemUseOutOfBattle_CannotUse(u8 taskId)
{
if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
{
@@ -1081,8 +1082,11 @@ void ItemUseInBattle_BagMenu(u8 taskId)
{
DebugPrintfLevel(MGBA_LOG_WARN, "ItemUseInBattle_BagMenu success");
PlaySE(SE_SELECT);
if (!(B_TRY_CATCH_TRAINER_BALL >= GEN_4 && (ItemId_GetBattleUsage(gSpecialVar_ItemId) == EFFECT_ITEM_THROW_BALL) && (gBattleTypeFlags & BATTLE_TYPE_TRAINER)))
RemoveUsedItem();
if (!(B_TRY_CATCH_TRAINER_BALL >= GEN_4 && (ItemId_GetBattleUsage(gSpecialVar_ItemId) == EFFECT_ITEM_THROW_BALL) && (gBattleTypeFlags & BATTLE_TYPE_TRAINER))) {
DebugPrintfLevel(MGBA_LOG_WARN, "ItemUseInBattle_BagMenu itemRemoved");
// RemoveUsedItem();
RemoveBagItem(gSpecialVar_ItemId, 1);
}
ScheduleBgCopyTilemapToVram(2);
gTasks[taskId].func = ItemMenu_StartFadeToExitCallback;
}

View File

@@ -1875,9 +1875,9 @@ static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor)
if (GetMonData(mon, MON_DATA_IS_EGG))
return CANNOT_LEARN_MOVE_IS_EGG;
if (item >= ITEM_TM01_FOCUS_PUNCH)
if (item >= ITEM_TM01)
{
if (!CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH))
if (!CanMonLearnTMHM(mon, item - ITEM_TM01))
return CANNOT_LEARN_MOVE;
else
move = ItemIdToBattleMoveId(item);
@@ -4334,7 +4334,7 @@ static bool8 IsHPRecoveryItem(u16 item)
if (item == ITEM_ENIGMA_BERRY)
effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
else
effect = gItemEffectTable[item];
effect = ItemId_GetEffect(item);
if (effect[4] & ITEM4_HEAL_HP)
return TRUE;
else
@@ -4461,7 +4461,7 @@ static bool32 CannotUsePartyBattleItem(u16 itemId, struct Pokemon* mon)
// Items that restore PP (Elixir, Ether, Leppa Berry)
if (battleUsage == EFFECT_ITEM_RESTORE_PP)
{
if (GetItemEffect(itemId)[6] == ITEM4_HEAL_PP)
if (ItemId_GetEffect(itemId)[6] == ITEM4_HEAL_PP)
{
for (i = 0; i < MAX_MON_MOVES; i++)
{
@@ -4662,7 +4662,7 @@ void ItemUseCB_TryRestorePP(u8 taskId, TaskFunc func)
if (item == ITEM_ENIGMA_BERRY)
effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
else
effect = gItemEffectTable[item];
effect = ItemId_GetEffect(item);
if (!(effect[4] & ITEM4_HEAL_PP_ONE))
{
@@ -4781,7 +4781,7 @@ void ItemUseCB_PPUp(u8 taskId, TaskFunc func)
u16 ItemIdToBattleMoveId(u16 item)
{
u16 tmNumber = item - ITEM_TM01_FOCUS_PUNCH;
u16 tmNumber = item - ITEM_TM01;
return gTMHMMoves[tmNumber];
}
@@ -5393,13 +5393,13 @@ const u8* GetItemEffect(u16 item)
if (item == ITEM_ENIGMA_BERRY)
return gSaveBlock1Ptr->enigmaBerry.itemEffect;
else
return gItemEffectTable[item];
return ItemId_GetEffect(item);
}
u8 GetItemEffectType(u16 item)
{
u32 statusCure;
const u8 *itemEffect = GetItemEffect(item);
const u8 *itemEffect = ItemId_GetEffect(item);
// Read the item's effect properties.
if (itemEffect == NULL)

View File

@@ -363,7 +363,7 @@ static const struct SpindaSpot sSpindaSpotGraphics[] =
{.x = 34, .y = 26, .image = INCBIN_U16("graphics/spinda_spots/spot_3.bin")}
};
#include "data/pokemon/item_effects.h"
// #include "data/pokemon/item_effects.h"
static const s8 sNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] =
{ // Attack Defense Speed Sp.Atk Sp.Def
@@ -3104,22 +3104,29 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
battlerId = MAX_BATTLERS_COUNT;
}
// // Skip using the item if it won't do anything
// if (gItemEffectTable[item] == NULL && item != ITEM_ENIGMA_BERRY)
// return TRUE;
// // Get item effect
// if (item == ITEM_ENIGMA_BERRY)
// {
// if (gMain.inBattle)
// itemEffect = gEnigmaBerries[gActiveBattler].itemEffect;
// else
// itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
// }
// else
// {
// itemEffect = gItemEffectTable[item];
// }
// Skip using the item if it won't do anything
if (gItemEffectTable[item] == NULL && item != ITEM_ENIGMA_BERRY)
if (ItemId_GetEffect(item) == NULL && item != ITEM_ENIGMA_BERRY)
return TRUE;
// Get item effect
if (item == ITEM_ENIGMA_BERRY)
{
if (gMain.inBattle)
itemEffect = gEnigmaBerries[gActiveBattler].itemEffect;
else
itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
}
else
{
itemEffect = gItemEffectTable[item];
}
itemEffect = ItemId_GetEffect(item);
for (i = 0; i < ITEM_EFFECT_ARG_START; i++)
{
switch (i)
@@ -3555,7 +3562,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
offset = ITEM_EFFECT_ARG_START;
temp = gItemEffectTable[itemId];
temp = ItemId_GetEffect(itemId);
if (!temp && itemId != ITEM_ENIGMA_BERRY)
return 0;