mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-03-21 18:04:50 -05:00
Fixes Knock Off / Ogerpon behavior (#9478)
This commit is contained in:
parent
8e89d71b52
commit
2fb242d041
|
|
@ -8843,19 +8843,23 @@ bool32 DoBattlersShareType(enum BattlerId battler1, enum BattlerId battler2)
|
|||
|
||||
bool32 CanBattlerGetOrLoseItem(enum BattlerId fromBattler, enum BattlerId battler, enum Item itemId)
|
||||
{
|
||||
u16 species = gBattleMons[fromBattler].species;
|
||||
u32 fromSpecies = gBattleMons[fromBattler].species;
|
||||
u32 otherSpecies = gBattleMons[battler].species;
|
||||
|
||||
enum HoldEffect holdEffect = GetItemHoldEffect(itemId); // Raw hold effect
|
||||
|
||||
if (ItemIsMail(itemId))
|
||||
return FALSE;
|
||||
else if (itemId == ITEM_ENIGMA_BERRY_E_READER)
|
||||
return FALSE;
|
||||
else if (DoesSpeciesUseHoldItemToChangeForm(species, itemId))
|
||||
else if (DoesSpeciesUseHoldItemToChangeForm(fromSpecies, itemId))
|
||||
return FALSE;
|
||||
else if (holdEffect == HOLD_EFFECT_Z_CRYSTAL)
|
||||
return FALSE;
|
||||
else if (holdEffect == HOLD_EFFECT_BOOSTER_ENERGY
|
||||
&& (gSpeciesInfo[gBattleMons[fromBattler].species].isParadox || gSpeciesInfo[gBattleMons[battler].species].isParadox))
|
||||
&& (gSpeciesInfo[fromSpecies].isParadox || gSpeciesInfo[otherSpecies].isParadox))
|
||||
return FALSE;
|
||||
else if (holdEffect == HOLD_EFFECT_OGERPON_MASK && GET_BASE_SPECIES_ID(fromSpecies) == SPECIES_OGERPON)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -437,3 +437,73 @@ SINGLE_BATTLE_TEST("Knock Off does not activate if the item was previously consu
|
|||
EXPECT(opponent->item == ITEM_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Knock Off does knock off Ogerpon masks from Pokemon that aren't Ogerpon")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_HEARTHFLAME_MASK); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet knocked off the opposing Wobbuffet's Hearthflame Mask!");
|
||||
} THEN {
|
||||
EXPECT(opponent->item == ITEM_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Knock Off doesn't knock off Ogerpon masks from Ogerpon")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_OGERPON) { Item(ITEM_HEARTHFLAME_MASK); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
|
||||
} SCENE {
|
||||
NOT MESSAGE("Wobbuffet knocked off the opposing Ogerpon's Hearthflame Mask!");
|
||||
} THEN {
|
||||
EXPECT(opponent->item == ITEM_HEARTHFLAME_MASK);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Knock Off does knock off a Booster Energy from a non Paradox Pokemon")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet knocked off the opposing Wobbuffet's Booster Energy!");
|
||||
} THEN {
|
||||
EXPECT(opponent->item == ITEM_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Knock Off doesn't knock off a Paradox mon's Booster Energy")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_TORKOAL) { Ability(ABILITY_DROUGHT); }
|
||||
OPPONENT(SPECIES_GREAT_TUSK) { Item(ITEM_BOOSTER_ENERGY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
|
||||
} SCENE {
|
||||
NOT MESSAGE("Wobbuffet knocked off the opposing Great Tusk's Booster Energy!");
|
||||
} THEN {
|
||||
EXPECT(opponent->item == ITEM_BOOSTER_ENERGY);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Knock Off used by a Paradox mon doesn't knock off a non-Paradox mon's Booster Energy")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GREAT_TUSK);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
|
||||
} SCENE {
|
||||
NOT MESSAGE("Great Tust knocked off the opposing Wobbuffet's Booster Energy!");
|
||||
} THEN {
|
||||
EXPECT(opponent->item == ITEM_BOOSTER_ENERGY);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user