mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-14 07:33:44 +01:00
merge with be
This commit is contained in:
commit
b85586a33a
@ -2202,7 +2202,7 @@ BattleScript_EffectAbsorb::
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
setdrainedhp
|
||||
manipulatedamage DMG_BIG_ROOT
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE
|
||||
jumpifability BS_TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze
|
||||
setbyte cMULTISTRING_CHOOSER, B_MSG_ABSORB
|
||||
goto BattleScript_AbsorbUpdateHp
|
||||
@ -2804,7 +2804,7 @@ BattleScript_MoveMissedDoDamage::
|
||||
.else
|
||||
bichalfword gMoveResultFlags, MOVE_RESULT_MISSED
|
||||
.endif
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
tryfaintmon BS_ATTACKER, FALSE, NULL
|
||||
@ -4286,6 +4286,7 @@ BattleScript_EffectWillOWisp::
|
||||
jumpifstatus BS_TARGET, STATUS1_BURN, BattleScript_AlreadyBurned
|
||||
jumpiftype BS_TARGET, TYPE_FIRE, BattleScript_NotAffected
|
||||
jumpifability BS_TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents
|
||||
jumpifability BS_TARGET, ABILITY_WATER_BUBBLE, BattleScript_WaterVeilPrevents
|
||||
jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_LeafGuardProtects
|
||||
jumpifflowerveil BattleScript_FlowerVeilProtects
|
||||
jumpifleafguard BattleScript_LeafGuardProtects
|
||||
@ -4300,6 +4301,7 @@ BattleScript_EffectWillOWisp::
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_WaterVeilPrevents::
|
||||
call BattleScript_AbilityPopUp
|
||||
copybyte gEffectBattler, gBattlerTarget
|
||||
setbyte cMULTISTRING_CHOOSER, B_MSG_ABILITY_PREVENTS_MOVE_STATUS
|
||||
call BattleScript_BRNPrevention
|
||||
@ -6467,6 +6469,18 @@ BattleScript_TargetPRLZHeal::
|
||||
updatestatusicon BS_TARGET
|
||||
return
|
||||
|
||||
BattleScript_TargetWokeUp::
|
||||
printstring STRINGID_TARGETWOKEUP
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
updatestatusicon BS_TARGET
|
||||
return
|
||||
|
||||
BattleScript_TargetBurnHeal::
|
||||
printstring STRINGID_PKMNBURNHEALED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
updatestatusicon BS_TARGET
|
||||
return
|
||||
|
||||
BattleScript_MoveEffectSleep::
|
||||
statusanimation BS_EFFECT_BATTLER
|
||||
printfromtable gFellAsleepStringIds
|
||||
@ -6570,7 +6584,7 @@ BattleScript_MoveEffectRecoil::
|
||||
jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil
|
||||
jumpifability BS_ATTACKER, ABILITY_ROCK_HEAD, BattleScript_RecoilEnd
|
||||
BattleScript_DoRecoil::
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_IGNORE_DISGUISE
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
printstring STRINGID_PKMNHITWITHRECOIL
|
||||
@ -6609,9 +6623,11 @@ BattleScript_DefiantActivates::
|
||||
return
|
||||
|
||||
BattleScript_AbilityPopUp:
|
||||
.if B_ABILITY_POP_UP == TRUE
|
||||
showabilitypopup BS_ABILITY_BATTLER
|
||||
recordability BS_ABILITY_BATTLER
|
||||
pause 40
|
||||
.endif
|
||||
sethword sABILITY_OVERWRITE, 0
|
||||
return
|
||||
|
||||
@ -6971,6 +6987,7 @@ BattleScript_MoveStatDrain::
|
||||
waitanimation
|
||||
printstring STRINGID_TARGETABILITYSTATRAISE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
tryfaintmon BS_ATTACKER, FALSE, NULL
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_MonMadeMoveUseless_PPLoss::
|
||||
@ -6981,6 +6998,7 @@ BattleScript_MonMadeMoveUseless::
|
||||
call BattleScript_AbilityPopUp
|
||||
printstring STRINGID_PKMNSXMADEYUSELESS
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
tryfaintmon BS_ATTACKER, FALSE, NULL
|
||||
orhalfword gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
@ -6992,6 +7010,7 @@ BattleScript_FlashFireBoost::
|
||||
call BattleScript_AbilityPopUp
|
||||
printfromtable gFlashFireStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
tryfaintmon BS_ATTACKER, FALSE, NULL
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_AbilityPreventsPhasingOut::
|
||||
@ -7607,7 +7626,7 @@ BattleScript_AirBaloonMsgPop::
|
||||
return
|
||||
|
||||
BattleScript_ItemHurtRet::
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_IGNORE_DISGUISE
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
printstring STRINGID_HURTBYITEM
|
||||
@ -7625,7 +7644,7 @@ BattleScript_ItemHealHP_Ret::
|
||||
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
|
||||
printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
return
|
||||
|
@ -144,6 +144,7 @@ struct ProtectStruct
|
||||
u32 usedThroatChopPreventedMove:1;
|
||||
u32 micle:1;
|
||||
u32 custap:1; // also quick claw
|
||||
u32 touchedProtectLike:1;
|
||||
u32 physicalDmg;
|
||||
u32 specialDmg;
|
||||
u8 physicalBattlerId;
|
||||
@ -216,7 +217,6 @@ struct FieldTimer
|
||||
u8 mistyTerrainTimer;
|
||||
u8 electricTerrainTimer;
|
||||
u8 psychicTerrainTimer;
|
||||
u8 echoVoiceCounter;
|
||||
u8 gravityTimer;
|
||||
u8 fairyLockTimer;
|
||||
};
|
||||
@ -491,7 +491,9 @@ struct BattleStruct
|
||||
u16 assistPossibleMoves[PARTY_SIZE * MAX_MON_MOVES]; // Each of mons can know max 4 moves.
|
||||
u8 focusPunchBattlerId;
|
||||
u8 battlerPreventingSwitchout;
|
||||
u8 moneyMultiplier;
|
||||
u8 moneyMultiplier:6;
|
||||
u8 moneyMultiplierItem:1;
|
||||
u8 moneyMultiplierMove:1;
|
||||
u8 savedTurnActionNumber;
|
||||
u8 switchInAbilitiesCounter;
|
||||
u8 faintedActionsState;
|
||||
|
@ -124,6 +124,8 @@ extern const u8 BattleScript_MoveUsedIsInLoveCantAttack[];
|
||||
extern const u8 BattleScript_NightmareTurnDmg[];
|
||||
extern const u8 BattleScript_CurseTurnDmg[];
|
||||
extern const u8 BattleScript_TargetPRLZHeal[];
|
||||
extern const u8 BattleScript_TargetWokeUp[];
|
||||
extern const u8 BattleScript_TargetBurnHeal[];
|
||||
extern const u8 BattleScript_MoveEffectSleep[];
|
||||
extern const u8 BattleScript_YawnMakesAsleep[];
|
||||
extern const u8 BattleScript_MoveEffectPoison[];
|
||||
|
@ -185,7 +185,8 @@
|
||||
#define HITMARKER_IGNORE_SAFEGUARD (1 << 13)
|
||||
#define HITMARKER_SYNCHRONISE_EFFECT (1 << 14)
|
||||
#define HITMARKER_RUN (1 << 15)
|
||||
// 3 free spots because of change in handling of UNDERGROUND/UNDERGWATER/ON AIR
|
||||
#define HITMARKER_IGNORE_DISGUISE (1 << 16)
|
||||
// 3 free spots because of change in handling of UNDERGROUND/UNDERWATER/ON AIR
|
||||
#define HITMARKER_UNABLE_TO_USE_MOVE (1 << 19)
|
||||
#define HITMARKER_x100000 (1 << 20)
|
||||
#define HITMARKER_x200000 (1 << 21)
|
||||
|
@ -572,11 +572,12 @@
|
||||
#define STRINGID_PKMNGOTOVERITSINFATUATION 568
|
||||
#define STRINGID_ITEMCANNOTBEREMOVED 569
|
||||
#define STRINGID_STICKYBARBTRANSFER 570
|
||||
#define STRINGID_ATKGOTOVERINFATUATION 571
|
||||
#define STRINGID_TORMENTEDNOMORE 572
|
||||
#define STRINGID_HEALBLOCKEDNOMORE 573
|
||||
#define STRINGID_PKMNBURNHEALED 571
|
||||
#define STRINGID_ATKGOTOVERINFATUATION 572
|
||||
#define STRINGID_TORMENTEDNOMORE 573
|
||||
#define STRINGID_HEALBLOCKEDNOMORE 574
|
||||
|
||||
#define BATTLESTRINGS_COUNT 574
|
||||
#define BATTLESTRINGS_COUNT 575
|
||||
|
||||
// The below IDs are all indexes into battle message tables,
|
||||
// used to determine which of a set of messages to print.
|
||||
|
@ -795,6 +795,9 @@ static bool8 ShouldUseItem(void)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT)
|
||||
return FALSE;
|
||||
|
||||
if (gStatuses3[gActiveBattler] & STATUS3_EMBARGO)
|
||||
return FALSE;
|
||||
|
||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
party = gPlayerParty;
|
||||
|
@ -698,6 +698,7 @@ static const u8 sText_PkmnShookOffTheTaunt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX
|
||||
static const u8 sText_PkmnGotOverItsInfatuation[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} got over\nits infatuation!");
|
||||
static const u8 sText_ItemCannotBeRemoved[] = _("{B_ATK_NAME_WITH_PREFIX}'s item cannot be removed!");
|
||||
static const u8 sText_StickyBarbTransfer[] = _("The {B_LAST_ITEM} attached itself to\n{B_ATK_NAME_WITH_PREFIX}!");
|
||||
static const u8 sText_PkmnBurnHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nburn was healed.");
|
||||
static const u8 sText_AttackerGotOverInfatuation[] =_("{B_ATK_NAME_WITH_PREFIX} got over\nits infatuation!");
|
||||
static const u8 sText_TormentedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is\ntormented no more!");
|
||||
static const u8 sText_HealBlockedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is cured of\nits heal block!");
|
||||
@ -707,6 +708,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||
[STRINGID_HEALBLOCKEDNOMORE - 12] = sText_HealBlockedNoMore,
|
||||
[STRINGID_TORMENTEDNOMORE - 12] = sText_TormentedNoMore,
|
||||
[STRINGID_ATKGOTOVERINFATUATION - 12] = sText_AttackerGotOverInfatuation,
|
||||
[STRINGID_PKMNBURNHEALED - 12] = sText_PkmnBurnHealed,
|
||||
[STRINGID_STICKYBARBTRANSFER - 12] = sText_StickyBarbTransfer,
|
||||
[STRINGID_ITEMCANNOTBEREMOVED - 12] = sText_ItemCannotBeRemoved,
|
||||
[STRINGID_PKMNGOTOVERITSINFATUATION - 12] = sText_PkmnGotOverItsInfatuation,
|
||||
|
@ -821,7 +821,7 @@ static bool8 DoesAbilityPreventStatus(struct Pokemon *mon, u32 status)
|
||||
ret = TRUE;
|
||||
break;
|
||||
case STATUS1_BURN:
|
||||
if (ability == ABILITY_WATER_VEIL)
|
||||
if (ability == ABILITY_WATER_VEIL || ability == ABILITY_WATER_BUBBLE)
|
||||
ret = TRUE;
|
||||
break;
|
||||
case STATUS1_PARALYSIS:
|
||||
|
@ -1452,8 +1452,11 @@ static void Cmd_attackcanceler(void)
|
||||
}
|
||||
else if (IsBattlerProtected(gBattlerTarget, gCurrentMove)
|
||||
&& (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST))
|
||||
&& ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))))
|
||||
&& ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)))
|
||||
&& gBattleMoves[gCurrentMove].effect != EFFECT_SUCKER_PUNCH)
|
||||
{
|
||||
if (gBattleMoves[gCurrentMove].flags & FLAG_MAKES_CONTACT)
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = 1;
|
||||
CancelMultiTurnMoves(gBattlerAttacker);
|
||||
gMoveResultFlags |= MOVE_RESULT_MISSED;
|
||||
gLastLandedMoves[gBattlerTarget] = 0;
|
||||
@ -1740,7 +1743,7 @@ static void Cmd_ppreduce(void)
|
||||
if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos])
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].notFirstStrike = 1;
|
||||
// For item Metronome
|
||||
// For item Metronome, echoed voice
|
||||
if (gCurrentMove == gLastResultingMoves[gBattlerAttacker]
|
||||
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
|
||||
&& !WasUnableToUseMove(gBattlerAttacker))
|
||||
@ -2353,6 +2356,7 @@ static void Cmd_resultmessage(void)
|
||||
if (gSpecialStatuses[gBattlerTarget].berryReduced
|
||||
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
|
||||
{
|
||||
gLastUsedItem = gBattleMons[gBattlerTarget].item;
|
||||
gSpecialStatuses[gBattlerTarget].berryReduced = 0;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_PrintBerryReduceString;
|
||||
@ -2612,11 +2616,11 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
||||
statusChanged = TRUE;
|
||||
break;
|
||||
case STATUS1_BURN:
|
||||
if (GetBattlerAbility(gEffectBattler) == ABILITY_WATER_VEIL
|
||||
if ((GetBattlerAbility(gEffectBattler) == ABILITY_WATER_VEIL || GetBattlerAbility(gEffectBattler) == ABILITY_WATER_BUBBLE)
|
||||
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
|
||||
{
|
||||
gLastUsedAbility = ABILITY_WATER_VEIL;
|
||||
RecordAbilityBattle(gEffectBattler, ABILITY_WATER_VEIL);
|
||||
gLastUsedAbility = GetBattlerAbility(gEffectBattler);
|
||||
RecordAbilityBattle(gEffectBattler, GetBattlerAbility(gEffectBattler));
|
||||
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
gBattlescriptCurrInstr = BattleScript_BRNPrevention;
|
||||
@ -2645,6 +2649,7 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
||||
break;
|
||||
if (GetBattlerAbility(gEffectBattler) == ABILITY_WATER_VEIL
|
||||
|| GetBattlerAbility(gEffectBattler) == ABILITY_COMATOSE
|
||||
|| GetBattlerAbility(gEffectBattler) == ABILITY_WATER_BUBBLE
|
||||
|| IsAbilityStatusProtected(gEffectBattler))
|
||||
break;
|
||||
if (gBattleMons[gEffectBattler].status1)
|
||||
@ -2875,9 +2880,10 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
||||
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect];
|
||||
break;
|
||||
case MOVE_EFFECT_HAPPY_HOUR:
|
||||
if (GET_BATTLER_SIDE(gBattlerAttacker) == B_SIDE_PLAYER)
|
||||
if (GET_BATTLER_SIDE(gBattlerAttacker) == B_SIDE_PLAYER && !gBattleStruct->moneyMultiplierMove)
|
||||
{
|
||||
gBattleStruct->moneyMultiplier *= 2;
|
||||
gBattleStruct->moneyMultiplierMove = 1;
|
||||
}
|
||||
gBattlescriptCurrInstr++;
|
||||
break;
|
||||
@ -3106,7 +3112,18 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
||||
MarkBattlerForControllerExec(gActiveBattler);
|
||||
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
|
||||
switch (gBattleMoves[gCurrentMove].argument)
|
||||
{
|
||||
case STATUS1_PARALYSIS:
|
||||
gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
|
||||
break;
|
||||
case STATUS1_SLEEP:
|
||||
gBattlescriptCurrInstr = BattleScript_TargetWokeUp;
|
||||
break;
|
||||
case STATUS1_BURN:
|
||||
gBattlescriptCurrInstr = BattleScript_TargetBurnHeal;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MOVE_EFFECT_ATK_DEF_DOWN: // SuperPower
|
||||
@ -4786,10 +4803,11 @@ static void Cmd_moveend(void)
|
||||
switch (gBattleScripting.moveendState)
|
||||
{
|
||||
case MOVEEND_PROTECT_LIKE_EFFECT:
|
||||
if (gBattleMoves[gCurrentMove].flags & FLAG_MAKES_CONTACT)
|
||||
if (gProtectStructs[gBattlerAttacker].touchedProtectLike)
|
||||
{
|
||||
if (gProtectStructs[gBattlerTarget].spikyShielded && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD)
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = 0;
|
||||
gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8;
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
@ -4800,6 +4818,7 @@ static void Cmd_moveend(void)
|
||||
}
|
||||
else if (gProtectStructs[gBattlerTarget].kingsShielded)
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = 0;
|
||||
i = gBattlerAttacker;
|
||||
gBattlerAttacker = gBattlerTarget;
|
||||
gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable
|
||||
@ -4810,6 +4829,7 @@ static void Cmd_moveend(void)
|
||||
}
|
||||
else if (gProtectStructs[gBattlerTarget].banefulBunkered)
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = 0;
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_POISON | MOVE_EFFECT_AFFECTS_USER;
|
||||
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BANEFUL_BUNKER);
|
||||
BattleScriptPushCursor();
|
||||
@ -7269,9 +7289,14 @@ static void Cmd_various(void)
|
||||
return;
|
||||
case VARIOUS_JUMP_IF_NO_HOLD_EFFECT:
|
||||
if (GetBattlerHoldEffect(gActiveBattler, TRUE) != gBattlescriptCurrInstr[3])
|
||||
{
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
gLastUsedItem = gBattleMons[gActiveBattler].item; // For B_LAST_USED_ITEM
|
||||
gBattlescriptCurrInstr += 8;
|
||||
}
|
||||
return;
|
||||
case VARIOUS_JUMP_IF_NO_ALLY:
|
||||
if (!IsBattlerAlive(BATTLE_PARTNER(gActiveBattler)))
|
||||
@ -8241,7 +8266,8 @@ static void Cmd_various(void)
|
||||
}
|
||||
else if (gBattleMons[gBattlerAttacker].status1 & STATUS1_BURN)
|
||||
{
|
||||
if (GetBattlerAbility(gBattlerTarget) == ABILITY_WATER_VEIL)
|
||||
if (GetBattlerAbility(gBattlerTarget) == ABILITY_WATER_VEIL
|
||||
|| GetBattlerAbility(gBattlerTarget) == ABILITY_WATER_BUBBLE)
|
||||
{
|
||||
gBattlerAbility = gBattlerTarget;
|
||||
BattleScriptPush(T1_READ_PTR(gBattlescriptCurrInstr + 3));
|
||||
@ -11936,7 +11962,8 @@ bool32 DoesDisguiseBlockMove(u8 battlerAtk, u8 battlerDef, u32 move)
|
||||
if (GetBattlerAbility(battlerDef) != ABILITY_DISGUISE
|
||||
|| gBattleMons[battlerDef].species != SPECIES_MIMIKYU
|
||||
|| gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED
|
||||
|| gBattleMoves[move].power == 0)
|
||||
|| gBattleMoves[move].power == 0
|
||||
|| gHitMarker & HITMARKER_IGNORE_DISGUISE)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
|
@ -859,7 +859,7 @@ void HandleAction_ActionFinished(void)
|
||||
gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
|
||||
| HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_x100000
|
||||
| HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
|
||||
| HITMARKER_CHARGING | HITMARKER_x4000000);
|
||||
| HITMARKER_CHARGING | HITMARKER_x4000000 | HITMARKER_IGNORE_DISGUISE);
|
||||
|
||||
gCurrentMove = 0;
|
||||
gBattleMoveDamage = 0;
|
||||
@ -4863,6 +4863,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE)
|
||||
&& GetBattlerAbility(gBattlerAttacker) != ABILITY_WATER_VEIL
|
||||
&& GetBattlerAbility(gBattlerAttacker) != ABILITY_WATER_BUBBLE
|
||||
&& !(gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY)
|
||||
&& !IsAbilityStatusProtected(gBattlerAttacker)
|
||||
&& (Random() % 3) == 0)
|
||||
@ -5070,6 +5071,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
}
|
||||
break;
|
||||
case ABILITY_WATER_VEIL:
|
||||
case ABILITY_WATER_BUBBLE:
|
||||
if (gBattleMons[battler].status1 & STATUS1_BURN)
|
||||
{
|
||||
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
|
||||
@ -5681,8 +5683,11 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
switch (battlerHoldEffect)
|
||||
{
|
||||
case HOLD_EFFECT_DOUBLE_PRIZE:
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER && !gBattleStruct->moneyMultiplierItem)
|
||||
{
|
||||
gBattleStruct->moneyMultiplier *= 2;
|
||||
gBattleStruct->moneyMultiplierItem = 1;
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_RESTORE_STATS:
|
||||
for (i = 0; i < NUM_BATTLE_STATS; i++)
|
||||
@ -7240,12 +7245,12 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef)
|
||||
basePower = 150;
|
||||
break;
|
||||
case EFFECT_ECHOED_VOICE:
|
||||
if (gFieldTimers.echoVoiceCounter != 0)
|
||||
// gBattleStruct->sameMoveTurns incremented in ppreduce
|
||||
if (gBattleStruct->sameMoveTurns[battlerAtk] != 0)
|
||||
{
|
||||
if (gFieldTimers.echoVoiceCounter >= 5)
|
||||
basePower *= 5;
|
||||
else
|
||||
basePower *= gFieldTimers.echoVoiceCounter;
|
||||
basePower += (basePower * gBattleStruct->sameMoveTurns[battlerAtk]);
|
||||
if (basePower > 200)
|
||||
basePower = 200;
|
||||
}
|
||||
break;
|
||||
case EFFECT_PAYBACK:
|
||||
|
@ -5711,7 +5711,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
.type = TYPE_FIGHTING,
|
||||
.accuracy = 90,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST,
|
||||
@ -9767,7 +9767,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
.type = TYPE_WATER,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_FOES_AND_ALLY,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST,
|
||||
@ -9782,7 +9782,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
.type = TYPE_ICE,
|
||||
.accuracy = 90,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST,
|
||||
|
@ -4313,7 +4313,13 @@ static bool8 IsItemFlute(u16 item)
|
||||
static bool8 ExecuteTableBasedItemEffect_(u8 partyMonIndex, u16 item, u8 monMoveIndex)
|
||||
{
|
||||
if (gMain.inBattle)
|
||||
return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, GetPartyIdFromBattleSlot(partyMonIndex), monMoveIndex);
|
||||
{
|
||||
if ((partyMonIndex == 0 && gStatuses3[B_POSITION_PLAYER_LEFT] & STATUS3_EMBARGO)
|
||||
|| (partyMonIndex == 1 && gStatuses3[B_POSITION_PLAYER_RIGHT] & STATUS3_EMBARGO))
|
||||
return TRUE; // cannot use on this mon
|
||||
else
|
||||
return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, GetPartyIdFromBattleSlot(partyMonIndex), monMoveIndex);
|
||||
}
|
||||
else
|
||||
return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, partyMonIndex, monMoveIndex);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user