mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-18 17:34:20 +01:00
Implemented Triple Arrows' effect
This commit is contained in:
parent
6574e01e73
commit
1595a66559
@ -423,6 +423,11 @@ gBattleScriptsForMoveEffects::
|
|||||||
.4byte BattleScript_EffectHitSetEntryHazard @ EFFECT_HIT_SET_ENTRY_HAZARD
|
.4byte BattleScript_EffectHitSetEntryHazard @ EFFECT_HIT_SET_ENTRY_HAZARD
|
||||||
.4byte BattleScript_EffectDireClaw @ EFFECT_DIRE_CLAW
|
.4byte BattleScript_EffectDireClaw @ EFFECT_DIRE_CLAW
|
||||||
.4byte BattleScript_EffectBarbBarrage @ EFFECT_BARB_BARRAGE
|
.4byte BattleScript_EffectBarbBarrage @ EFFECT_BARB_BARRAGE
|
||||||
|
.4byte BattleScript_EffectTripleArrows @ EFFECT_TRIPLE_ARROWS
|
||||||
|
|
||||||
|
BattleScript_EffectTripleArrows::
|
||||||
|
setmoveeffect MOVE_EFFECT_TRIPLE_ARROWS
|
||||||
|
goto BattleScript_EffectHit
|
||||||
|
|
||||||
BattleScript_StealthRockActivates::
|
BattleScript_StealthRockActivates::
|
||||||
setstealthrock BattleScript_MoveEnd
|
setstealthrock BattleScript_MoveEnd
|
||||||
@ -1451,6 +1456,11 @@ BattleScript_DoubleShockRemoveType::
|
|||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
return
|
return
|
||||||
|
|
||||||
|
BattleScript_DefDown::
|
||||||
|
modifybattlerstatstage BS_TARGET, STAT_DEF, DECREASE, 1, BattleScript_DefDown_Ret, ANIM_ON
|
||||||
|
BattleScript_DefDown_Ret:
|
||||||
|
return
|
||||||
|
|
||||||
BattleScript_EffectPurify:
|
BattleScript_EffectPurify:
|
||||||
attackcanceler
|
attackcanceler
|
||||||
attackstring
|
attackstring
|
||||||
|
@ -457,6 +457,7 @@ extern const u8 BattleScript_DampPreventsAftermath[];
|
|||||||
extern const u8 BattleScript_HealingWishActivates[];
|
extern const u8 BattleScript_HealingWishActivates[];
|
||||||
extern const u8 BattleScript_LunarDanceActivates[];
|
extern const u8 BattleScript_LunarDanceActivates[];
|
||||||
extern const u8 BattleScript_ShellTrapSetUp[];
|
extern const u8 BattleScript_ShellTrapSetUp[];
|
||||||
|
extern const u8 BattleScript_DefDown[];
|
||||||
extern const u8 BattleScript_CouldntFullyProtect[];
|
extern const u8 BattleScript_CouldntFullyProtect[];
|
||||||
extern const u8 BattleScript_MoveEffectStockpileWoreOff[];
|
extern const u8 BattleScript_MoveEffectStockpileWoreOff[];
|
||||||
extern const u8 BattleScript_StealthRockActivates[];
|
extern const u8 BattleScript_StealthRockActivates[];
|
||||||
|
@ -376,8 +376,9 @@
|
|||||||
#define MOVE_EFFECT_DIRE_CLAW 74
|
#define MOVE_EFFECT_DIRE_CLAW 74
|
||||||
#define MOVE_EFFECT_STEALTH_ROCK 75
|
#define MOVE_EFFECT_STEALTH_ROCK 75
|
||||||
#define MOVE_EFFECT_SPIKES 76
|
#define MOVE_EFFECT_SPIKES 76
|
||||||
|
#define MOVE_EFFECT_TRIPLE_ARROWS 77
|
||||||
|
|
||||||
#define NUM_MOVE_EFFECTS 77
|
#define NUM_MOVE_EFFECTS 78
|
||||||
|
|
||||||
#define MOVE_EFFECT_AFFECTS_USER 0x4000
|
#define MOVE_EFFECT_AFFECTS_USER 0x4000
|
||||||
#define MOVE_EFFECT_CERTAIN 0x8000
|
#define MOVE_EFFECT_CERTAIN 0x8000
|
||||||
|
@ -404,7 +404,8 @@
|
|||||||
#define EFFECT_HIT_SET_ENTRY_HAZARD 398
|
#define EFFECT_HIT_SET_ENTRY_HAZARD 398
|
||||||
#define EFFECT_DIRE_CLAW 399
|
#define EFFECT_DIRE_CLAW 399
|
||||||
#define EFFECT_BARB_BARRAGE 400
|
#define EFFECT_BARB_BARRAGE 400
|
||||||
|
#define EFFECT_TRIPLE_ARROWS 401
|
||||||
|
|
||||||
#define NUM_BATTLE_MOVE_EFFECTS 401
|
#define NUM_BATTLE_MOVE_EFFECTS 402
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
||||||
|
@ -2082,7 +2082,8 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi
|
|||||||
#if B_AFFECTION_MECHANICS == TRUE
|
#if B_AFFECTION_MECHANICS == TRUE
|
||||||
+ 2 * (GetBattlerFriendshipScore(gBattlerAttacker) >= FRIENDSHIP_200_TO_254)
|
+ 2 * (GetBattlerFriendshipScore(gBattlerAttacker) >= FRIENDSHIP_200_TO_254)
|
||||||
#endif
|
#endif
|
||||||
+ (abilityAtk == ABILITY_SUPER_LUCK);
|
+ (abilityAtk == ABILITY_SUPER_LUCK)
|
||||||
|
+ (gBattleMoves[move].effect == EFFECT_TRIPLE_ARROWS);
|
||||||
|
|
||||||
if (critChance >= ARRAY_COUNT(sCriticalHitChance))
|
if (critChance >= ARRAY_COUNT(sCriticalHitChance))
|
||||||
critChance = ARRAY_COUNT(sCriticalHitChance) - 1;
|
critChance = ARRAY_COUNT(sCriticalHitChance) - 1;
|
||||||
@ -3799,6 +3800,35 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
|||||||
gBattlescriptCurrInstr = BattleScript_SpikesActivates;
|
gBattlescriptCurrInstr = BattleScript_SpikesActivates;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MOVE_EFFECT_TRIPLE_ARROWS:
|
||||||
|
{
|
||||||
|
u32 randomChance = Random() % 100;
|
||||||
|
if (randomChance < 50) // Chance to reduce a foe's Defense by 1 stat stage.
|
||||||
|
{
|
||||||
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
|
gBattlescriptCurrInstr = BattleScript_DefDown;
|
||||||
|
}
|
||||||
|
if (randomChance >= 50 && randomChance <= 80) // Chance to cause a foe to flinch.
|
||||||
|
{
|
||||||
|
if (battlerAbility == ABILITY_INNER_FOCUS)
|
||||||
|
{
|
||||||
|
if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
|
||||||
|
{
|
||||||
|
gLastUsedAbility = ABILITY_INNER_FOCUS;
|
||||||
|
gBattlerAbility = gEffectBattler;
|
||||||
|
RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS);
|
||||||
|
gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber)
|
||||||
|
gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[MOVE_EFFECT_FLINCH];
|
||||||
|
gBattlescriptCurrInstr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12726,13 +12726,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
|
|||||||
{
|
{
|
||||||
#if B_UPDATED_MOVE_DATA >= GEN_9
|
#if B_UPDATED_MOVE_DATA >= GEN_9
|
||||||
.power = 90,
|
.power = 90,
|
||||||
|
.pp = 10,
|
||||||
#else
|
#else
|
||||||
.power = 50,
|
.power = 50,
|
||||||
|
.pp = 15,
|
||||||
#endif
|
#endif
|
||||||
.effect = EFFECT_PLACEHOLDER, // EFFECT_TRIPLE_ARROWS,
|
.effect = EFFECT_TRIPLE_ARROWS,
|
||||||
.type = TYPE_FIGHTING,
|
.type = TYPE_FIGHTING,
|
||||||
.accuracy = 100,
|
.accuracy = 100,
|
||||||
.pp = 15,
|
|
||||||
.secondaryEffectChance = 100,
|
.secondaryEffectChance = 100,
|
||||||
.target = MOVE_TARGET_SELECTED,
|
.target = MOVE_TARGET_SELECTED,
|
||||||
.priority = 0,
|
.priority = 0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user