Add Dazzling
This commit is contained in:
parent
dc7be39894
commit
1a8859b1d8
8 changed files with 31 additions and 8 deletions
|
@ -5975,6 +5975,15 @@ BattleScript_SoundproofProtected::
|
||||||
printstring STRINGID_PKMNSXBLOCKSY
|
printstring STRINGID_PKMNSXBLOCKSY
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
|
BattleScript_DazzlingProtected::
|
||||||
|
attackstring
|
||||||
|
ppreduce
|
||||||
|
pause 0x20
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
printstring STRINGID_POKEMONCANNOTUSEMOVE
|
||||||
|
waitmessage 0x40
|
||||||
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_AbilityNoSpecificStatLoss::
|
BattleScript_AbilityNoSpecificStatLoss::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
|
|
|
@ -588,6 +588,7 @@ struct BattleStruct
|
||||||
struct MegaEvolutionData mega;
|
struct MegaEvolutionData mega;
|
||||||
const u8 *trainerSlideMsg;
|
const u8 *trainerSlideMsg;
|
||||||
bool8 trainerSlideLowHpMsgDone;
|
bool8 trainerSlideLowHpMsgDone;
|
||||||
|
s8 movePriorities[MAX_BATTLERS_COUNT];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define GET_MOVE_TYPE(move, typeArg) \
|
#define GET_MOVE_TYPE(move, typeArg) \
|
||||||
|
|
|
@ -284,5 +284,6 @@ extern const u8 BattleScript_TrainerSlideMsgRet[];
|
||||||
extern const u8 BattleScript_TrainerSlideMsgEnd2[];
|
extern const u8 BattleScript_TrainerSlideMsgEnd2[];
|
||||||
extern const u8 BattleScript_MoveEffectFeint[];
|
extern const u8 BattleScript_MoveEffectFeint[];
|
||||||
extern const u8 BattleScript_ProteanActivates[];
|
extern const u8 BattleScript_ProteanActivates[];
|
||||||
|
extern const u8 BattleScript_DazzlingProtected[];
|
||||||
|
|
||||||
#endif // GUARD_BATTLE_SCRIPTS_H
|
#endif // GUARD_BATTLE_SCRIPTS_H
|
||||||
|
|
|
@ -513,6 +513,7 @@
|
||||||
#define STRINGID_BESTOWITEMGIVING 509
|
#define STRINGID_BESTOWITEMGIVING 509
|
||||||
#define STRINGID_THIRDTYPEADDED 510
|
#define STRINGID_THIRDTYPEADDED 510
|
||||||
#define STRINGID_FELLFORFEINT 511
|
#define STRINGID_FELLFORFEINT 511
|
||||||
|
#define STRINGID_POKEMONCANNOTUSEMOVE 512
|
||||||
|
|
||||||
#define BATTLESTRINGS_COUNT 525
|
#define BATTLESTRINGS_COUNT 525
|
||||||
|
|
||||||
|
|
|
@ -4726,7 +4726,6 @@ u32 GetBattlerTotalSpeedStat(u8 battlerId)
|
||||||
|
|
||||||
static s8 GetMovePriority(u8 battlerId)
|
static s8 GetMovePriority(u8 battlerId)
|
||||||
{
|
{
|
||||||
s8 priority;
|
|
||||||
u16 move;
|
u16 move;
|
||||||
|
|
||||||
if (gProtectStructs[battlerId].noValidMoves)
|
if (gProtectStructs[battlerId].noValidMoves)
|
||||||
|
@ -4734,17 +4733,17 @@ static s8 GetMovePriority(u8 battlerId)
|
||||||
else
|
else
|
||||||
move = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)];
|
move = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)];
|
||||||
|
|
||||||
priority = gBattleMoves[move].priority;
|
gBattleStruct->movePriorities[battlerId] = gBattleMoves[move].priority;
|
||||||
if (GetBattlerAbility(battlerId) == ABILITY_GALE_WINGS
|
if (GetBattlerAbility(battlerId) == ABILITY_GALE_WINGS
|
||||||
&& gBattleMoves[move].type == TYPE_FLYING
|
&& gBattleMoves[move].type == TYPE_FLYING
|
||||||
&& (B_GALE_WINGS == GEN_6 || BATTLER_MAX_HP(battlerId)))
|
&& (B_GALE_WINGS == GEN_6 || BATTLER_MAX_HP(battlerId)))
|
||||||
{
|
{
|
||||||
priority++;
|
gBattleStruct->movePriorities[battlerId]++;
|
||||||
}
|
}
|
||||||
else if (GetBattlerAbility(battlerId) == ABILITY_PRANKSTER
|
else if (GetBattlerAbility(battlerId) == ABILITY_PRANKSTER
|
||||||
&& gBattleMoves[move].split == SPLIT_STATUS)
|
&& gBattleMoves[move].split == SPLIT_STATUS)
|
||||||
{
|
{
|
||||||
priority++;
|
gBattleStruct->movePriorities[battlerId]++;
|
||||||
}
|
}
|
||||||
else if (GetBattlerAbility(battlerId) == ABILITY_TRIAGE)
|
else if (GetBattlerAbility(battlerId) == ABILITY_TRIAGE)
|
||||||
{
|
{
|
||||||
|
@ -4762,12 +4761,12 @@ static s8 GetMovePriority(u8 battlerId)
|
||||||
case EFFECT_SOFTBOILED:
|
case EFFECT_SOFTBOILED:
|
||||||
case EFFECT_ABSORB:
|
case EFFECT_ABSORB:
|
||||||
case EFFECT_ROOST:
|
case EFFECT_ROOST:
|
||||||
priority += 3;
|
gBattleStruct->movePriorities[battlerId] += 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return priority;
|
return gBattleStruct->movePriorities[battlerId];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves)
|
u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves)
|
||||||
|
@ -4849,7 +4848,6 @@ u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves)
|
||||||
strikesFirst = 0; // battler1's move has greater priority
|
strikesFirst = 0; // battler1's move has greater priority
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return strikesFirst;
|
return strikesFirst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -650,6 +650,7 @@ static const u8 sText_BurstingFlames[] = _("The bursting flames\nhit {B_SCR_ACTI
|
||||||
static const u8 sText_BestowItemGiving[] = _("{B_DEF_NAME_WITH_PREFIX} received {B_LAST_ITEM}\nfrom {B_ATK_NAME_WITH_PREFIX}!");
|
static const u8 sText_BestowItemGiving[] = _("{B_DEF_NAME_WITH_PREFIX} received {B_LAST_ITEM}\nfrom {B_ATK_NAME_WITH_PREFIX}!");
|
||||||
static const u8 sText_ThirdTypeAdded[] = _("{B_BUFF1} type was added to\n{B_DEF_NAME_WITH_PREFIX}!");
|
static const u8 sText_ThirdTypeAdded[] = _("{B_BUFF1} type was added to\n{B_DEF_NAME_WITH_PREFIX}!");
|
||||||
static const u8 sText_FellForFeint[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe feint!");
|
static const u8 sText_FellForFeint[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe feint!");
|
||||||
|
static const u8 sText_PokemonCannotUseMove[] = _("{B_ATK_NAME_WITH_PREFIX} cannot\nuse {B_CURRENT_MOVE}!");
|
||||||
|
|
||||||
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||||
{
|
{
|
||||||
|
@ -1154,6 +1155,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||||
sText_BestowItemGiving,
|
sText_BestowItemGiving,
|
||||||
sText_ThirdTypeAdded,
|
sText_ThirdTypeAdded,
|
||||||
sText_FellForFeint,
|
sText_FellForFeint,
|
||||||
|
sText_PokemonCannotUseMove,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gTerrainStringIds[] =
|
const u16 gTerrainStringIds[] =
|
||||||
|
|
|
@ -940,7 +940,7 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move)
|
||||||
else if (gProtectStructs[battlerId].kingsShielded && gBattleMoves[move].power != 0)
|
else if (gProtectStructs[battlerId].kingsShielded && gBattleMoves[move].power != 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if ((gProtectStructs[battlerId].quickGuarded || gProtectStructs[BATTLE_PARTNER(battlerId)].quickGuarded)
|
else if ((gProtectStructs[battlerId].quickGuarded || gProtectStructs[BATTLE_PARTNER(battlerId)].quickGuarded)
|
||||||
&& gBattleMoves[move].priority > 0)
|
&& gBattleStruct->movePriorities[battlerId] > 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -2846,6 +2846,17 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||||
gBattlescriptCurrInstr = BattleScript_SoundproofProtected;
|
gBattlescriptCurrInstr = BattleScript_SoundproofProtected;
|
||||||
effect = 1;
|
effect = 1;
|
||||||
}
|
}
|
||||||
|
else if ((gLastUsedAbility == ABILITY_DAZZLING
|
||||||
|
|| (IsBattlerAlive(battler ^= BIT_FLANK) && GetBattlerAbility(battler) == ABILITY_DAZZLING)
|
||||||
|
)
|
||||||
|
&& gBattleStruct->movePriorities[gBattlerAttacker] > 0
|
||||||
|
&& GetBattlerSide(gBattlerAttacker) != GetBattlerSide(battler))
|
||||||
|
{
|
||||||
|
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)
|
||||||
|
gHitMarker |= HITMARKER_NO_PPDEDUCT;
|
||||||
|
gBattlescriptCurrInstr = BattleScript_DazzlingProtected;
|
||||||
|
effect = 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ABILITYEFFECT_ABSORBING: // 3
|
case ABILITYEFFECT_ABSORBING: // 3
|
||||||
if (move != MOVE_NONE)
|
if (move != MOVE_NONE)
|
||||||
|
|
Loading…
Reference in a new issue