Fix Magician Life orb recoil when stealing (#3753)
* Fix Magician Life orb recoil * get rid of unneeded assume
This commit is contained in:
parent
5d2efbe1a2
commit
76a7513dcd
4 changed files with 33 additions and 0 deletions
|
@ -197,6 +197,7 @@ struct SpecialStatus
|
|||
// End of byte
|
||||
u8 emergencyExited:1;
|
||||
u8 afterYou:1;
|
||||
u8 magicianStolen:1; // So that Life Orb doesn't activate after Magician steals it.
|
||||
};
|
||||
|
||||
struct SideTimer
|
||||
|
|
|
@ -5719,6 +5719,7 @@ static void Cmd_moveend(void)
|
|||
gEffectBattler = gBattlerTarget;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_MagicianActivates;
|
||||
gSpecialStatuses[gBattlerAttacker].magicianStolen = TRUE;
|
||||
effect = TRUE;
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
|
@ -6081,6 +6082,7 @@ static void Cmd_moveend(void)
|
|||
gStatuses3[gBattlerAttacker] &= ~STATUS3_ME_FIRST;
|
||||
gSpecialStatuses[gBattlerAttacker].gemBoost = FALSE;
|
||||
gSpecialStatuses[gBattlerAttacker].damagedMons = 0;
|
||||
gSpecialStatuses[gBattlerAttacker].magicianStolen = 0;
|
||||
gSpecialStatuses[gBattlerTarget].berryReduced = FALSE;
|
||||
gBattleScripting.moveEffect = 0;
|
||||
// clear attacker z move data
|
||||
|
|
|
@ -7697,6 +7697,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn)
|
|||
if (IsBattlerAlive(gBattlerAttacker)
|
||||
&& !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove))
|
||||
&& GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD
|
||||
&& !gSpecialStatuses[gBattlerAttacker].magicianStolen
|
||||
&& gSpecialStatuses[gBattlerAttacker].damagedMons)
|
||||
{
|
||||
gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 10;
|
||||
|
|
29
test/battle/ability/magician.c
Normal file
29
test/battle/ability/magician.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
SINGLE_BATTLE_TEST("Magician does not get self-damage recoil after stealing Life Orb")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gItems[ITEM_LIFE_ORB].holdEffect == HOLD_EFFECT_LIFE_ORB);
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].power != 0);
|
||||
PLAYER(SPECIES_DELPHOX) { Ability(ABILITY_MAGICIAN); Item(ITEM_NONE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIFE_ORB); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_TACKLE); }
|
||||
TURN { MOVE(player, MOVE_TACKLE); }
|
||||
} SCENE {
|
||||
// 1st turn
|
||||
MESSAGE("Delphox used Tackle!");
|
||||
ABILITY_POPUP(player, ABILITY_MAGICIAN);
|
||||
MESSAGE("Delphox stole Foe Wobbuffet's Life Orb!");
|
||||
NONE_OF {
|
||||
HP_BAR(player);
|
||||
MESSAGE("Delphox was hurt by its Life Orb!");
|
||||
}
|
||||
// 2nd turn - Life Orb recoil happens now
|
||||
MESSAGE("Delphox used Tackle!");
|
||||
HP_BAR(player);
|
||||
MESSAGE("Delphox was hurt by its Life Orb!");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in a new issue