From 0f312e3f764ac6265695c4d1dfbbb56dbb4248cc Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Fri, 9 Feb 2024 18:51:36 -0300 Subject: [PATCH 1/4] Fixed Ogerpon shiny palettes (#4165) --- .../pokemon/ogerpon/cornerstone/shiny.pal | 18 ++++++++++++ .../pokemon/ogerpon/hearthflame/shiny.pal | 19 ++++++++++++ graphics/pokemon/ogerpon/normal.pal | 2 +- graphics/pokemon/ogerpon/shiny.pal | 18 ++++++++++++ graphics/pokemon/ogerpon/wellspring/shiny.pal | 19 ++++++++++++ src/data/graphics/pokemon.h | 8 ++--- src/data/pokemon/species_info/gen_9.h | 29 +++++++++---------- 7 files changed, 93 insertions(+), 20 deletions(-) create mode 100644 graphics/pokemon/ogerpon/cornerstone/shiny.pal create mode 100644 graphics/pokemon/ogerpon/hearthflame/shiny.pal create mode 100644 graphics/pokemon/ogerpon/shiny.pal create mode 100644 graphics/pokemon/ogerpon/wellspring/shiny.pal diff --git a/graphics/pokemon/ogerpon/cornerstone/shiny.pal b/graphics/pokemon/ogerpon/cornerstone/shiny.pal new file mode 100644 index 0000000000..b4d7d15195 --- /dev/null +++ b/graphics/pokemon/ogerpon/cornerstone/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +148 209 161 +42 44 41 +21 158 7 +0 0 0 +74 76 73 +25 27 24 +61 113 53 +109 99 108 +133 139 139 +53 134 168 +55 189 227 +194 139 62 +255 197 74 +212 230 247 +124 162 56 diff --git a/graphics/pokemon/ogerpon/hearthflame/shiny.pal b/graphics/pokemon/ogerpon/hearthflame/shiny.pal new file mode 100644 index 0000000000..f874367b4b --- /dev/null +++ b/graphics/pokemon/ogerpon/hearthflame/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +148 210 164 +156 153 172 +131 28 24 +49 133 172 +213 230 246 +41 44 41 +255 198 74 +124 162 56 +16 157 0 +57 113 49 +49 190 230 +0 0 0 +164 52 49 +74 76 74 +189 137 90 +230 60 49 diff --git a/graphics/pokemon/ogerpon/normal.pal b/graphics/pokemon/ogerpon/normal.pal index 67a862587b..8f715fd815 100644 --- a/graphics/pokemon/ogerpon/normal.pal +++ b/graphics/pokemon/ogerpon/normal.pal @@ -9,7 +9,7 @@ JASC-PAL 17 106 68 21 158 7 74 76 73 -61 113 53 +61 97 53 175 216 159 251 253 250 139 99 57 diff --git a/graphics/pokemon/ogerpon/shiny.pal b/graphics/pokemon/ogerpon/shiny.pal new file mode 100644 index 0000000000..a96c55d35d --- /dev/null +++ b/graphics/pokemon/ogerpon/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +148 209 161 +42 44 41 +0 1 0 +27 70 15 +0 164 153 +17 106 68 +21 158 7 +74 76 73 +61 97 53 +175 216 159 +251 253 250 +139 99 57 +124 162 56 +219 157 92 +83 133 90 diff --git a/graphics/pokemon/ogerpon/wellspring/shiny.pal b/graphics/pokemon/ogerpon/wellspring/shiny.pal new file mode 100644 index 0000000000..bca722c95d --- /dev/null +++ b/graphics/pokemon/ogerpon/wellspring/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +148 209 161 +42 44 41 +21 158 7 +74 76 73 +0 0 0 +61 113 53 +11 64 121 +15 90 170 +0 126 229 +53 134 168 +71 85 100 +55 189 227 +212 230 247 +124 162 56 +169 122 74 +152 155 171 diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 68dc952952..ef66ca981c 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -10863,26 +10863,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonFrontPic_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/front.4bpp.lz"); const u32 gMonPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/normal.gbapal.lz"); const u32 gMonBackPic_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/back.4bpp.lz"); - // const u32 gMonShinyPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/shiny.gbapal.lz"); + const u32 gMonShinyPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/shiny.gbapal.lz"); const u8 gMonIcon_OgerponTealMask[] = INCBIN_U8("graphics/pokemon/ogerpon/icon.4bpp"); // const u8 gMonFootprint_Ogerpon[] = INCBIN_U8("graphics/pokemon/ogerpon/footprint.1bpp"); const u32 gMonFrontPic_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/front.4bpp.lz"); const u32 gMonPalette_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/normal.gbapal.lz"); const u32 gMonBackPic_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/back.4bpp.lz"); - // const u32 gMonShinyPalette_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/shiny.gbapal.lz"); + const u32 gMonShinyPalette_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/shiny.gbapal.lz"); // const u8 gMonIcon_OgerponWellspringMask[] = INCBIN_U8("graphics/pokemon/ogerpon/wellspring/icon.4bpp"); const u32 gMonFrontPic_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/front.4bpp.lz"); const u32 gMonPalette_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/normal.gbapal.lz"); const u32 gMonBackPic_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/back.4bpp.lz"); - // const u32 gMonShinyPalette_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/shiny.gbapal.lz"); + const u32 gMonShinyPalette_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/shiny.gbapal.lz"); // const u8 gMonIcon_OgerponHearthflameMask[] = INCBIN_U8("graphics/pokemon/ogerpon/hearthflame/icon.4bpp"); const u32 gMonFrontPic_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/front.4bpp.lz"); const u32 gMonPalette_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/normal.gbapal.lz"); const u32 gMonBackPic_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/back.4bpp.lz"); - // const u32 gMonShinyPalette_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/shiny.gbapal.lz"); + const u32 gMonShinyPalette_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/shiny.gbapal.lz"); // const u8 gMonIcon_OgerponCornerstoneMask[] = INCBIN_U8("graphics/pokemon/ogerpon/cornerstone/icon.4bpp"); // const u32 gMonFrontPic_OgerponTealMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/tera/front.4bpp.lz"); diff --git a/src/data/pokemon/species_info/gen_9.h b/src/data/pokemon/species_info/gen_9.h index 7a45fc66e4..e4174818fe 100644 --- a/src/data/pokemon/species_info/gen_9.h +++ b/src/data/pokemon/species_info/gen_9.h @@ -5367,7 +5367,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = #endif //P_FAMILY_FEZANDIPITI #if P_FAMILY_OGERPON -#define OGERPON_SPECIES_INFO(Form, type, ability, color, tera) \ +#define OGERPON_SPECIES_INFO(Form, type, ability, color) \ { \ .baseHP = 80, \ .baseAttack = 120, \ @@ -5400,30 +5400,29 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FRONT_PIC(Ogerpon##Form, 64, 64), \ .frontPicYOffset = 0, \ .frontAnimFrames = sAnims_Ogerpon, \ + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ BACK_PIC(Ogerpon##Form, 64, 64), \ .backPicYOffset = 16, \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ .palette = gMonPalette_Ogerpon##Form, \ - ICON(OgerponTealMask, 1), \ + .shinyPalette = gMonShinyPalette_Ogerpon##Form, \ + ICON(OgerponTealMask, 1), /* Each form should have its own icon */ \ + /*.footprint = gMonFootprint_Ogerpon,*/ \ LEARNSETS(Ogerpon), \ .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ .formChangeTable = sOgerponFormChangeTable, \ .isLegendary = TRUE, \ } - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backAnimId = BACK_ANIM_NONE, - //.shinyPalette = gMonShinyPalette_OgerponTealMask, - //ICON(Ogerpon##Form##, 1), - //.footprint = gMonFootprint_Ogerpon, - [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, FALSE), - [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, FALSE), - [SPECIES_OGERPON_HEARTHFLAME_MASK] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, FALSE), - [SPECIES_OGERPON_CORNERSTONE_MASK] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, FALSE), + [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN), + [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE), + [SPECIES_OGERPON_HEARTHFLAME_MASK] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED), + [SPECIES_OGERPON_CORNERSTONE_MASK] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY), #if P_TERA_FORMS - [SPECIES_OGERPON_TEAL_MASK_TERA] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL, BODY_COLOR_GREEN, TRUE), - [SPECIES_OGERPON_WELLSPRING_MASK_TERA] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING, BODY_COLOR_BLUE, TRUE), - [SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME, BODY_COLOR_RED, TRUE), - [SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE, BODY_COLOR_GRAY, TRUE), + [SPECIES_OGERPON_TEAL_MASK_TERA] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL, BODY_COLOR_GREEN), + [SPECIES_OGERPON_WELLSPRING_MASK_TERA] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING, BODY_COLOR_BLUE), + [SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME, BODY_COLOR_RED), + [SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE, BODY_COLOR_GRAY), #endif //P_TERA_FORMS #endif //P_FAMILY_OGERPON From 8b871b7eb4328dbabb627c354663452f739888a4 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sat, 10 Feb 2024 13:13:46 -0300 Subject: [PATCH 2/4] Fixed Disguise not ending the battle in the correct form (#4167) * Fixed Disguise not ending the battle in the correct form * Added TODO comments --- src/battle_script_commands.c | 8 ++++++++ src/battle_util.c | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index cb33eaa1e8..8d4df643c8 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1213,6 +1213,7 @@ static bool32 NoTargetPresent(u8 battler, u32 move) return FALSE; } +// TODO: Convert this to a proper FORM_CHANGE type. static bool32 TryAegiFormChange(void) { // Only Aegislash with Stance Change can transform, transformed mons cannot. @@ -2315,6 +2316,10 @@ static void Cmd_datahpupdate(void) } else if (DoesDisguiseBlockMove(gBattlerAttacker, battler, gCurrentMove)) { + // TODO: Convert this to a proper FORM_CHANGE type. + u32 side = GetBattlerSide(battler); + if (gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] == SPECIES_NONE) + gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] = gBattleMons[battler].species; gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED; BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_TargetFormChange; @@ -2491,6 +2496,7 @@ static void Cmd_resultmessage(void) if (gBattleControllerExecFlags) return; + // TODO: Convert this to a proper FORM_CHANGE type. // Do Ice Face form change which was set up in Cmd_adjustdamage. if (gBattleResources->flags->flags[gBattlerTarget] & RESOURCE_FLAG_ICE_FACE) { @@ -10113,6 +10119,7 @@ static void Cmd_various(void) } return; } + // TODO: Convert this to a proper FORM_CHANGE type. case VARIOUS_TRY_ACTIVATE_BATTLE_BOND: { VARIOUS_ARGS(); @@ -16231,6 +16238,7 @@ void BS_SetGlaiveRush(void) gBattlescriptCurrInstr = cmd->nextInstr; } +// TODO: Convert this to a proper FORM_CHANGE type. void BS_TryRelicSong(void) { NATIVE_ARGS(); diff --git a/src/battle_util.c b/src/battle_util.c index cbc5898f91..683aff1df8 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5667,6 +5667,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && TARGET_TURN_DAMAGED && IsBattlerAlive(battler)) { + // TODO: Convert this to a proper FORM_CHANGE type. if (gBattleMons[gBattlerTarget].species == SPECIES_CRAMORANT_GORGING) { gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; @@ -6109,6 +6110,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) && gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)]) { + // TODO: Convert this to a proper FORM_CHANGE type. gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)] = FALSE; gBattleMons[battler].species = SPECIES_EISCUE_ICE_FACE; BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3); From b7d77099b524c818619e8a7e6f4432b93381109a Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:18:29 +0100 Subject: [PATCH 3/4] Fixes Opportunist accumulating stat changes (#4168) * Fixes Opportunist accumulating stat changes * move memset to TurnValuesCleanUp * Update test/battle/ability/opportunist.c --------- Co-authored-by: Bassoonian --- src/battle_main.c | 1 + test/battle/ability/opportunist.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/battle_main.c b/src/battle_main.c index 67f2cf1737..99ab2a87a1 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4914,6 +4914,7 @@ static void TurnValuesCleanUp(bool8 var0) else { memset(&gProtectStructs[i], 0, sizeof(struct ProtectStruct)); + memset(&gQueuedStatBoosts[i], 0, sizeof(gQueuedStatBoosts)); if (gDisableStructs[i].isFirstTurn) gDisableStructs[i].isFirstTurn--; diff --git a/test/battle/ability/opportunist.c b/test/battle/ability/opportunist.c index 79c6649f59..60e127c708 100644 --- a/test/battle/ability/opportunist.c +++ b/test/battle/ability/opportunist.c @@ -101,6 +101,24 @@ DOUBLE_BATTLE_TEST("Opportunist raises Attack only once when partner has Intimid } } +SINGLE_BATTLE_TEST("Opportunist does not accumulate opposing mon's stat changes") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ESPATHRA) { Ability(ABILITY_OPPORTUNIST); } + } WHEN { + TURN { MOVE(player, MOVE_SWORDS_DANCE); } + TURN { MOVE(player, MOVE_SWORDS_DANCE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, player); + ABILITY_POPUP(opponent, ABILITY_OPPORTUNIST); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, player); + ABILITY_POPUP(opponent, ABILITY_OPPORTUNIST); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 4); + } +} + TO_DO_BATTLE_TEST("Opportunist doesn't copy ally stat increases"); TO_DO_BATTLE_TEST("Opportunist doesn't copy foe stat increases gained via Opportunist"); TO_DO_BATTLE_TEST("Opportunist copies foe stat increased gained via Swagger and Flatter"); From b4fa0b1bf0011f5f5b243e7d229e8db2cc0cc881 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sat, 10 Feb 2024 18:43:14 +0100 Subject: [PATCH 4/4] Clean up space/tabs difference (#4163) --- data/battle_anim_scripts.s | 14 +- data/battle_scripts_1.s | 12 +- data/battle_scripts_2.s | 370 ++++++++++++++++++------------------- 3 files changed, 198 insertions(+), 198 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 4cf2bfdc13..11962b283c 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -9541,7 +9541,7 @@ Move_EERIE_IMPULSE:: createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 0 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 1 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 0 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 2 + createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 32, 30, 0, 40, 2 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 48, 30, 0, 40, 0 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 48, 30, 0, 40, 1 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 48, 30, 0, 40, 0 @@ -10206,7 +10206,7 @@ Move_THOUSAND_WAVES:: waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @I placed this one here, because it ruins the teleport animation loopsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x3, 0x15 - call ThousandWavesRecover + call ThousandWavesRecover createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0xfff6, 0xd delay 0x3 createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffdd, 0x8, 0xd @@ -10434,7 +10434,7 @@ Move_ORIGIN_PULSE:: delay 0x10 createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8 playsewithpan SE_INTRO_BLAST, SOUND_PAN_ATTACKER - waitforvisualfinish + waitforvisualfinish createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x0 createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x2b createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x55 @@ -12017,7 +12017,7 @@ Move_CORE_ENFORCER:: delay 0x1 createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfffa, 0xffe2, 0x1, 0x3 delay 0x1 - createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xffff, 0xffe2, 0x1, 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xffff, 0xffe2, 0x1, 0x3 delay 0x1 createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x5, 0xffe2, 0x1, 0x3 delay 0x1 @@ -12060,7 +12060,7 @@ Move_CORE_ENFORCER:: createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x5 createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x7, 0x3, 0x1, 0x3 delay 0x1 - createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xC, 0x3, 0x1, 0x3 + createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xC, 0x3, 0x1, 0x3 delay 0x1 createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x11, 0x3, 0x1, 0x3 delay 0x1 @@ -13501,7 +13501,7 @@ Move_PHOTON_GEYSER:: unloadspritegfx ANIM_TAG_YELLOW_BALL @confuse ray (for zap cannon) unloadspritegfx ANIM_TAG_BLACK_BALL_2 @zap cannon unloadspritegfx ANIM_TAG_AIR_WAVE_2 @white/gray color - @Shoot beam to the sky + @Shoot beam to the sky loadspritegfx ANIM_TAG_STRAIGHT_BEAM createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x6, 0x0, 0x10, 0x43FF @Light yellow createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 96, 1 @@ -13623,7 +13623,7 @@ Move_SNIPE_SHOT:: loadspritegfx ANIM_TAG_LEER createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 16, 0 @;Black waitforvisualfinish - createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 0x18, -12 + createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 0x18, -12 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish delay 0x20 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index b721d72202..24dfec1ff8 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -779,7 +779,7 @@ BattleScript_EffectAttackUpUserAlly_TryAlly: BattleScript_EffectAttackUpUserAlly_End: goto BattleScript_MoveEnd BattleScript_EffectAttackUpUserAlly_TryAlly_: - jumpifability BS_ATTACKER_PARTNER, ABILITY_SOUNDPROOF, BattleScript_EffectAttackUpUserAlly_TryAllyBlocked + jumpifability BS_ATTACKER_PARTNER, ABILITY_SOUNDPROOF, BattleScript_EffectAttackUpUserAlly_TryAllyBlocked setstatchanger STAT_ATK, 1, FALSE statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_EffectAttackUpUserAlly_End jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectAttackUpUserAlly_AllyAnim @@ -2757,8 +2757,8 @@ BattleScript_EffectHealPulse: attackcanceler attackstring ppreduce - jumpifstatus3 BS_ATTACKER, STATUS3_HEAL_BLOCK, BattleScript_MoveUsedHealBlockPrevents @ stops pollen puff - jumpifstatus3 BS_TARGET, STATUS3_HEAL_BLOCK, BattleScript_MoveUsedHealBlockPrevents + jumpifstatus3 BS_ATTACKER, STATUS3_HEAL_BLOCK, BattleScript_MoveUsedHealBlockPrevents @ stops pollen puff + jumpifstatus3 BS_TARGET, STATUS3_HEAL_BLOCK, BattleScript_MoveUsedHealBlockPrevents accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON jumpifsubstituteblocks BattleScript_ButItFailed tryhealpulse BattleScript_AlreadyAtFullHp @@ -6020,7 +6020,7 @@ BattleScript_EffectYawn:: setyawn BattleScript_ButItFailed attackanimation waitanimation - BattleScript_EffectYawnSuccess:: +BattleScript_EffectYawnSuccess:: printstring STRINGID_PKMNWASMADEDROWSY waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -8669,7 +8669,7 @@ BattleScript_TryAdrenalineOrbRet: BattleScript_IntimidateActivates:: showabilitypopup BS_ATTACKER - copybyte sSAVED_BATTLER, gBattlerTarget + copybyte sSAVED_BATTLER, gBattlerTarget pause B_WAIT_TIME_LONG destroyabilitypopup setbyte gBattlerTarget, 0 @@ -8697,7 +8697,7 @@ BattleScript_IntimidateLoopIncrement: BattleScript_IntimidateEnd: copybyte sBATTLER, gBattlerAttacker destroyabilitypopup - copybyte gBattlerTarget, sSAVED_BATTLER + copybyte gBattlerTarget, sSAVED_BATTLER pause B_WAIT_TIME_MED end3 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 6895be7966..7a610a88b3 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -6,260 +6,260 @@ #include "constants/moves.h" #include "constants/songs.h" #include "constants/game_stat.h" - .include "asm/macros.inc" - .include "asm/macros/battle_script.inc" - .include "constants/constants.inc" + .include "asm/macros.inc" + .include "asm/macros/battle_script.inc" + .include "constants/constants.inc" - .section script_data, "aw", %progbits + .section script_data, "aw", %progbits - .align 2 + .align 2 gBattlescriptsForUsingItem:: - .4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_RESTORE_HP - .4byte BattleScript_ItemCureStatus @ EFFECT_ITEM_CURE_STATUS - .4byte BattleScript_ItemHealAndCureStatus @ EFFECT_ITEM_HEAL_AND_CURE_STATUS - .4byte BattleScript_ItemIncreaseStat @ EFFECT_ITEM_INCREASE_STAT - .4byte BattleScript_ItemSetMist @ EFFECT_ITEM_SET_MIST - .4byte BattleScript_ItemSetFocusEnergy @ EFFECT_ITEM_SET_FOCUS_ENERGY - .4byte BattleScript_RunByUsingItem @ EFFECT_ITEM_ESCAPE - .4byte BattleScript_BallThrow @ EFFECT_ITEM_THROW_BALL - .4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_REVIVE - .4byte BattleScript_ItemRestorePP @ EFFECT_ITEM_RESTORE_PP - .4byte BattleScript_ItemIncreaseAllStats @ EFFECT_ITEM_INCREASE_ALL_STATS + .4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_RESTORE_HP + .4byte BattleScript_ItemCureStatus @ EFFECT_ITEM_CURE_STATUS + .4byte BattleScript_ItemHealAndCureStatus @ EFFECT_ITEM_HEAL_AND_CURE_STATUS + .4byte BattleScript_ItemIncreaseStat @ EFFECT_ITEM_INCREASE_STAT + .4byte BattleScript_ItemSetMist @ EFFECT_ITEM_SET_MIST + .4byte BattleScript_ItemSetFocusEnergy @ EFFECT_ITEM_SET_FOCUS_ENERGY + .4byte BattleScript_RunByUsingItem @ EFFECT_ITEM_ESCAPE + .4byte BattleScript_BallThrow @ EFFECT_ITEM_THROW_BALL + .4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_REVIVE + .4byte BattleScript_ItemRestorePP @ EFFECT_ITEM_RESTORE_PP + .4byte BattleScript_ItemIncreaseAllStats @ EFFECT_ITEM_INCREASE_ALL_STATS - .align 2 + .align 2 gBattlescriptsForSafariActions:: - .4byte BattleScript_ActionWatchesCarefully - .4byte BattleScript_ActionGetNear - .4byte BattleScript_ActionThrowPokeblock - .4byte BattleScript_ActionWallyThrow + .4byte BattleScript_ActionWatchesCarefully + .4byte BattleScript_ActionGetNear + .4byte BattleScript_ActionThrowPokeblock + .4byte BattleScript_ActionWallyThrow BattleScript_ItemEnd: - end + end BattleScript_UseItemMessage: - printstring STRINGID_EMPTYSTRING3 - pause B_WAIT_TIME_MED - playse SE_USE_ITEM - getbattlerside BS_ATTACKER - copybyte cMULTISTRING_CHOOSER, gBattleCommunication - printfromtable gTrainerUsedItemStringIds - waitmessage B_WAIT_TIME_LONG - return + printstring STRINGID_EMPTYSTRING3 + pause B_WAIT_TIME_MED + playse SE_USE_ITEM + getbattlerside BS_ATTACKER + copybyte cMULTISTRING_CHOOSER, gBattleCommunication + printfromtable gTrainerUsedItemStringIds + waitmessage B_WAIT_TIME_LONG + return BattleScript_ItemRestoreHPRet: - bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT - orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE - healthbarupdate BS_SCRIPTING - datahpupdate BS_SCRIPTING - printstring STRINGID_ITEMRESTOREDSPECIESHEALTH - waitmessage B_WAIT_TIME_LONG - return + bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_SCRIPTING + datahpupdate BS_SCRIPTING + printstring STRINGID_ITEMRESTOREDSPECIESHEALTH + waitmessage B_WAIT_TIME_LONG + return BattleScript_ItemRestoreHP:: - call BattleScript_UseItemMessage - itemrestorehp BattleScript_ItemRestoreHPEnd - call BattleScript_ItemRestoreHPRet + call BattleScript_UseItemMessage + itemrestorehp BattleScript_ItemRestoreHPEnd + call BattleScript_ItemRestoreHPRet BattleScript_ItemRestoreHPEnd: - end + end BattleScript_ItemRestoreHP_Party:: - jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler - bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT - printstring STRINGID_ITEMRESTOREDSPECIESHEALTH - waitmessage B_WAIT_TIME_LONG - end + jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler + bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT + printstring STRINGID_ITEMRESTOREDSPECIESHEALTH + waitmessage B_WAIT_TIME_LONG + end BattleScript_ItemRestoreHP_SendOutRevivedBattler: - switchinanim BS_SCRIPTING, FALSE - waitstate - switchineffects BS_SCRIPTING - end + switchinanim BS_SCRIPTING, FALSE + waitstate + switchineffects BS_SCRIPTING + end BattleScript_ItemCureStatus:: - call BattleScript_UseItemMessage + call BattleScript_UseItemMessage BattleScript_ItemCureStatusAfterItemMsg: - itemcurestatus BattleScript_ItemCureStatusEnd - updatestatusicon BS_SCRIPTING - printstring STRINGID_ITEMCUREDSPECIESSTATUS - waitmessage B_WAIT_TIME_LONG + itemcurestatus BattleScript_ItemCureStatusEnd + updatestatusicon BS_SCRIPTING + printstring STRINGID_ITEMCUREDSPECIESSTATUS + waitmessage B_WAIT_TIME_LONG BattleScript_ItemCureStatusEnd: - end + end BattleScript_ItemHealAndCureStatus:: - call BattleScript_UseItemMessage - itemrestorehp BattleScript_ItemCureStatusAfterItemMsg - call BattleScript_ItemRestoreHPRet - goto BattleScript_ItemCureStatusAfterItemMsg + call BattleScript_UseItemMessage + itemrestorehp BattleScript_ItemCureStatusAfterItemMsg + call BattleScript_ItemRestoreHPRet + goto BattleScript_ItemCureStatusAfterItemMsg BattleScript_ItemIncreaseStat:: - call BattleScript_UseItemMessage - itemincreasestat - statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_ItemEnd - setgraphicalstatchangevalues - playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 - printfromtable gStatUpStringIds - waitmessage B_WAIT_TIME_LONG - end + call BattleScript_UseItemMessage + itemincreasestat + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_ItemEnd + setgraphicalstatchangevalues + playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG + end BattleScript_ItemSetMist:: - call BattleScript_UseItemMessage - setmist - playmoveanimation BS_ATTACKER, MOVE_MIST - waitanimation - printfromtable gMistUsedStringIds - waitmessage B_WAIT_TIME_LONG - end + call BattleScript_UseItemMessage + setmist + playmoveanimation BS_ATTACKER, MOVE_MIST + waitanimation + printfromtable gMistUsedStringIds + waitmessage B_WAIT_TIME_LONG + end BattleScript_ItemSetFocusEnergy:: - call BattleScript_UseItemMessage - jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed - setfocusenergy - playmoveanimation BS_ATTACKER, MOVE_FOCUS_ENERGY - waitanimation - copybyte sBATTLER, gBattlerAttacker - printstring STRINGID_PKMNUSEDXTOGETPUMPED - waitmessage B_WAIT_TIME_LONG - end + call BattleScript_UseItemMessage + jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed + setfocusenergy + playmoveanimation BS_ATTACKER, MOVE_FOCUS_ENERGY + waitanimation + copybyte sBATTLER, gBattlerAttacker + printstring STRINGID_PKMNUSEDXTOGETPUMPED + waitmessage B_WAIT_TIME_LONG + end BattleScript_ItemRestorePP:: - call BattleScript_UseItemMessage - itemrestorepp - printstring STRINGID_ITEMRESTOREDSPECIESPP - waitmessage B_WAIT_TIME_LONG - end + call BattleScript_UseItemMessage + itemrestorepp + printstring STRINGID_ITEMRESTOREDSPECIESPP + waitmessage B_WAIT_TIME_LONG + end BattleScript_ItemIncreaseAllStats:: - call BattleScript_UseItemMessage - call BattleScript_AllStatsUp - end + call BattleScript_UseItemMessage + call BattleScript_AllStatsUp + end BattleScript_BallThrow:: - jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally - printstring STRINGID_PLAYERUSEDITEM - handleballthrow + jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally + printstring STRINGID_PLAYERUSEDITEM + handleballthrow BattleScript_BallThrowByWally:: - printstring STRINGID_WALLYUSEDITEM - handleballthrow + printstring STRINGID_WALLYUSEDITEM + handleballthrow BattleScript_SafariBallThrow:: - printstring STRINGID_PLAYERUSEDITEM - updatestatusicon BS_ATTACKER - handleballthrow + printstring STRINGID_PLAYERUSEDITEM + updatestatusicon BS_ATTACKER + handleballthrow BattleScript_SuccessBallThrow:: - setbyte sMON_CAUGHT, TRUE - incrementgamestat GAME_STAT_POKEMON_CAPTURES + setbyte sMON_CAUGHT, TRUE + incrementgamestat GAME_STAT_POKEMON_CAPTURES BattleScript_PrintCaughtMonInfo:: - printstring STRINGID_GOTCHAPKMNCAUGHTPLAYER - jumpifbyte CMP_NOT_EQUAL, sEXP_CATCH, TRUE, BattleScript_TryPrintCaughtMonInfo - setbyte sGIVEEXP_STATE, 0 - getexp BS_TARGET - sethword gBattle_BG2_X, 0 + printstring STRINGID_GOTCHAPKMNCAUGHTPLAYER + jumpifbyte CMP_NOT_EQUAL, sEXP_CATCH, TRUE, BattleScript_TryPrintCaughtMonInfo + setbyte sGIVEEXP_STATE, 0 + getexp BS_TARGET + sethword gBattle_BG2_X, 0 BattleScript_TryPrintCaughtMonInfo: - jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_GiveCaughtMonEnd - trysetcaughtmondexflags BattleScript_TryNicknameCaughtMon - printstring STRINGID_PKMNDATAADDEDTODEX - waitstate - setbyte gBattleCommunication, 0 - displaydexinfo + jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_GiveCaughtMonEnd + trysetcaughtmondexflags BattleScript_TryNicknameCaughtMon + printstring STRINGID_PKMNDATAADDEDTODEX + waitstate + setbyte gBattleCommunication, 0 + displaydexinfo BattleScript_TryNicknameCaughtMon:: - printstring STRINGID_GIVENICKNAMECAPTURED - waitstate - setbyte gBattleCommunication, 0 - trygivecaughtmonnick BattleScript_GiveCaughtMonEnd - givecaughtmon - printfromtable gCaughtMonStringIds - waitmessage B_WAIT_TIME_LONG - goto BattleScript_SuccessBallThrowEnd + printstring STRINGID_GIVENICKNAMECAPTURED + waitstate + setbyte gBattleCommunication, 0 + trygivecaughtmonnick BattleScript_GiveCaughtMonEnd + givecaughtmon + printfromtable gCaughtMonStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_SuccessBallThrowEnd BattleScript_GiveCaughtMonEnd:: - givecaughtmon + givecaughtmon BattleScript_SuccessBallThrowEnd:: - setbyte gBattleOutcome, B_OUTCOME_CAUGHT - finishturn + setbyte gBattleOutcome, B_OUTCOME_CAUGHT + finishturn BattleScript_WallyBallThrow:: - printstring STRINGID_GOTCHAPKMNCAUGHTWALLY - setbyte gBattleOutcome, B_OUTCOME_CAUGHT - finishturn + printstring STRINGID_GOTCHAPKMNCAUGHTWALLY + setbyte gBattleOutcome, B_OUTCOME_CAUGHT + finishturn BattleScript_ShakeBallThrow:: - printfromtable gBallEscapeStringIds - waitmessage B_WAIT_TIME_LONG - jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd - jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0, BattleScript_ShakeBallThrowEnd - printstring STRINGID_OUTOFSAFARIBALLS - waitmessage B_WAIT_TIME_LONG - setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS + printfromtable gBallEscapeStringIds + waitmessage B_WAIT_TIME_LONG + jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd + jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0, BattleScript_ShakeBallThrowEnd + printstring STRINGID_OUTOFSAFARIBALLS + waitmessage B_WAIT_TIME_LONG + setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS BattleScript_ShakeBallThrowEnd:: - finishaction + finishaction BattleScript_TrainerBallBlock:: - waitmessage B_WAIT_TIME_LONG - printstring STRINGID_TRAINERBLOCKEDBALL - waitmessage B_WAIT_TIME_LONG - printstring STRINGID_DONTBEATHIEF - waitmessage B_WAIT_TIME_LONG - finishaction + waitmessage B_WAIT_TIME_LONG + printstring STRINGID_TRAINERBLOCKEDBALL + waitmessage B_WAIT_TIME_LONG + printstring STRINGID_DONTBEATHIEF + waitmessage B_WAIT_TIME_LONG + finishaction BattleScript_RunByUsingItem:: - playse SE_FLEE - setbyte gBattleOutcome, B_OUTCOME_RAN - finishturn + playse SE_FLEE + setbyte gBattleOutcome, B_OUTCOME_RAN + finishturn BattleScript_ActionWatchesCarefully: - printstring STRINGID_PKMNWATCHINGCAREFULLY - waitmessage B_WAIT_TIME_LONG - end2 + printstring STRINGID_PKMNWATCHINGCAREFULLY + waitmessage B_WAIT_TIME_LONG + end2 BattleScript_ActionGetNear: - printfromtable gSafariGetNearStringIds - waitmessage B_WAIT_TIME_LONG - end2 + printfromtable gSafariGetNearStringIds + waitmessage B_WAIT_TIME_LONG + end2 BattleScript_ActionThrowPokeblock: - printstring STRINGID_THREWPOKEBLOCKATPKMN - waitmessage B_WAIT_TIME_LONG - playanimation BS_ATTACKER, B_ANIM_POKEBLOCK_THROW, NULL - printfromtable gSafariPokeblockResultStringIds - waitmessage B_WAIT_TIME_LONG - end2 + printstring STRINGID_THREWPOKEBLOCKATPKMN + waitmessage B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_POKEBLOCK_THROW, NULL + printfromtable gSafariPokeblockResultStringIds + waitmessage B_WAIT_TIME_LONG + end2 BattleScript_ActionWallyThrow: - printstring STRINGID_RETURNMON - waitmessage B_WAIT_TIME_LONG - returnatktoball - waitstate - trainerslidein BS_TARGET - waitstate - printstring STRINGID_YOUTHROWABALLNOWRIGHT - waitmessage B_WAIT_TIME_LONG - end2 + printstring STRINGID_RETURNMON + waitmessage B_WAIT_TIME_LONG + returnatktoball + waitstate + trainerslidein BS_TARGET + waitstate + printstring STRINGID_YOUTHROWABALLNOWRIGHT + waitmessage B_WAIT_TIME_LONG + end2 BattleScript_TrainerASlideMsgRet:: - handletrainerslidemsg BS_SCRIPTING, 0 - trainerslidein B_POSITION_OPPONENT_LEFT - handletrainerslidemsg BS_SCRIPTING, 1 - waitstate - trainerslideout B_POSITION_OPPONENT_LEFT - waitstate - handletrainerslidemsg BS_SCRIPTING, 2 - return + handletrainerslidemsg BS_SCRIPTING, 0 + trainerslidein B_POSITION_OPPONENT_LEFT + handletrainerslidemsg BS_SCRIPTING, 1 + waitstate + trainerslideout B_POSITION_OPPONENT_LEFT + waitstate + handletrainerslidemsg BS_SCRIPTING, 2 + return BattleScript_TrainerASlideMsgEnd2:: - call BattleScript_TrainerASlideMsgRet - end2 + call BattleScript_TrainerASlideMsgRet + end2 BattleScript_TrainerBSlideMsgRet:: - handletrainerslidemsg BS_SCRIPTING, 0 - trainerslidein B_POSITION_OPPONENT_RIGHT - handletrainerslidemsg BS_SCRIPTING, 1 - waitstate - trainerslideout B_POSITION_OPPONENT_RIGHT - waitstate - handletrainerslidemsg BS_SCRIPTING, 2 - return + handletrainerslidemsg BS_SCRIPTING, 0 + trainerslidein B_POSITION_OPPONENT_RIGHT + handletrainerslidemsg BS_SCRIPTING, 1 + waitstate + trainerslideout B_POSITION_OPPONENT_RIGHT + waitstate + handletrainerslidemsg BS_SCRIPTING, 2 + return BattleScript_TrainerBSlideMsgEnd2:: - call BattleScript_TrainerBSlideMsgRet - end2 + call BattleScript_TrainerBSlideMsgRet + end2