mirror of
https://github.com/pret/pokefirered.git
synced 2026-09-28 20:08:52 -05:00
fixed remaining tests
This commit is contained in:
@@ -406,6 +406,7 @@ BattleScript_EffectSaltCure::
|
||||
call BattleScript_EffectHit_Ret
|
||||
tryfaintmon BS_TARGET
|
||||
jumpiffainted BS_TARGET, TRUE, BattleScript_EffectSaltCure_End
|
||||
jumpifsubstituteblocks BattleScript_EffectSaltCure_End
|
||||
applysaltcure BS_TARGET
|
||||
printstring STRINGID_TARGETISBEINGSALTCURED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
|
||||
@@ -534,6 +534,7 @@ extern const u8 BattleScript_EncoredNoMore[];
|
||||
extern const u8 BattleScript_DestinyBondTakesLife[];
|
||||
extern const u8 BattleScript_DmgHazardsOnAttacker[];
|
||||
extern const u8 BattleScript_DmgHazardsOnTarget[];
|
||||
extern const u8 BattleScript_DmgHazardsOnBattlerScripting[];
|
||||
extern const u8 BattleScript_DmgHazardsOnFaintedBattler[];
|
||||
extern const u8 BattleScript_PerishSongTakesLife[];
|
||||
extern const u8 BattleScript_PerishSongCountGoesDown[];
|
||||
|
||||
@@ -105,6 +105,7 @@ enum
|
||||
CANCELLER_POWDER_MOVE,
|
||||
CANCELLER_POWDER_STATUS,
|
||||
CANCELLER_THROAT_CHOP,
|
||||
CANCELLER_EXPLODING_DAMP,
|
||||
CANCELLER_MULTIHIT_MOVES,
|
||||
CANCELLER_Z_MOVES,
|
||||
CANCELLER_END,
|
||||
|
||||
@@ -169,7 +169,7 @@ void InitAndLaunchChosenStatusAnimation(u32 battler, bool8 isStatus2, u32 status
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].statusAnimActive = 1;
|
||||
if (!isStatus2)
|
||||
{
|
||||
if (status == STATUS1_FREEZE)
|
||||
if (status == STATUS1_FREEZE || status == STATUS1_FROSTBITE)
|
||||
LaunchStatusAnimation(battler, B_ANIM_STATUS_FRZ);
|
||||
else if (status == STATUS1_POISON || status & STATUS1_TOXIC_POISON)
|
||||
LaunchStatusAnimation(battler, B_ANIM_STATUS_PSN);
|
||||
|
||||
@@ -7068,6 +7068,8 @@ static void SetDmgHazardsBattlescript(u8 battler, u8 multistringId)
|
||||
gBattlescriptCurrInstr = BattleScript_DmgHazardsOnTarget;
|
||||
else if (gBattlescriptCurrInstr[1] == BS_ATTACKER)
|
||||
gBattlescriptCurrInstr = BattleScript_DmgHazardsOnAttacker;
|
||||
else if (gBattlescriptCurrInstr[1] == BS_SCRIPTING)
|
||||
gBattlescriptCurrInstr = BattleScript_DmgHazardsOnBattlerScripting;
|
||||
else
|
||||
gBattlescriptCurrInstr = BattleScript_DmgHazardsOnFaintedBattler;
|
||||
}
|
||||
|
||||
@@ -750,11 +750,20 @@ void MarkBattlerReceivedLinkData(u8 battlerId)
|
||||
const u8* CancelMultiTurnMoves(u32 battler)
|
||||
{
|
||||
const u8 *result = NULL;
|
||||
gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS);
|
||||
gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE);
|
||||
gBattleMons[battler].status2 &= ~(STATUS2_UPROAR);
|
||||
gBattleMons[battler].status2 &= ~(STATUS2_BIDE);
|
||||
|
||||
if (B_RAMPAGE_CANCELLING < GEN_5)
|
||||
{
|
||||
gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS);
|
||||
gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE);
|
||||
}
|
||||
else if (!(gBattleMons[battler].status2 & STATUS2_LOCK_CONFUSE)
|
||||
|| ((gBattleMons[battler].status2 & STATUS2_LOCK_CONFUSE) > STATUS2_LOCK_CONFUSE_TURN(1)))
|
||||
{
|
||||
gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS);
|
||||
}
|
||||
|
||||
// Clear battler's semi-invulnerable bits if they are not held by Sky Drop.
|
||||
if (!(gStatuses3[battler] & STATUS3_SKY_DROPPED))
|
||||
gStatuses3[battler] &= ~(STATUS3_SEMI_INVULNERABLE);
|
||||
@@ -2722,7 +2731,7 @@ bool8 HandleFaintedMonActions(void)
|
||||
|
||||
u8 AtkCanceller_UnableToUseMove(u32 moveType)
|
||||
{
|
||||
u8 effect = 0;
|
||||
u8 effect = 0;
|
||||
do
|
||||
{
|
||||
switch (gBattleStruct->atkCancellerTracker)
|
||||
@@ -3112,6 +3121,20 @@ u8 effect = 0;
|
||||
}
|
||||
gBattleStruct->atkCancellerTracker++;
|
||||
break;
|
||||
case CANCELLER_EXPLODING_DAMP:
|
||||
{
|
||||
u32 dampBattler = IsAbilityOnField(ABILITY_DAMP);
|
||||
if (dampBattler && (gMovesInfo[gCurrentMove].effect == EFFECT_EXPLOSION
|
||||
|| gMovesInfo[gCurrentMove].effect == EFFECT_MIND_BLOWN))
|
||||
{
|
||||
gBattleScripting.battler = dampBattler - 1;
|
||||
gBattlescriptCurrInstr = BattleScript_DampStopsExplosion;
|
||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||
effect = 1;
|
||||
}
|
||||
gBattleStruct->atkCancellerTracker++;
|
||||
break;
|
||||
}
|
||||
case CANCELLER_MULTIHIT_MOVES:
|
||||
if (gMovesInfo[gCurrentMove].effect == EFFECT_MULTI_HIT)
|
||||
{
|
||||
@@ -8634,8 +8657,11 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3
|
||||
break;
|
||||
case EFFECT_DOUBLE_POWER_ON_ARG_STATUS:
|
||||
// Comatose targets treated as if asleep
|
||||
if ((gBattleMons[battlerDef].status1 | (STATUS1_SLEEP * (abilityDef == ABILITY_COMATOSE))) & gMovesInfo[move].argument)
|
||||
if ((gBattleMons[battlerDef].status1 | (STATUS1_SLEEP * (abilityDef == ABILITY_COMATOSE))) & gMovesInfo[move].argument
|
||||
&& !((gMovesInfo[move].additionalEffects->moveEffect == MOVE_EFFECT_REMOVE_STATUS) && DoesSubstituteBlockMove(battlerAtk, battlerDef, move)))
|
||||
{
|
||||
basePower *= 2;
|
||||
}
|
||||
break;
|
||||
case EFFECT_VARY_POWER_BASED_ON_HP:
|
||||
basePower = gMovesInfo[move].argument * gBattleMons[battlerDef].hp / gBattleMons[battlerDef].maxHP;
|
||||
|
||||
Reference in New Issue
Block a user