From 7b0e60c705ca713366e641f4fd6bc2a9e222ef3c Mon Sep 17 00:00:00 2001 From: ghoulslash Date: Thu, 12 Aug 2021 12:44:53 -0600 Subject: [PATCH] some tweaks --- src/battle_script_commands.c | 1 + src/battle_util.c | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index eaa0e4f63..f8804aa8c 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5125,6 +5125,7 @@ static void Cmd_moveend(void) case MOVEEND_PICKPOCKET: if (IsBattlerAlive(gBattlerAttacker) && gBattleMons[gBattlerAttacker].item != ITEM_NONE // Attacker must be holding an item + && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerAttacker)] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]) // But not knocked off && !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove)) // Pickpocket doesn't activate for sheer force && IsMoveMakingContact(gCurrentMove, gBattlerAttacker) // Pickpocket requires contact && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) // Obviously attack needs to have worked diff --git a/src/battle_util.c b/src/battle_util.c index f57561dae..5f60fed86 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8419,16 +8419,14 @@ bool32 CanBattlerGetOrLoseItem(u8 battlerId, u16 itemId) return FALSE; else if (GET_BASE_SPECIES_ID(species) == SPECIES_GROUDON && itemId == ITEM_RED_ORB) // includes primal return FALSE; - // Mega stone cannot be lost if pokemon can mega evolve with it or is already mega evolved. - else if (holdEffect == HOLD_EFFECT_MEGA_STONE - && ((GetMegaEvolutionSpecies(species, itemId) != SPECIES_NONE) - || gBattleStruct->mega.evolvedPartyIds[GetBattlerSide(battlerId)] & gBitTable[gBattlerPartyIndexes[battlerId]])) + // Mega stone cannot be lost if pokemon's base species can mega evolve with it. + else if (holdEffect == HOLD_EFFECT_MEGA_STONE && (GetMegaEvolutionSpecies(GET_BASE_SPECIES_ID(species), itemId) != SPECIES_NONE)) return FALSE; else if (GET_BASE_SPECIES_ID(species) == SPECIES_GIRATINA && itemId == ITEM_GRISEOUS_ORB) return FALSE; - else if (GET_BASE_SPECIES_ID(species) == SPECIES_GENESECT && GetBattlerHoldEffect(battlerId, FALSE) == HOLD_EFFECT_DRIVE) + else if (GET_BASE_SPECIES_ID(species) == SPECIES_GENESECT && holdEffect == HOLD_EFFECT_DRIVE) return FALSE; - else if (GET_BASE_SPECIES_ID(species) == SPECIES_SILVALLY && GetBattlerHoldEffect(battlerId, FALSE) == HOLD_EFFECT_MEMORY) + else if (GET_BASE_SPECIES_ID(species) == SPECIES_SILVALLY && holdEffect == HOLD_EFFECT_MEMORY) return FALSE; else if (GET_BASE_SPECIES_ID(species) == SPECIES_ARCEUS && holdEffect == HOLD_EFFECT_PLATE) return FALSE;