mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-28 00:24:11 +01:00
Added new conditions for the trainer slide-in system (#2713)
This commit is contained in:
commit
19ec7e2a1a
@ -2077,6 +2077,14 @@
|
|||||||
various \battler, VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES
|
various \battler, VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro trytrainerslidezmovemsg battler:req
|
||||||
|
various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro trytrainerslidemegaevolutionmsg battler:req
|
||||||
|
various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION
|
||||||
|
.endm
|
||||||
|
|
||||||
@ helpful macros
|
@ helpful macros
|
||||||
.macro setstatchanger stat:req, stages:req, down:req
|
.macro setstatchanger stat:req, stages:req, down:req
|
||||||
setbyte sSTATCHANGER, \stat | \stages << 3 | \down << 7
|
setbyte sSTATCHANGER, \stat | \stages << 3 | \down << 7
|
||||||
|
@ -7871,6 +7871,8 @@ BattleScript_FocusPunchSetUp::
|
|||||||
end2
|
end2
|
||||||
|
|
||||||
BattleScript_MegaEvolution::
|
BattleScript_MegaEvolution::
|
||||||
|
printstring STRINGID_EMPTYSTRING3
|
||||||
|
trytrainerslidemegaevolutionmsg BS_ATTACKER
|
||||||
printstring STRINGID_MEGAEVOREACTING
|
printstring STRINGID_MEGAEVOREACTING
|
||||||
BattleScript_MegaEvolutionAfeterString:
|
BattleScript_MegaEvolutionAfeterString:
|
||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
@ -7886,6 +7888,8 @@ BattleScript_MegaEvolutionAfeterString:
|
|||||||
end2
|
end2
|
||||||
|
|
||||||
BattleScript_WishMegaEvolution::
|
BattleScript_WishMegaEvolution::
|
||||||
|
printstring STRINGID_EMPTYSTRING3
|
||||||
|
trytrainerslidemegaevolutionmsg BS_ATTACKER
|
||||||
printstring STRINGID_FERVENTWISHREACHED
|
printstring STRINGID_FERVENTWISHREACHED
|
||||||
goto BattleScript_MegaEvolutionAfeterString
|
goto BattleScript_MegaEvolutionAfeterString
|
||||||
|
|
||||||
@ -10075,6 +10079,8 @@ BattleScript_JabocaRowapBerryActivate_Dmg:
|
|||||||
|
|
||||||
@ z moves / effects
|
@ z moves / effects
|
||||||
BattleScript_ZMoveActivateDamaging::
|
BattleScript_ZMoveActivateDamaging::
|
||||||
|
printstring STRINGID_EMPTYSTRING3
|
||||||
|
trytrainerslidezmovemsg BS_ATTACKER
|
||||||
printstring STRINGID_ZPOWERSURROUNDS
|
printstring STRINGID_ZPOWERSURROUNDS
|
||||||
playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL
|
playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL
|
||||||
printstring STRINGID_ZMOVEUNLEASHED
|
printstring STRINGID_ZMOVEUNLEASHED
|
||||||
@ -10082,6 +10088,8 @@ BattleScript_ZMoveActivateDamaging::
|
|||||||
return
|
return
|
||||||
|
|
||||||
BattleScript_ZMoveActivateStatus::
|
BattleScript_ZMoveActivateStatus::
|
||||||
|
printstring STRINGID_EMPTYSTRING3
|
||||||
|
trytrainerslidezmovemsg BS_ATTACKER
|
||||||
savetarget
|
savetarget
|
||||||
printstring STRINGID_ZPOWERSURROUNDS
|
printstring STRINGID_ZPOWERSURROUNDS
|
||||||
playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL
|
playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL
|
||||||
|
@ -661,6 +661,14 @@ struct BattleStruct
|
|||||||
u8 storedLunarDance:4; // Each battler as a bit.
|
u8 storedLunarDance:4; // Each battler as a bit.
|
||||||
u16 supremeOverlordModifier[MAX_BATTLERS_COUNT];
|
u16 supremeOverlordModifier[MAX_BATTLERS_COUNT];
|
||||||
u8 itemPartyIndex[MAX_BATTLERS_COUNT];
|
u8 itemPartyIndex[MAX_BATTLERS_COUNT];
|
||||||
|
bool8 trainerSlideHalfHpMsgDone;
|
||||||
|
u8 trainerSlideFirstCriticalHitMsgState:2;
|
||||||
|
u8 trainerSlideFirstSuperEffectiveHitMsgState:2;
|
||||||
|
u8 trainerSlideFirstSTABMoveMsgState:2;
|
||||||
|
u8 trainerSlidePlayerMonUnaffectedMsgState:2;
|
||||||
|
bool8 trainerSlideMegaEvolutionMsgDone;
|
||||||
|
bool8 trainerSlideZMoveMsgDone;
|
||||||
|
bool8 trainerSlideBeforeFirstTurnMsgDone;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define F_DYNAMIC_TYPE_1 (1 << 6)
|
#define F_DYNAMIC_TYPE_1 (1 << 6)
|
||||||
|
@ -229,6 +229,14 @@ enum
|
|||||||
TRAINER_SLIDE_LAST_SWITCHIN,
|
TRAINER_SLIDE_LAST_SWITCHIN,
|
||||||
TRAINER_SLIDE_LAST_LOW_HP,
|
TRAINER_SLIDE_LAST_LOW_HP,
|
||||||
TRAINER_SLIDE_FIRST_DOWN,
|
TRAINER_SLIDE_FIRST_DOWN,
|
||||||
|
TRAINER_SLIDE_LAST_HALF_HP,
|
||||||
|
TRAINER_SLIDE_FIRST_CRITICAL_HIT,
|
||||||
|
TRAINER_SLIDE_FIRST_SUPER_EFFECTIVE_HIT,
|
||||||
|
TRAINER_SLIDE_FIRST_STAB_MOVE,
|
||||||
|
TRAINER_SLIDE_PLAYER_MON_UNAFFECTED,
|
||||||
|
TRAINER_SLIDE_MEGA_EVOLUTION,
|
||||||
|
TRAINER_SLIDE_Z_MOVE,
|
||||||
|
TRAINER_SLIDE_BEFORE_FIRST_TURN,
|
||||||
};
|
};
|
||||||
|
|
||||||
void BufferStringBattle(u16 stringID);
|
void BufferStringBattle(u16 stringID);
|
||||||
|
@ -89,177 +89,179 @@
|
|||||||
#define CMP_NO_COMMON_BITS 5
|
#define CMP_NO_COMMON_BITS 5
|
||||||
|
|
||||||
// Cmd_various
|
// Cmd_various
|
||||||
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
|
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
|
||||||
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
|
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
|
||||||
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
|
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
|
||||||
#define VARIOUS_GET_MOVE_TARGET 3
|
#define VARIOUS_GET_MOVE_TARGET 3
|
||||||
#define VARIOUS_GET_BATTLER_FAINTED 4
|
#define VARIOUS_GET_BATTLER_FAINTED 4
|
||||||
#define VARIOUS_RESET_SWITCH_IN_ABILITY_BITS 5
|
#define VARIOUS_RESET_SWITCH_IN_ABILITY_BITS 5
|
||||||
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
|
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
|
||||||
#define VARIOUS_RESET_PLAYER_FAINTED 7
|
#define VARIOUS_RESET_PLAYER_FAINTED 7
|
||||||
#define VARIOUS_PALACE_FLAVOR_TEXT 8
|
#define VARIOUS_PALACE_FLAVOR_TEXT 8
|
||||||
#define VARIOUS_ARENA_JUDGMENT_WINDOW 9
|
#define VARIOUS_ARENA_JUDGMENT_WINDOW 9
|
||||||
#define VARIOUS_ARENA_OPPONENT_MON_LOST 10
|
#define VARIOUS_ARENA_OPPONENT_MON_LOST 10
|
||||||
#define VARIOUS_ARENA_PLAYER_MON_LOST 11
|
#define VARIOUS_ARENA_PLAYER_MON_LOST 11
|
||||||
#define VARIOUS_ARENA_BOTH_MONS_LOST 12
|
#define VARIOUS_ARENA_BOTH_MONS_LOST 12
|
||||||
#define VARIOUS_EMIT_YESNOBOX 13
|
#define VARIOUS_EMIT_YESNOBOX 13
|
||||||
#define VARIOUS_DRAW_ARENA_REF_TEXT_BOX 14
|
#define VARIOUS_DRAW_ARENA_REF_TEXT_BOX 14
|
||||||
#define VARIOUS_ERASE_ARENA_REF_TEXT_BOX 15
|
#define VARIOUS_ERASE_ARENA_REF_TEXT_BOX 15
|
||||||
#define VARIOUS_ARENA_JUDGMENT_STRING 16
|
#define VARIOUS_ARENA_JUDGMENT_STRING 16
|
||||||
#define VARIOUS_ARENA_WAIT_STRING 17
|
#define VARIOUS_ARENA_WAIT_STRING 17
|
||||||
#define VARIOUS_WAIT_CRY 18
|
#define VARIOUS_WAIT_CRY 18
|
||||||
#define VARIOUS_RETURN_OPPONENT_MON1 19
|
#define VARIOUS_RETURN_OPPONENT_MON1 19
|
||||||
#define VARIOUS_RETURN_OPPONENT_MON2 20
|
#define VARIOUS_RETURN_OPPONENT_MON2 20
|
||||||
#define VARIOUS_VOLUME_DOWN 21
|
#define VARIOUS_VOLUME_DOWN 21
|
||||||
#define VARIOUS_VOLUME_UP 22
|
#define VARIOUS_VOLUME_UP 22
|
||||||
#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23
|
#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23
|
||||||
#define VARIOUS_PALACE_TRY_ESCAPE_STATUS 24
|
#define VARIOUS_PALACE_TRY_ESCAPE_STATUS 24
|
||||||
#define VARIOUS_SET_TELEPORT_OUTCOME 25
|
#define VARIOUS_SET_TELEPORT_OUTCOME 25
|
||||||
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
|
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
|
||||||
#define VARIOUS_STAT_TEXT_BUFFER 27
|
#define VARIOUS_STAT_TEXT_BUFFER 27
|
||||||
#define VARIOUS_SWITCHIN_ABILITIES 28
|
#define VARIOUS_SWITCHIN_ABILITIES 28
|
||||||
#define VARIOUS_SAVE_TARGET 29
|
#define VARIOUS_SAVE_TARGET 29
|
||||||
#define VARIOUS_RESTORE_TARGET 30
|
#define VARIOUS_RESTORE_TARGET 30
|
||||||
#define VARIOUS_INSTANT_HP_DROP 31
|
#define VARIOUS_INSTANT_HP_DROP 31
|
||||||
#define VARIOUS_CLEAR_STATUS 32
|
#define VARIOUS_CLEAR_STATUS 32
|
||||||
#define VARIOUS_RESTORE_PP 33
|
#define VARIOUS_RESTORE_PP 33
|
||||||
#define VARIOUS_TRY_ACTIVATE_MOXIE 34
|
#define VARIOUS_TRY_ACTIVATE_MOXIE 34
|
||||||
#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 35
|
#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 35
|
||||||
#define VARIOUS_PLAY_MOVE_ANIMATION 36
|
#define VARIOUS_PLAY_MOVE_ANIMATION 36
|
||||||
#define VARIOUS_SET_LUCKY_CHANT 37
|
#define VARIOUS_SET_LUCKY_CHANT 37
|
||||||
#define VARIOUS_SUCKER_PUNCH_CHECK 38
|
#define VARIOUS_SUCKER_PUNCH_CHECK 38
|
||||||
#define VARIOUS_SET_SIMPLE_BEAM 39
|
#define VARIOUS_SET_SIMPLE_BEAM 39
|
||||||
#define VARIOUS_TRY_ENTRAINMENT 40
|
#define VARIOUS_TRY_ENTRAINMENT 40
|
||||||
#define VARIOUS_SET_LAST_USED_ABILITY 41
|
#define VARIOUS_SET_LAST_USED_ABILITY 41
|
||||||
#define VARIOUS_TRY_HEAL_PULSE 42
|
#define VARIOUS_TRY_HEAL_PULSE 42
|
||||||
#define VARIOUS_TRY_QUASH 43
|
#define VARIOUS_TRY_QUASH 43
|
||||||
#define VARIOUS_INVERT_STAT_STAGES 44
|
#define VARIOUS_INVERT_STAT_STAGES 44
|
||||||
#define VARIOUS_SET_TERRAIN 45
|
#define VARIOUS_SET_TERRAIN 45
|
||||||
#define VARIOUS_TRY_ME_FIRST 46
|
#define VARIOUS_TRY_ME_FIRST 46
|
||||||
#define VARIOUS_JUMP_IF_BATTLE_END 47
|
#define VARIOUS_JUMP_IF_BATTLE_END 47
|
||||||
#define VARIOUS_TRY_ELECTRIFY 48
|
#define VARIOUS_TRY_ELECTRIFY 48
|
||||||
#define VARIOUS_TRY_REFLECT_TYPE 49
|
#define VARIOUS_TRY_REFLECT_TYPE 49
|
||||||
#define VARIOUS_TRY_SOAK 50
|
#define VARIOUS_TRY_SOAK 50
|
||||||
#define VARIOUS_HANDLE_MEGA_EVO 51
|
#define VARIOUS_HANDLE_MEGA_EVO 51
|
||||||
#define VARIOUS_TRY_LAST_RESORT 52
|
#define VARIOUS_TRY_LAST_RESORT 52
|
||||||
#define VARIOUS_ARGUMENT_STATUS_EFFECT 53
|
#define VARIOUS_ARGUMENT_STATUS_EFFECT 53
|
||||||
#define VARIOUS_TRY_HIT_SWITCH_TARGET 54
|
#define VARIOUS_TRY_HIT_SWITCH_TARGET 54
|
||||||
#define VARIOUS_TRY_AUTOTOMIZE 55
|
#define VARIOUS_TRY_AUTOTOMIZE 55
|
||||||
#define VARIOUS_TRY_COPYCAT 56
|
#define VARIOUS_TRY_COPYCAT 56
|
||||||
#define VARIOUS_ABILITY_POPUP 57
|
#define VARIOUS_ABILITY_POPUP 57
|
||||||
#define VARIOUS_DEFOG 58
|
#define VARIOUS_DEFOG 58
|
||||||
#define VARIOUS_JUMP_IF_TARGET_ALLY 59
|
#define VARIOUS_JUMP_IF_TARGET_ALLY 59
|
||||||
#define VARIOUS_TRY_SYNCHRONOISE 60
|
#define VARIOUS_TRY_SYNCHRONOISE 60
|
||||||
#define VARIOUS_PSYCHO_SHIFT 61
|
#define VARIOUS_PSYCHO_SHIFT 61
|
||||||
#define VARIOUS_CURE_STATUS 62
|
#define VARIOUS_CURE_STATUS 62
|
||||||
#define VARIOUS_POWER_TRICK 63
|
#define VARIOUS_POWER_TRICK 63
|
||||||
#define VARIOUS_AFTER_YOU 64
|
#define VARIOUS_AFTER_YOU 64
|
||||||
#define VARIOUS_BESTOW 65
|
#define VARIOUS_BESTOW 65
|
||||||
#define VARIOUS_ARGUMENT_TO_MOVE_EFFECT 66
|
#define VARIOUS_ARGUMENT_TO_MOVE_EFFECT 66
|
||||||
#define VARIOUS_JUMP_IF_NOT_GROUNDED 67
|
#define VARIOUS_JUMP_IF_NOT_GROUNDED 67
|
||||||
#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 68
|
#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 68
|
||||||
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 69
|
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 69
|
||||||
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 70
|
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 70
|
||||||
#define VARIOUS_SET_AURORA_VEIL 71
|
#define VARIOUS_SET_AURORA_VEIL 71
|
||||||
#define VARIOUS_TRY_THIRD_TYPE 72
|
#define VARIOUS_TRY_THIRD_TYPE 72
|
||||||
#define VARIOUS_ACUPRESSURE 73
|
#define VARIOUS_ACUPRESSURE 73
|
||||||
#define VARIOUS_SET_POWDER 74
|
#define VARIOUS_SET_POWDER 74
|
||||||
#define VARIOUS_SPECTRAL_THIEF 75
|
#define VARIOUS_SPECTRAL_THIEF 75
|
||||||
#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 76
|
#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 76
|
||||||
#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 77
|
#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 77
|
||||||
#define VARIOUS_JUMP_IF_ROAR_FAILS 78
|
#define VARIOUS_JUMP_IF_ROAR_FAILS 78
|
||||||
#define VARIOUS_TRY_INSTRUCT 79
|
#define VARIOUS_TRY_INSTRUCT 79
|
||||||
#define VARIOUS_JUMP_IF_NOT_BERRY 80
|
#define VARIOUS_JUMP_IF_NOT_BERRY 80
|
||||||
#define VARIOUS_TRACE_ABILITY 81
|
#define VARIOUS_TRACE_ABILITY 81
|
||||||
#define VARIOUS_UPDATE_NICK 82
|
#define VARIOUS_UPDATE_NICK 82
|
||||||
#define VARIOUS_TRY_ILLUSION_OFF 83
|
#define VARIOUS_TRY_ILLUSION_OFF 83
|
||||||
#define VARIOUS_SET_SPRITEIGNORE0HP 84
|
#define VARIOUS_SET_SPRITEIGNORE0HP 84
|
||||||
#define VARIOUS_HANDLE_FORM_CHANGE 85
|
#define VARIOUS_HANDLE_FORM_CHANGE 85
|
||||||
#define VARIOUS_GET_STAT_VALUE 86
|
#define VARIOUS_GET_STAT_VALUE 86
|
||||||
#define VARIOUS_JUMP_IF_FULL_HP 87
|
#define VARIOUS_JUMP_IF_FULL_HP 87
|
||||||
#define VARIOUS_LOSE_TYPE 88
|
#define VARIOUS_LOSE_TYPE 88
|
||||||
#define VARIOUS_TRY_ACTIVATE_SOULHEART 89
|
#define VARIOUS_TRY_ACTIVATE_SOULHEART 89
|
||||||
#define VARIOUS_TRY_ACTIVATE_RECEIVER 90
|
#define VARIOUS_TRY_ACTIVATE_RECEIVER 90
|
||||||
#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 91
|
#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 91
|
||||||
#define VARIOUS_TRY_FRISK 92
|
#define VARIOUS_TRY_FRISK 92
|
||||||
#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 93
|
#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 93
|
||||||
#define VARIOUS_TRY_FAIRY_LOCK 94
|
#define VARIOUS_TRY_FAIRY_LOCK 94
|
||||||
#define VARIOUS_JUMP_IF_NO_ALLY 95
|
#define VARIOUS_JUMP_IF_NO_ALLY 95
|
||||||
#define VARIOUS_POISON_TYPE_IMMUNITY 96
|
#define VARIOUS_POISON_TYPE_IMMUNITY 96
|
||||||
#define VARIOUS_JUMP_IF_NO_HOLD_EFFECT 97
|
#define VARIOUS_JUMP_IF_NO_HOLD_EFFECT 97
|
||||||
#define VARIOUS_INFATUATE_WITH_BATTLER 98
|
#define VARIOUS_INFATUATE_WITH_BATTLER 98
|
||||||
#define VARIOUS_SET_LAST_USED_ITEM 99
|
#define VARIOUS_SET_LAST_USED_ITEM 99
|
||||||
#define VARIOUS_PARALYZE_TYPE_IMMUNITY 100
|
#define VARIOUS_PARALYZE_TYPE_IMMUNITY 100
|
||||||
#define VARIOUS_JUMP_IF_ABSENT 101
|
#define VARIOUS_JUMP_IF_ABSENT 101
|
||||||
#define VARIOUS_DESTROY_ABILITY_POPUP 102
|
#define VARIOUS_DESTROY_ABILITY_POPUP 102
|
||||||
#define VARIOUS_TOTEM_BOOST 103
|
#define VARIOUS_TOTEM_BOOST 103
|
||||||
#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 104
|
#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 104
|
||||||
#define VARIOUS_MOVEEND_ITEM_EFFECTS 105
|
#define VARIOUS_MOVEEND_ITEM_EFFECTS 105
|
||||||
#define VARIOUS_TERRAIN_SEED 106
|
#define VARIOUS_TERRAIN_SEED 106
|
||||||
#define VARIOUS_MAKE_INVISIBLE 107
|
#define VARIOUS_MAKE_INVISIBLE 107
|
||||||
#define VARIOUS_ROOM_SERVICE 108
|
#define VARIOUS_ROOM_SERVICE 108
|
||||||
#define VARIOUS_JUMP_IF_TERRAIN_AFFECTED 109
|
#define VARIOUS_JUMP_IF_TERRAIN_AFFECTED 109
|
||||||
#define VARIOUS_EERIE_SPELL_PP_REDUCE 110
|
#define VARIOUS_EERIE_SPELL_PP_REDUCE 110
|
||||||
#define VARIOUS_JUMP_IF_TEAM_HEALTHY 111
|
#define VARIOUS_JUMP_IF_TEAM_HEALTHY 111
|
||||||
#define VARIOUS_TRY_HEAL_QUARTER_HP 112
|
#define VARIOUS_TRY_HEAL_QUARTER_HP 112
|
||||||
#define VARIOUS_REMOVE_TERRAIN 113
|
#define VARIOUS_REMOVE_TERRAIN 113
|
||||||
#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 114
|
#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 114
|
||||||
#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 115
|
#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 115
|
||||||
#define VARIOUS_GET_ROTOTILLER_TARGETS 116
|
#define VARIOUS_GET_ROTOTILLER_TARGETS 116
|
||||||
#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 117
|
#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 117
|
||||||
#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 118
|
#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 118
|
||||||
#define VARIOUS_CONSUME_BERRY 119
|
#define VARIOUS_CONSUME_BERRY 119
|
||||||
#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 120
|
#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 120
|
||||||
#define VARIOUS_HANDLE_PRIMAL_REVERSION 121
|
#define VARIOUS_HANDLE_PRIMAL_REVERSION 121
|
||||||
#define VARIOUS_APPLY_PLASMA_FISTS 122
|
#define VARIOUS_APPLY_PLASMA_FISTS 122
|
||||||
#define VARIOUS_JUMP_IF_SPECIES 123
|
#define VARIOUS_JUMP_IF_SPECIES 123
|
||||||
#define VARIOUS_UPDATE_ABILITY_POPUP 124
|
#define VARIOUS_UPDATE_ABILITY_POPUP 124
|
||||||
#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 125
|
#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 125
|
||||||
#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 126
|
#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 126
|
||||||
#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 127
|
#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 127
|
||||||
#define VARIOUS_PHOTON_GEYSER_CHECK 128
|
#define VARIOUS_PHOTON_GEYSER_CHECK 128
|
||||||
#define VARIOUS_SHELL_SIDE_ARM_CHECK 129
|
#define VARIOUS_SHELL_SIDE_ARM_CHECK 129
|
||||||
#define VARIOUS_TRY_NO_RETREAT 130
|
#define VARIOUS_TRY_NO_RETREAT 130
|
||||||
#define VARIOUS_TRY_TAR_SHOT 131
|
#define VARIOUS_TRY_TAR_SHOT 131
|
||||||
#define VARIOUS_CAN_TAR_SHOT_WORK 132
|
#define VARIOUS_CAN_TAR_SHOT_WORK 132
|
||||||
#define VARIOUS_CHECK_POLTERGEIST 133
|
#define VARIOUS_CHECK_POLTERGEIST 133
|
||||||
#define VARIOUS_SET_OCTOLOCK 134
|
#define VARIOUS_SET_OCTOLOCK 134
|
||||||
#define VARIOUS_CUT_1_3_HP_RAISE_STATS 135
|
#define VARIOUS_CUT_1_3_HP_RAISE_STATS 135
|
||||||
#define VARIOUS_TRY_END_NEUTRALIZING_GAS 136
|
#define VARIOUS_TRY_END_NEUTRALIZING_GAS 136
|
||||||
#define VARIOUS_JUMP_IF_UNDER_200 137
|
#define VARIOUS_JUMP_IF_UNDER_200 137
|
||||||
#define VARIOUS_SET_SKY_DROP 138
|
#define VARIOUS_SET_SKY_DROP 138
|
||||||
#define VARIOUS_CLEAR_SKY_DROP 139
|
#define VARIOUS_CLEAR_SKY_DROP 139
|
||||||
#define VARIOUS_SKY_DROP_YAWN 140
|
#define VARIOUS_SKY_DROP_YAWN 140
|
||||||
#define VARIOUS_JUMP_IF_CANT_FLING 141
|
#define VARIOUS_JUMP_IF_CANT_FLING 141
|
||||||
#define VARIOUS_JUMP_IF_HOLD_EFFECT 142
|
#define VARIOUS_JUMP_IF_HOLD_EFFECT 142
|
||||||
#define VARIOUS_CURE_CERTAIN_STATUSES 143
|
#define VARIOUS_CURE_CERTAIN_STATUSES 143
|
||||||
#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 144
|
#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 144
|
||||||
#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 145
|
#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 145
|
||||||
#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 146
|
#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 146
|
||||||
#define VARIOUS_SAVE_BATTLER_ITEM 147
|
#define VARIOUS_SAVE_BATTLER_ITEM 147
|
||||||
#define VARIOUS_RESTORE_BATTLER_ITEM 148
|
#define VARIOUS_RESTORE_BATTLER_ITEM 148
|
||||||
#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 149
|
#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 149
|
||||||
#define VARIOUS_SET_BEAK_BLAST 150
|
#define VARIOUS_SET_BEAK_BLAST 150
|
||||||
#define VARIOUS_SWAP_SIDE_STATUSES 151
|
#define VARIOUS_SWAP_SIDE_STATUSES 151
|
||||||
#define VARIOUS_SET_Z_EFFECT 152
|
#define VARIOUS_SET_Z_EFFECT 152
|
||||||
#define VARIOUS_TRY_SYMBIOSIS 153
|
#define VARIOUS_TRY_SYMBIOSIS 153
|
||||||
#define VARIOUS_CAN_TELEPORT 154
|
#define VARIOUS_CAN_TELEPORT 154
|
||||||
#define VARIOUS_GET_BATTLER_SIDE 155
|
#define VARIOUS_GET_BATTLER_SIDE 155
|
||||||
#define VARIOUS_CHECK_PARENTAL_BOND_COUNTER 156
|
#define VARIOUS_CHECK_PARENTAL_BOND_COUNTER 156
|
||||||
#define VARIOUS_SWAP_STATS 157
|
#define VARIOUS_SWAP_STATS 157
|
||||||
#define VARIOUS_JUMP_IF_ROD 158
|
#define VARIOUS_JUMP_IF_ROD 158
|
||||||
#define VARIOUS_JUMP_IF_ABSORB 159
|
#define VARIOUS_JUMP_IF_ABSORB 159
|
||||||
#define VARIOUS_JUMP_IF_MOTOR 160
|
#define VARIOUS_JUMP_IF_MOTOR 160
|
||||||
#define VARIOUS_TEATIME_INVUL 161
|
#define VARIOUS_TEATIME_INVUL 161
|
||||||
#define VARIOUS_TEATIME_TARGETS 162
|
#define VARIOUS_TEATIME_TARGETS 162
|
||||||
#define VARIOUS_TRY_WIND_RIDER_POWER 163
|
#define VARIOUS_TRY_WIND_RIDER_POWER 163
|
||||||
#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 164
|
#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 164
|
||||||
#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 165
|
#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 165
|
||||||
#define VARIOUS_JUMP_IF_EMERGENCY_EXITED 166
|
#define VARIOUS_JUMP_IF_EMERGENCY_EXITED 166
|
||||||
#define VARIOUS_STORE_HEALING_WISH 167
|
#define VARIOUS_STORE_HEALING_WISH 167
|
||||||
#define VARIOUS_HIT_SWITCH_TARGET_FAILED 168
|
#define VARIOUS_HIT_SWITCH_TARGET_FAILED 168
|
||||||
#define VARIOUS_JUMP_IF_SHELL_TRAP 169
|
#define VARIOUS_JUMP_IF_SHELL_TRAP 169
|
||||||
#define VARIOUS_TRY_REVIVAL_BLESSING 170
|
#define VARIOUS_TRY_REVIVAL_BLESSING 170
|
||||||
|
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 171
|
||||||
|
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 172
|
||||||
|
|
||||||
// Cmd_manipulatedamage
|
// Cmd_manipulatedamage
|
||||||
#define DMG_CHANGE_SIGN 0
|
#define DMG_CHANGE_SIGN 0
|
||||||
|
@ -3921,6 +3921,9 @@ static void TryDoEventsBeforeFirstTurn(void)
|
|||||||
StopCryAndClearCrySongs();
|
StopCryAndClearCrySongs();
|
||||||
BattleScriptExecute(BattleScript_ArenaTurnBeginning);
|
BattleScriptExecute(BattleScript_ArenaTurnBeginning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_BEFORE_FIRST_TURN)))
|
||||||
|
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HandleEndTurn_ContinueBattle(void)
|
static void HandleEndTurn_ContinueBattle(void)
|
||||||
@ -4013,6 +4016,16 @@ void BattleTurnPassed(void)
|
|||||||
BattleScriptExecute(BattleScript_ArenaTurnBeginning);
|
BattleScriptExecute(BattleScript_ArenaTurnBeginning);
|
||||||
else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_LAST_LOW_HP)))
|
else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_LAST_LOW_HP)))
|
||||||
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
||||||
|
else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_LAST_HALF_HP)))
|
||||||
|
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
||||||
|
else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_FIRST_CRITICAL_HIT)))
|
||||||
|
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
||||||
|
else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_FIRST_SUPER_EFFECTIVE_HIT)))
|
||||||
|
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
||||||
|
else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_FIRST_STAB_MOVE)))
|
||||||
|
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
||||||
|
else if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_PLAYER_MON_UNAFFECTED)))
|
||||||
|
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 IsRunningFromBattleImpossible(void)
|
u8 IsRunningFromBattleImpossible(void)
|
||||||
|
@ -3893,6 +3893,14 @@ struct TrainerSlide
|
|||||||
const u8 *msgLastSwitchIn;
|
const u8 *msgLastSwitchIn;
|
||||||
const u8 *msgLastLowHp;
|
const u8 *msgLastLowHp;
|
||||||
const u8 *msgFirstDown;
|
const u8 *msgFirstDown;
|
||||||
|
const u8 *msgLastHalfHp;
|
||||||
|
const u8 *msgFirstCriticalHit;
|
||||||
|
const u8 *msgFirstSuperEffectiveHit;
|
||||||
|
const u8 *msgFirstSTABMove;
|
||||||
|
const u8 *msgPlayerMonUnaffected;
|
||||||
|
const u8 *msgMegaEvolution;
|
||||||
|
const u8 *msgZMove;
|
||||||
|
const u8 *msgBeforeFirstTurn;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct TrainerSlide sTrainerSlides[] =
|
static const struct TrainerSlide sTrainerSlides[] =
|
||||||
@ -3904,6 +3912,14 @@ static const struct TrainerSlide sTrainerSlides[] =
|
|||||||
.msgLastSwitchIn = sText_AarghAlmostHadIt,
|
.msgLastSwitchIn = sText_AarghAlmostHadIt,
|
||||||
.msgLastLowHp = sText_BoxIsFull,
|
.msgLastLowHp = sText_BoxIsFull,
|
||||||
.msgFirstDown = sText_123Poof,
|
.msgFirstDown = sText_123Poof,
|
||||||
|
.msgLastHalfHp = sText_ShootSoClose,
|
||||||
|
.msgFirstCriticalHit = sText_CriticalHit,
|
||||||
|
.msgFirstSuperEffectiveHit = sText_SuperEffective,
|
||||||
|
.msgFirstSTABMove = sText_ABoosted,
|
||||||
|
.msgPlayerMonUnaffected = sText_ButNoEffect,
|
||||||
|
.msgMegaEvolution = sText_PowderExplodes,
|
||||||
|
.msgZMove = sText_Electromagnetism,
|
||||||
|
.msgBeforeFirstTurn = sText_GravityIntensified,
|
||||||
},
|
},
|
||||||
*/
|
*/
|
||||||
};
|
};
|
||||||
@ -3924,12 +3940,35 @@ static u32 GetEnemyMonCount(u32 firstId, u32 lastId, bool32 onlyAlive)
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool32 IsBattlerHpLow(u32 battler)
|
enum
|
||||||
{
|
{
|
||||||
if ((gBattleMons[battler].hp * 100) / gBattleMons[battler].maxHP < 25)
|
LESS_THAN,
|
||||||
return TRUE;
|
EQUAL,
|
||||||
else
|
GREATER_THAN,
|
||||||
return FALSE;
|
LESS_THAN_OR_EQUAL,
|
||||||
|
GREATER_THAN_OR_EQUAL,
|
||||||
|
NOT_EQUAL,
|
||||||
|
};
|
||||||
|
|
||||||
|
u32 BattlerHPPercentage(u32 battlerId, u32 operation, u32 threshold)
|
||||||
|
{
|
||||||
|
switch (operation)
|
||||||
|
{
|
||||||
|
case LESS_THAN:
|
||||||
|
return gBattleMons[battlerId].hp < (gBattleMons[battlerId].maxHP / threshold);
|
||||||
|
case EQUAL:
|
||||||
|
return gBattleMons[battlerId].hp == (gBattleMons[battlerId].maxHP / threshold);
|
||||||
|
case GREATER_THAN:
|
||||||
|
return gBattleMons[battlerId].hp > (gBattleMons[battlerId].maxHP / threshold);
|
||||||
|
case LESS_THAN_OR_EQUAL:
|
||||||
|
return gBattleMons[battlerId].hp <= (gBattleMons[battlerId].maxHP / threshold);
|
||||||
|
case GREATER_THAN_OR_EQUAL:
|
||||||
|
return gBattleMons[battlerId].hp >= (gBattleMons[battlerId].maxHP / threshold);
|
||||||
|
case NOT_EQUAL:
|
||||||
|
return gBattleMons[battlerId].hp != (gBattleMons[battlerId].maxHP / threshold);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 ShouldDoTrainerSlide(u32 battlerId, u32 which)
|
u32 ShouldDoTrainerSlide(u32 battlerId, u32 which)
|
||||||
@ -3977,7 +4016,7 @@ u32 ShouldDoTrainerSlide(u32 battlerId, u32 which)
|
|||||||
case TRAINER_SLIDE_LAST_LOW_HP:
|
case TRAINER_SLIDE_LAST_LOW_HP:
|
||||||
if (sTrainerSlides[i].msgLastLowHp != NULL
|
if (sTrainerSlides[i].msgLastLowHp != NULL
|
||||||
&& GetEnemyMonCount(firstId, lastId, TRUE) == 1
|
&& GetEnemyMonCount(firstId, lastId, TRUE) == 1
|
||||||
&& IsBattlerHpLow(battlerId)
|
&& BattlerHPPercentage(battlerId, GREATER_THAN_OR_EQUAL, 4)
|
||||||
&& !gBattleStruct->trainerSlideLowHpMsgDone)
|
&& !gBattleStruct->trainerSlideLowHpMsgDone)
|
||||||
{
|
{
|
||||||
gBattleStruct->trainerSlideLowHpMsgDone = TRUE;
|
gBattleStruct->trainerSlideLowHpMsgDone = TRUE;
|
||||||
@ -3992,6 +4031,79 @@ u32 ShouldDoTrainerSlide(u32 battlerId, u32 which)
|
|||||||
return retValue;
|
return retValue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case TRAINER_SLIDE_LAST_HALF_HP:
|
||||||
|
if (sTrainerSlides[i].msgLastHalfHp != NULL
|
||||||
|
&& GetEnemyMonCount(firstId, lastId, TRUE) == GetEnemyMonCount(firstId, lastId, FALSE) - 1
|
||||||
|
&& BattlerHPPercentage(battlerId, LESS_THAN_OR_EQUAL, 2) && BattlerHPPercentage(battlerId, GREATER_THAN, 4)
|
||||||
|
&& !gBattleStruct->trainerSlideHalfHpMsgDone)
|
||||||
|
{
|
||||||
|
gBattleStruct->trainerSlideHalfHpMsgDone = TRUE;
|
||||||
|
gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgLastHalfHp;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TRAINER_SLIDE_FIRST_CRITICAL_HIT:
|
||||||
|
if (sTrainerSlides[i].msgFirstCriticalHit != NULL && gBattleStruct->trainerSlideFirstCriticalHitMsgState == 1)
|
||||||
|
{
|
||||||
|
gBattleStruct->trainerSlideFirstCriticalHitMsgState = 2;
|
||||||
|
gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgFirstCriticalHit;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TRAINER_SLIDE_FIRST_SUPER_EFFECTIVE_HIT:
|
||||||
|
if (sTrainerSlides[i].msgFirstSuperEffectiveHit != NULL
|
||||||
|
&& gBattleStruct->trainerSlideFirstSuperEffectiveHitMsgState == 1
|
||||||
|
&& gBattleMons[battlerId].hp)
|
||||||
|
{
|
||||||
|
gBattleStruct->trainerSlideFirstSuperEffectiveHitMsgState = 2;
|
||||||
|
gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgFirstSuperEffectiveHit;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TRAINER_SLIDE_FIRST_STAB_MOVE:
|
||||||
|
if (sTrainerSlides[i].msgFirstSTABMove != NULL
|
||||||
|
&& gBattleStruct->trainerSlideFirstSTABMoveMsgState == 1
|
||||||
|
&& GetEnemyMonCount(firstId, lastId, TRUE) == GetEnemyMonCount(firstId, lastId, FALSE))
|
||||||
|
{
|
||||||
|
gBattleStruct->trainerSlideFirstSTABMoveMsgState = 2;
|
||||||
|
gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgFirstSTABMove;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TRAINER_SLIDE_PLAYER_MON_UNAFFECTED:
|
||||||
|
if (sTrainerSlides[i].msgPlayerMonUnaffected != NULL
|
||||||
|
&& gBattleStruct->trainerSlidePlayerMonUnaffectedMsgState == 1
|
||||||
|
&& GetEnemyMonCount(firstId, lastId, TRUE) == GetEnemyMonCount(firstId, lastId, FALSE))
|
||||||
|
{
|
||||||
|
gBattleStruct->trainerSlidePlayerMonUnaffectedMsgState = 2;
|
||||||
|
gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgPlayerMonUnaffected;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TRAINER_SLIDE_MEGA_EVOLUTION:
|
||||||
|
if (sTrainerSlides[i].msgMegaEvolution != NULL && !gBattleStruct->trainerSlideMegaEvolutionMsgDone)
|
||||||
|
{
|
||||||
|
gBattleStruct->trainerSlideMegaEvolutionMsgDone = TRUE;
|
||||||
|
gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgMegaEvolution;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TRAINER_SLIDE_Z_MOVE:
|
||||||
|
if (sTrainerSlides[i].msgZMove != NULL && !gBattleStruct->trainerSlideZMoveMsgDone)
|
||||||
|
{
|
||||||
|
gBattleStruct->trainerSlideZMoveMsgDone = TRUE;
|
||||||
|
gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgZMove;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TRAINER_SLIDE_BEFORE_FIRST_TURN:
|
||||||
|
if (sTrainerSlides[i].msgBeforeFirstTurn != NULL && !gBattleStruct->trainerSlideBeforeFirstTurnMsgDone)
|
||||||
|
{
|
||||||
|
gBattleStruct->trainerSlideBeforeFirstTurnMsgDone = TRUE;
|
||||||
|
gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgBeforeFirstTurn;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2568,6 +2568,11 @@ static void Cmd_critmessage(void)
|
|||||||
if (gIsCriticalHit == TRUE && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
|
if (gIsCriticalHit == TRUE && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
|
||||||
{
|
{
|
||||||
PrepareStringBattle(STRINGID_CRITICALHIT, gBattlerAttacker);
|
PrepareStringBattle(STRINGID_CRITICALHIT, gBattlerAttacker);
|
||||||
|
|
||||||
|
// Signal for the trainer slide-in system.
|
||||||
|
if (GetBattlerSide(gBattlerTarget) != B_SIDE_PLAYER && gBattleStruct->trainerSlideFirstCriticalHitMsgState != 2)
|
||||||
|
gBattleStruct->trainerSlideFirstCriticalHitMsgState = 1;
|
||||||
|
|
||||||
gBattleCommunication[MSG_DISPLAY] = 1;
|
gBattleCommunication[MSG_DISPLAY] = 1;
|
||||||
}
|
}
|
||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
@ -2647,7 +2652,13 @@ static void Cmd_resultmessage(void)
|
|||||||
{
|
{
|
||||||
case MOVE_RESULT_SUPER_EFFECTIVE:
|
case MOVE_RESULT_SUPER_EFFECTIVE:
|
||||||
if (!gMultiHitCounter) // Don't print effectiveness on each hit in a multi hit attack
|
if (!gMultiHitCounter) // Don't print effectiveness on each hit in a multi hit attack
|
||||||
|
{
|
||||||
|
// Signal for the trainer slide-in system.
|
||||||
|
if (GetBattlerSide(gBattlerTarget) != B_SIDE_PLAYER && gBattleStruct->trainerSlideFirstSuperEffectiveHitMsgState != 2)
|
||||||
|
gBattleStruct->trainerSlideFirstSuperEffectiveHitMsgState = 1;
|
||||||
|
|
||||||
stringId = STRINGID_SUPEREFFECTIVE;
|
stringId = STRINGID_SUPEREFFECTIVE;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case MOVE_RESULT_NOT_VERY_EFFECTIVE:
|
case MOVE_RESULT_NOT_VERY_EFFECTIVE:
|
||||||
if (!gMultiHitCounter)
|
if (!gMultiHitCounter)
|
||||||
@ -11185,15 +11196,6 @@ static void Cmd_various(void)
|
|||||||
AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, gActiveBattler, 0, 0, 0);
|
AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, gActiveBattler, 0, 0, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case VARIOUS_JUMP_IF_SHELL_TRAP:
|
|
||||||
{
|
|
||||||
VARIOUS_ARGS(const u8 *jumpInstr);
|
|
||||||
if (gProtectStructs[gActiveBattler].shellTrap)
|
|
||||||
gBattlescriptCurrInstr = cmd->jumpInstr;
|
|
||||||
else
|
|
||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
case VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES:
|
case VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES:
|
||||||
{
|
{
|
||||||
VARIOUS_ARGS();
|
VARIOUS_ARGS();
|
||||||
@ -11226,6 +11228,15 @@ static void Cmd_various(void)
|
|||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
case VARIOUS_JUMP_IF_SHELL_TRAP:
|
||||||
|
{
|
||||||
|
VARIOUS_ARGS(const u8 *jumpInstr);
|
||||||
|
if (gProtectStructs[gActiveBattler].shellTrap)
|
||||||
|
gBattlescriptCurrInstr = cmd->jumpInstr;
|
||||||
|
else
|
||||||
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
|
return;
|
||||||
|
}
|
||||||
case VARIOUS_TRY_REVIVAL_BLESSING:
|
case VARIOUS_TRY_REVIVAL_BLESSING:
|
||||||
{
|
{
|
||||||
VARIOUS_ARGS(const u8 *failInstr);
|
VARIOUS_ARGS(const u8 *failInstr);
|
||||||
@ -11270,6 +11281,30 @@ static void Cmd_various(void)
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
case VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE:
|
||||||
|
{
|
||||||
|
VARIOUS_ARGS();
|
||||||
|
if ((i = ShouldDoTrainerSlide(gActiveBattler, TRAINER_SLIDE_Z_MOVE)))
|
||||||
|
{
|
||||||
|
gBattleScripting.battler = gActiveBattler;
|
||||||
|
BattleScriptPush(cmd->nextInstr);
|
||||||
|
gBattlescriptCurrInstr = (i == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION:
|
||||||
|
{
|
||||||
|
VARIOUS_ARGS();
|
||||||
|
if ((i = ShouldDoTrainerSlide(gActiveBattler, TRAINER_SLIDE_MEGA_EVOLUTION)))
|
||||||
|
{
|
||||||
|
gBattleScripting.battler = gActiveBattler;
|
||||||
|
BattleScriptPush(cmd->nextInstr);
|
||||||
|
gBattlescriptCurrInstr = (i == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
} // End of switch (cmd->id)
|
} // End of switch (cmd->id)
|
||||||
|
|
||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
|
@ -1531,6 +1531,12 @@ void PrepareStringBattle(u16 stringId, u8 battler)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Signal for the trainer slide-in system.
|
||||||
|
if ((stringId == STRINGID_ITDOESNTAFFECT || stringId == STRINGID_PKMNWASNTAFFECTED || stringId == STRINGID_PKMNUNAFFECTED)
|
||||||
|
&& GetBattlerSide(gBattlerTarget) == B_SIDE_OPPONENT
|
||||||
|
&& gBattleStruct->trainerSlidePlayerMonUnaffectedMsgState != 2)
|
||||||
|
gBattleStruct->trainerSlidePlayerMonUnaffectedMsgState = 1;
|
||||||
|
|
||||||
gActiveBattler = battler;
|
gActiveBattler = battler;
|
||||||
BtlController_EmitPrintString(BUFFER_A, stringId);
|
BtlController_EmitPrintString(BUFFER_A, stringId);
|
||||||
MarkBattlerForControllerExec(gActiveBattler);
|
MarkBattlerForControllerExec(gActiveBattler);
|
||||||
@ -9848,6 +9854,10 @@ static u16 CalcTypeEffectivenessMultiplierInternal(u16 move, u8 moveType, u8 bat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Signal for the trainer slide-in system.
|
||||||
|
if (GetBattlerSide(battlerDef) != B_SIDE_PLAYER && modifier && gBattleStruct->trainerSlideFirstSTABMoveMsgState != 2)
|
||||||
|
gBattleStruct->trainerSlideFirstSTABMoveMsgState = 1;
|
||||||
|
|
||||||
return modifier;
|
return modifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user