From 8427d47ea5616410560be573f7280125e595c674 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 11 Jan 2025 09:36:00 -0300 Subject: [PATCH 1/8] Fixed Gimmick tests failing when running first (#6001) --- test/battle/gimmick/dynamax.c | 2 -- test/test_runner_battle.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c index 0e3ae532bf..91773b01bc 100644 --- a/test/battle/gimmick/dynamax.c +++ b/test/battle/gimmick/dynamax.c @@ -458,7 +458,6 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves deal 1/4 damage through protect", s16 da } } -// This test will fail if it's the first test a thread runs SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't bypass Max Guard") { GIVEN { @@ -1536,7 +1535,6 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Moxie clones can be triggered by Max Moves faintin } } -// This test will fail if it's the first test a thread runs SINGLE_BATTLE_TEST("(DYNAMAX) Max Attacks prints a message when hitting into Max Guard") { GIVEN { diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 9484e6df6c..5340ddb4c9 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -2117,7 +2117,7 @@ void MoveGetIdAndSlot(s32 battlerId, struct MoveContext *ctx, u32 *moveId, u32 * u32 item = GetMonData(mon, MON_DATA_HELD_ITEM); u32 holdEffect = ItemId_GetHoldEffect(item); u32 species = GetMonData(mon, MON_DATA_SPECIES); - u32 side = GetBattlerSide(battlerId); + u32 side = battlerId & BIT_SIDE; // Check invalid item usage. INVALID_IF(ctx->gimmick == GIMMICK_MEGA && holdEffect != HOLD_EFFECT_MEGA_STONE && species != SPECIES_RAYQUAZA, "Cannot Mega Evolve without a Mega Stone"); From 846734e894b3b48ae46886ebecdde1636de8abc6 Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Sat, 11 Jan 2025 21:53:15 +0100 Subject: [PATCH 2/8] Ported Makefile fix from upcoming (#6007) Co-authored-by: Hedara --- Makefile | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 0d2ef1d240..5f806e45ec 100644 --- a/Makefile +++ b/Makefile @@ -29,9 +29,6 @@ endif ifeq (debug,$(MAKECMDGOALS)) DEBUG := 1 endif -ifeq ($(TESTELF),$(MAKECMDGOALS)) - TEST := 1 -endif # Default make rule all: rom @@ -75,6 +72,9 @@ HEADLESSELF = $(ROM_NAME:.gba=-test-headless.elf) # Pick our active variables ROM := $(ROM_NAME) +ifeq ($(TESTELF),$(MAKECMDGOALS)) + TEST := 1 +endif ifeq ($(TEST), 0) OBJ_DIR := $(OBJ_DIR_NAME) else @@ -83,9 +83,6 @@ endif ifeq ($(DEBUG),1) OBJ_DIR := $(OBJ_DIR_NAME_DEBUG) endif -ifeq ($(TESTELF),$(MAKECMDGOALS)) - TEST := 1 -endif ELF := $(ROM:.gba=.elf) MAP := $(ROM:.gba=.map) SYM := $(ROM:.gba=.sym) @@ -180,7 +177,7 @@ MAKEFLAGS += --no-print-directory # Delete files that weren't built properly .DELETE_ON_ERROR: -RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidycheck generated clean-generated $(TESTELF) +RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidycheck generated clean-generated .PHONY: all rom agbcc modern compare check debug .PHONY: $(RULES_NO_SCAN) From 10a3ed204464cd2c7f2ae3c7ac2f286c5b86f7cc Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:25:17 +0100 Subject: [PATCH 3/8] Use gCurrentMove instead of checking FF move (#5999) --- src/battle_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_util.c b/src/battle_util.c index 8d87bcccf5..7fdca00026 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5804,7 +5804,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker)) { //special Future Sight handling - if (gMovesInfo[gWishFutureKnock.futureSightMove[battler]].effect == EFFECT_FUTURE_SIGHT) + if (gMovesInfo[gCurrentMove].effect == EFFECT_FUTURE_SIGHT) { //no Innards Out effect if Future Sight user is currently not on field if (gWishFutureKnock.futureSightPartyIndex[gBattlerTarget] == gBattlerPartyIndexes[gBattlerAttacker] From 2da547908ef5aeb99b6d6e88b4aeaa74428bd5a2 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:27:31 +0100 Subject: [PATCH 4/8] Fixes Shell Bell inlcuding heal amount from Future Sight when triggered (#5962) --- src/battle_script_commands.c | 4 +++- test/battle/hold_effect/shell_bell.c | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 81891831f4..3f49153c7f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2456,7 +2456,9 @@ static void Cmd_datahpupdate(void) } // Record damage for Shell Bell - if (gSpecialStatuses[battler].shellBellDmg == 0 && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE)) + if (gSpecialStatuses[gBattlerTarget].shellBellDmg == IGNORE_SHELL_BELL) + gSpecialStatuses[battler].shellBellDmg = 0; + else if (gSpecialStatuses[battler].shellBellDmg == 0 && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE)) gSpecialStatuses[battler].shellBellDmg = gHpDealt; // Record damage for foreseen moves diff --git a/test/battle/hold_effect/shell_bell.c b/test/battle/hold_effect/shell_bell.c index 9cac6831d9..92625b182a 100644 --- a/test/battle/hold_effect/shell_bell.c +++ b/test/battle/hold_effect/shell_bell.c @@ -34,3 +34,29 @@ SINGLE_BATTLE_TEST("Shell Bell doesn't restore HP for damage dealt by a foreseen } } } + +SINGLE_BATTLE_TEST("Shell Bell does not activate on Future Sight if the original user is on the field") +{ + s16 damage = 0; + s16 healed = 0; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); Item(ITEM_SHELL_BELL); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN {} + TURN {} + TURN { MOVE(player, MOVE_DRAGON_RAGE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + MESSAGE("The opposing Wynaut took the Future Sight attack!"); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_RAGE, player); + HP_BAR(opponent, captureDamage: &damage); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + HP_BAR(player, captureDamage: &healed); + } THEN { + EXPECT_MUL_EQ(damage, Q_4_12(-0.25), healed); + } +} From 9e8ab3d891ac6919b3177af62ffefadab54bb947 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:59:12 +0100 Subject: [PATCH 5/8] Fixes Tera giving boost to dynamic bp moves (#6008) --- src/battle_util.c | 8 ++++++-- test/battle/gimmick/terastal.c | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 7fdca00026..2c53b2282d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9244,13 +9244,14 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * u32 battlerDef = damageCalcData->battlerDef; u32 move = damageCalcData->move; u32 moveType = damageCalcData->moveType; + u32 moveEffect = gMovesInfo[move].effect; uq4_12_t holdEffectModifier; uq4_12_t modifier = UQ_4_12(1.0); u32 atkSide = GetBattlerSide(battlerAtk); // move effect - switch (gMovesInfo[move].effect) + switch (moveEffect) { case EFFECT_FACADE: if (gBattleMons[battlerAtk].status1 & (STATUS1_BURN | STATUS1_PSN_ANY | STATUS1_PARALYSIS | STATUS1_FROSTBITE)) @@ -9556,8 +9557,11 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * && (moveType == GetBattlerTeraType(battlerAtk) || (GetBattlerTeraType(battlerAtk) == TYPE_STELLAR && IsTypeStellarBoosted(battlerAtk, moveType))) && uq4_12_multiply_by_int_half_down(modifier, basePower) < 60 + && gMovesInfo[move].power > 1 && gMovesInfo[move].strikeCount < 2 - && gMovesInfo[move].effect != EFFECT_MULTI_HIT + && moveEffect != EFFECT_POWER_BASED_ON_USER_HP + && moveEffect != EFFECT_POWER_BASED_ON_TARGET_HP + && moveEffect != EFFECT_MULTI_HIT && gMovesInfo[move].priority == 0) { return 60; diff --git a/test/battle/gimmick/terastal.c b/test/battle/gimmick/terastal.c index a9e8fca871..42c495829d 100644 --- a/test/battle/gimmick/terastal.c +++ b/test/battle/gimmick/terastal.c @@ -186,6 +186,25 @@ SINGLE_BATTLE_TEST("(TERA) Terastallization's 60 BP floor does not apply to prio } } +SINGLE_BATTLE_TEST("(TERA) Terastallization's 60 BP floor does not apply to dynamic base power moves", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + ASSUME(gMovesInfo[MOVE_WATER_SPOUT].effect == EFFECT_POWER_BASED_ON_USER_HP); + PLAYER(SPECIES_WOBBUFFET) { HP(1); TeraType(TYPE_WATER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WATER_SPOUT, gimmick: tera); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_SPOUT, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + // Defensive Type Checks SINGLE_BATTLE_TEST("(TERA) Terastallization changes type effectiveness", s16 damage) From 28561bca4a4c8e4efa3416a444a73956350f2764 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:59:57 +0100 Subject: [PATCH 6/8] Fixes zmove trigger sprite on b button exit (#6009) --- src/battle_controller_player.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index e56207507b..fcadd22dc7 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -776,6 +776,7 @@ void HandleInputChooseMove(u32 battler) if (gBattleStruct->zmove.viewing) { ReloadMoveNames(battler); + ChangeGimmickTriggerSprite(gBattleStruct->gimmick.triggerSpriteId, gBattleStruct->gimmick.playerSelect); } else { From 15a034a1d942594f6bf4bcc0b2b38394e9a9ce58 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 12 Jan 2025 05:49:19 -0300 Subject: [PATCH 7/8] Fixed multiple transform/form change graphical issues (#6005) --- asm/macros/battle_script.inc | 3 +- data/battle_scripts_1.s | 24 ++++---- data/battle_scripts_2.s | 2 +- include/battle_controllers.h | 4 +- include/battle_gfx_sfx_util.h | 2 +- include/pokemon.h | 1 + src/battle_anim_mons.c | 50 ++++++---------- src/battle_controllers.c | 20 +++---- src/battle_gfx_sfx_util.c | 104 +++++++++++++++++----------------- src/battle_script_commands.c | 4 +- src/pokemon.c | 10 ++-- 11 files changed, 107 insertions(+), 117 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index fbc724a81e..dbab37af2c 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -478,9 +478,10 @@ .byte \battler .endm - .macro switchinanim battler:req, dontClearSubstitute:req + .macro switchinanim battler:req, dontClearTransform:req, dontClearSubstitute:req .byte 0x4e .byte \battler + .byte \dontClearTransform .byte \dontClearSubstitute .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index bc2f4dea3c..0cd20c7543 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -322,7 +322,7 @@ BattleScript_MoveSwitchOpenPartyScreen: printstring STRINGID_EMPTYSTRING3 waitmessage 1 printstring STRINGID_SWITCHINMON - switchinanim BS_ATTACKER, TRUE + switchinanim BS_ATTACKER, FALSE, TRUE waitstate switchineffects BS_ATTACKER BattleScript_MoveSwitchEnd: @@ -469,7 +469,7 @@ BattleScript_EffectRevivalBlessingSendOut: getswitchedmondata BS_SCRIPTING switchindataupdate BS_SCRIPTING hpthresholds BS_SCRIPTING - switchinanim BS_SCRIPTING, FALSE + switchinanim BS_SCRIPTING, FALSE, FALSE waitstate switchineffects BS_SCRIPTING goto BattleScript_MoveEnd @@ -2390,7 +2390,7 @@ BattleScript_EffectHealingWish:: trytoclearprimalweather flushtextbox printstring STRINGID_SWITCHINMON - switchinanim BS_ATTACKER, TRUE + switchinanim BS_ATTACKER, FALSE, TRUE waitstate switchineffects BS_ATTACKER .endif @@ -4386,7 +4386,7 @@ BattleScript_EffectBatonPass:: trytoclearprimalweather flushtextbox printstring STRINGID_SWITCHINMON - switchinanim BS_ATTACKER, TRUE + switchinanim BS_ATTACKER, FALSE, TRUE waitstate switchineffects BS_ATTACKER goto BattleScript_MoveEnd @@ -5492,7 +5492,7 @@ BattleScript_FaintedMonTryChoose: flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_ATTACKER - switchinanim BS_ATTACKER, 0 + switchinanim BS_ATTACKER, FALSE, FALSE waitstate setbyte sSHIFT_SWITCHED, 1 BattleScript_FaintedMonSendOutNew: @@ -5504,7 +5504,7 @@ BattleScript_FaintedMonSendOutNew: flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_FAINTED - switchinanim BS_FAINTED, FALSE + switchinanim BS_FAINTED, FALSE, FALSE waitstate resetplayerfainted trytrainerslidelastonmsg BS_FAINTED @@ -5538,7 +5538,7 @@ BattleScript_HandleFaintedMonLoop:: flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_FAINTED - switchinanim BS_FAINTED, FALSE + switchinanim BS_FAINTED, FALSE, FALSE waitstate switchineffects BS_FAINTED_MULTIPLE_1 jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_HandleFaintedMonLoop @@ -5763,7 +5763,7 @@ BattleScript_DoSwitchOut:: flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_ATTACKER - switchinanim BS_ATTACKER, FALSE + switchinanim BS_ATTACKER, FALSE, FALSE waitstate switchineffects BS_ATTACKER moveendcase MOVEEND_STATUS_IMMUNITY_ABILITIES @@ -6080,7 +6080,7 @@ BattleScript_RoarSuccessSwitch:: switchindataupdate BS_TARGET trytoclearprimalweather flushtextbox - switchinanim BS_TARGET, FALSE + switchinanim BS_TARGET, FALSE, FALSE waitstate printstring STRINGID_PKMNWASDRAGGEDOUT switchineffects BS_TARGET @@ -7648,7 +7648,7 @@ BattleScript_EmergencyExitNoPopUp:: switchindataupdate BS_TARGET hpthresholds BS_TARGET printstring STRINGID_SWITCHINMON - switchinanim BS_TARGET, TRUE + switchinanim BS_TARGET, FALSE, TRUE waitstate switchineffects BS_TARGET BattleScript_EmergencyExitRet: @@ -9617,7 +9617,7 @@ BattleScript_EjectButtonActivates:: trytoclearprimalweather flushtextbox printstring 0x3 - switchinanim BS_SCRIPTING 0x1 + switchinanim BS_SCRIPTING, FALSE, TRUE waitstate switchineffects BS_SCRIPTING BattleScript_EjectButtonEnd: @@ -9981,7 +9981,7 @@ BattleScript_DynamaxBegins:: returnatktoball pause B_WAIT_TIME_SHORT returntoball BS_SCRIPTING, TRUE - switchinanim BS_SCRIPTING, TRUE + switchinanim BS_SCRIPTING, TRUE, TRUE updatedynamax playanimation BS_SCRIPTING, B_ANIM_DYNAMAX_GROWTH waitanimation diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index b68a570664..4db3f350d0 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -75,7 +75,7 @@ BattleScript_ItemRestoreHP_Party:: return BattleScript_ItemRestoreHP_SendOutRevivedBattler: - switchinanim BS_SCRIPTING, FALSE + switchinanim BS_SCRIPTING, FALSE, FALSE waitstate switchineffects BS_SCRIPTING end diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 5e92cac763..6bd17f90b9 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -210,7 +210,7 @@ void PrepareBufferDataTransferLink(u32 battler, u32 bufferId, u16 size, u8 *data void BtlController_EmitGetMonData(u32 battler, u32 bufferId, u8 requestId, u8 monToCheck); void BtlController_EmitSetMonData(u32 battler, u32 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data); void BtlController_EmitLoadMonSprite(u32 battler, u32 bufferId); -void BtlController_EmitSwitchInAnim(u32 battler, u32 bufferId, u8 partyId, bool8 dontClearSubstituteBit); +void BtlController_EmitSwitchInAnim(u32 battler, u32 bufferId, u8 partyId, bool8 dontClearTransform, bool8 dontClearSubstituteBit); void BtlController_EmitReturnMonToBall(u32 battler, u32 bufferId, bool8 skipAnim); void BtlController_EmitDrawTrainerPic(u32 battler, u32 bufferId); void BtlController_EmitTrainerSlide(u32 battler, u32 bufferId); @@ -255,7 +255,7 @@ void BattleControllerComplete(u32 battler); // Can be used for all the controlle void BtlController_Empty(u32 battler); // Empty command, does nothing, only completes the execution. void BtlController_TerminatorNop(u32 battler); // Dummy function at the end of the table. void BattleControllerDummy(u32 battler); -void StartSendOutAnim(u32 battler, bool32 dontClearSubstituteBit, bool32 doSlideIn); +void StartSendOutAnim(u32 battler, bool32 dontClearTransform, bool32 dontClearSubstituteBit, bool32 doSlideIn); void Controller_WaitForString(u32 battler); void Controller_WaitForHealthBar(u32 battler); diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index dd85b2658c..d84af67f35 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -38,7 +38,7 @@ void SpriteCB_SetInvisible(struct Sprite *sprite); void SetBattlerShadowSpriteCallback(u8 battler, u16 species); void HideBattlerShadowSprite(u8 battler); void FillAroundBattleWindows(void); -void ClearTemporarySpeciesSpriteData(u8 battler, bool8 dontClearSubstitute); +void ClearTemporarySpeciesSpriteData(u32 battler, bool32 dontClearTransform, bool32 dontClearSubstitute); void AllocateMonSpritesGfx(void); void FreeMonSpritesGfx(void); bool32 ShouldPlayNormalMonCry(struct Pokemon *mon); diff --git a/include/pokemon.h b/include/pokemon.h index f5493542ae..706b0cbf65 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -824,6 +824,7 @@ u8 GetItemEffectParamOffset(u32 battler, u16 itemId, u8 effectByte, u8 effectBit u8 *UseStatIncreaseItem(u16 itemId); u8 GetNature(struct Pokemon *mon); u8 GetNatureFromPersonality(u32 personality); +u32 GetGMaxTargetSpecies(u32 species); u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner); bool8 IsMonPastEvolutionLevel(struct Pokemon *mon); u16 NationalPokedexNumToSpecies(u16 nationalNum); diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 928f050822..f00626efe8 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -2117,24 +2117,26 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) } else { + struct Pokemon *mon = GetPartyBattlerData(battlerId); + + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + { + species = GetMonData(mon, MON_DATA_SPECIES); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + } + else + { + species = spriteInfo[battlerId].transformSpecies; + personality = gTransformedPersonalities[battlerId]; + } + + species = SanitizeSpeciesId(species); + if (species == SPECIES_UNOWN) + species = GetUnownSpeciesId(personality); + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) { - spriteInfo = gBattleSpritesDataPtr->battlerData; - if (!spriteInfo[battlerId].transformSpecies) - { - species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); - personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); - } - else - { - species = spriteInfo[battlerId].transformSpecies; - personality = gTransformedPersonalities[battlerId]; - } - - species = SanitizeSpeciesId(species); - if (species == SPECIES_UNOWN) - species = GetUnownSpeciesId(personality); - #if P_GENDER_DIFFERENCES if (gSpeciesInfo[species].backPicFemale != NULL && IsPersonalityFemale(species, personality)) size = gSpeciesInfo[species].backPicSizeFemale; @@ -2146,22 +2148,6 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) } else { - spriteInfo = gBattleSpritesDataPtr->battlerData; - if (!spriteInfo[battlerId].transformSpecies) - { - species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); - personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); - } - else - { - species = spriteInfo[battlerId].transformSpecies; - personality = gTransformedPersonalities[battlerId]; - } - - species = SanitizeSpeciesId(species); - if (species == SPECIES_UNOWN) - species = GetUnownSpeciesId(personality); - #if P_GENDER_DIFFERENCES if (gSpeciesInfo[species].frontPicFemale != NULL && IsPersonalityFemale(species, personality)) size = gSpeciesInfo[species].frontPicSizeFemale; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index a5581cf735..727bc8e27f 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -976,12 +976,12 @@ void BtlController_EmitLoadMonSprite(u32 battler, u32 bufferId) PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } -void BtlController_EmitSwitchInAnim(u32 battler, u32 bufferId, u8 partyId, bool8 dontClearSubstituteBit) +void BtlController_EmitSwitchInAnim(u32 battler, u32 bufferId, u8 partyId, bool8 dontClearTransform, bool8 dontClearSubstituteBit) { gBattleResources->transferBuffer[0] = CONTROLLER_SWITCHINANIM; gBattleResources->transferBuffer[1] = partyId; - gBattleResources->transferBuffer[2] = dontClearSubstituteBit; - gBattleResources->transferBuffer[3] = 5; + gBattleResources->transferBuffer[2] = dontClearTransform; + gBattleResources->transferBuffer[3] = dontClearSubstituteBit; PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } @@ -2111,13 +2111,13 @@ static bool8 ShouldDoSlideInAnim(void) return TRUE; } -void StartSendOutAnim(u32 battler, bool32 dontClearSubstituteBit, bool32 doSlideIn) +void StartSendOutAnim(u32 battler, bool32 dontClearTransform, bool32 dontClearSubstituteBit, bool32 doSlideIn) { u16 species; u32 side = GetBattlerSide(battler); struct Pokemon *party = GetBattlerParty(battler); - ClearTemporarySpeciesSpriteData(battler, dontClearSubstituteBit); + ClearTemporarySpeciesSpriteData(battler, dontClearTransform, dontClearSubstituteBit); gBattlerPartyIndexes[battler] = gBattleResources->bufferA[battler][1]; species = GetIllusionMonSpecies(battler); if (species == SPECIES_NONE) @@ -2462,11 +2462,11 @@ void BtlController_HandleLoadMonSprite(u32 battler, void (*controllerCallback)(u void BtlController_HandleSwitchInAnim(u32 battler, bool32 isPlayerSide, void (*controllerCallback)(u32 battler)) { if (isPlayerSide) - ClearTemporarySpeciesSpriteData(battler, gBattleResources->bufferA[battler][2]); + ClearTemporarySpeciesSpriteData(battler, gBattleResources->bufferA[battler][2], gBattleResources->bufferA[battler][3]); gBattlerPartyIndexes[battler] = gBattleResources->bufferA[battler][1]; if (isPlayerSide) BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); - StartSendOutAnim(battler, gBattleResources->bufferA[battler][2], FALSE); + StartSendOutAnim(battler, gBattleResources->bufferA[battler][2], gBattleResources->bufferA[battler][3], FALSE); gBattlerControllerFuncs[battler] = controllerCallback; } @@ -2965,17 +2965,17 @@ static void Task_StartSendOutAnim(u8 taskId) if (TwoMonsAtSendOut(battler)) { gBattleResources->bufferA[battler][1] = gBattlerPartyIndexes[battler]; - StartSendOutAnim(battler, FALSE, ShouldDoSlideInAnim()); + StartSendOutAnim(battler, FALSE, FALSE, ShouldDoSlideInAnim()); battlerPartner = battler ^ BIT_FLANK; gBattleResources->bufferA[battlerPartner][1] = gBattlerPartyIndexes[battlerPartner]; BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerPartner]], battlerPartner); - StartSendOutAnim(battlerPartner, FALSE, ShouldDoSlideInAnim()); + StartSendOutAnim(battlerPartner, FALSE, FALSE, ShouldDoSlideInAnim()); } else { gBattleResources->bufferA[battler][1] = gBattlerPartyIndexes[battler]; - StartSendOutAnim(battler, FALSE, ShouldDoSlideInAnim()); + StartSendOutAnim(battler, FALSE, FALSE, ShouldDoSlideInAnim()); } gBattlerControllerFuncs[battler] = (void*)(GetWordTaskArg(taskId, tControllerFunc_1)); DestroyTask(taskId); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 620ef57d94..bbe7924c46 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -609,7 +609,7 @@ bool8 IsBattleSEPlaying(u8 battler) void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) { - u32 monsPersonality, currentPersonality, isShiny, species, paletteOffset, position; + u32 personalityValue, isShiny, species, paletteOffset, position; const void *lzPaletteData; struct Pokemon *illusionMon = GetIllusionMonPtr(battler); if (illusionMon != NULL) @@ -618,48 +618,42 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) if (GetMonData(mon, MON_DATA_IS_EGG) || GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE) // Don't load GFX of egg pokemon. return; - monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY); isShiny = GetMonData(mon, MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_NONE) { species = GetMonData(mon, MON_DATA_SPECIES); - currentPersonality = monsPersonality; + personalityValue = GetMonData(mon, MON_DATA_PERSONALITY); } else { species = gBattleSpritesDataPtr->battlerData[battler].transformSpecies; + // If battler has Gigantamax factor, try convert gfx to G-Max version + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR)) + gBattleSpritesDataPtr->battlerData[battler].transformSpecies = species = GetGMaxTargetSpecies(species); + if (B_TRANSFORM_SHINY >= GEN_4) { - currentPersonality = gTransformedPersonalities[battler]; + personalityValue = gTransformedPersonalities[battler]; isShiny = gTransformedShininess[battler]; } else { - currentPersonality = monsPersonality; + personalityValue = GetMonData(mon, MON_DATA_PERSONALITY); } } position = GetBattlerPosition(battler); - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - { - HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->spritesGfx[position], - species, currentPersonality); - } - else - { - HandleLoadSpecialPokePic(FALSE, - gMonSpritesGfxPtr->spritesGfx[position], - species, currentPersonality); - } + HandleLoadSpecialPokePic((GetBattlerSide(battler) == B_SIDE_OPPONENT), + gMonSpritesGfxPtr->spritesGfx[position], + species, personalityValue); paletteOffset = OBJ_PLTT_ID(battler); if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_NONE) lzPaletteData = GetMonFrontSpritePal(mon); else - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, currentPersonality); + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personalityValue); LZDecompressWram(lzPaletteData, gDecompressionBuffer); LoadPalette(gDecompressionBuffer, paletteOffset, PLTT_SIZE_4BPP); @@ -925,8 +919,10 @@ void CopyBattleSpriteInvisibility(u8 battler) void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bool8 trackEnemyPersonality) { u32 personalityValue, position, paletteOffset, targetSpecies; - bool8 isShiny; + bool32 isShiny; const void *lzPaletteData, *src; + struct Pokemon *monAtk = GetPartyBattlerData(battlerAtk); + struct Pokemon *monDef = GetPartyBattlerData(battlerDef); void *dst; if (IsContest()) @@ -944,48 +940,35 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo else { position = GetBattlerPosition(battlerAtk); - - if (GetBattlerSide(battlerDef) == B_SIDE_OPPONENT) - targetSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_SPECIES); - else - targetSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_SPECIES); - - if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) + if (gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies == SPECIES_NONE) { - if (B_TRANSFORM_SHINY >= GEN_4 && trackEnemyPersonality && !megaEvo) - { - personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_PERSONALITY); - isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_IS_SHINY); - } + // Get base form if its currently Gigantamax + if (IsGigantamaxed(battlerDef)) + targetSpecies = gBattleStruct->changedSpecies[GetBattlerSide(battlerDef)][gBattlerPartyIndexes[battlerDef]]; else - { - personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); - isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_IS_SHINY); - } - - HandleLoadSpecialPokePic(FALSE, - gMonSpritesGfxPtr->spritesGfx[position], - targetSpecies, - personalityValue); + targetSpecies = GetMonData(monDef, MON_DATA_SPECIES); + personalityValue = GetMonData(monAtk, MON_DATA_PERSONALITY); + isShiny = GetMonData(monAtk, MON_DATA_IS_SHINY); } else { + targetSpecies = gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies; if (B_TRANSFORM_SHINY >= GEN_4 && trackEnemyPersonality && !megaEvo) { - personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_PERSONALITY); - isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_IS_SHINY); + personalityValue = GetMonData(monDef, MON_DATA_PERSONALITY); + isShiny = GetMonData(monDef, MON_DATA_IS_SHINY); } else { - personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); - isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_IS_SHINY); + personalityValue = GetMonData(monAtk, MON_DATA_PERSONALITY); + isShiny = GetMonData(monAtk, MON_DATA_IS_SHINY); } - - HandleLoadSpecialPokePic(TRUE, - gMonSpritesGfxPtr->spritesGfx[position], - targetSpecies, - personalityValue); } + + HandleLoadSpecialPokePic((GetBattlerSide(battlerAtk) != B_SIDE_PLAYER), + gMonSpritesGfxPtr->spritesGfx[position], + targetSpecies, + personalityValue); } src = gMonSpritesGfxPtr->spritesGfx[position]; dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32); @@ -1005,6 +988,24 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo } } + // dynamax tint + if (GetActiveGimmick(battlerAtk) == GIMMICK_DYNAMAX) + { + // Calyrex and its forms have a blue dynamax aura instead of red. + if (GET_BASE_SPECIES_ID(targetSpecies) == SPECIES_CALYREX) + BlendPalette(paletteOffset, 16, 4, RGB(12, 0, 31)); + else + BlendPalette(paletteOffset, 16, 4, RGB(31, 0, 12)); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); + } + + // Terastallization's tint + if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA) + { + BlendPalette(paletteOffset, 16, 8, GetTeraTypeRGB(GetBattlerTeraType(battlerAtk))); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); + } + gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk); StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], 0); } @@ -1384,9 +1385,10 @@ void FillAroundBattleWindows(void) } } -void ClearTemporarySpeciesSpriteData(u8 battler, bool8 dontClearSubstitute) +void ClearTemporarySpeciesSpriteData(u32 battler, bool32 dontClearTransform, bool32 dontClearSubstitute) { - gBattleSpritesDataPtr->battlerData[battler].transformSpecies = SPECIES_NONE; + if (!dontClearTransform) + gBattleSpritesDataPtr->battlerData[battler].transformSpecies = SPECIES_NONE; if (!dontClearSubstitute) ClearBehindSubstituteBit(battler); } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3f49153c7f..ffb03a1d73 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6940,7 +6940,7 @@ static void Cmd_switchinanim(void) { u32 battler; - CMD_ARGS(u8 battler, bool8 dontClearSubstitute); + CMD_ARGS(u8 battler, bool8 dontClearTransform, bool8 dontClearSubstitute); if (gBattleControllerExecFlags) return; @@ -6957,7 +6957,7 @@ static void Cmd_switchinanim(void) gAbsentBattlerFlags &= ~(1u << battler); - BtlController_EmitSwitchInAnim(battler, BUFFER_A, gBattlerPartyIndexes[battler], cmd->dontClearSubstitute); + BtlController_EmitSwitchInAnim(battler, BUFFER_A, gBattlerPartyIndexes[battler], cmd->dontClearTransform, cmd->dontClearSubstitute); MarkBattlerForControllerExec(battler); gBattlescriptCurrInstr = cmd->nextInstr; diff --git a/src/pokemon.c b/src/pokemon.c index d6ed5020b8..01a82d66e0 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3700,7 +3700,7 @@ void CopyPartyMonToBattleData(u32 battlerId, u32 partyIndex) PokemonToBattleMon(&party[partyIndex], &gBattleMons[battlerId]); gBattleStruct->hpOnSwitchout[side] = gBattleMons[battlerId].hp; UpdateSentPokesToOpponentValue(battlerId); - ClearTemporarySpeciesSpriteData(battlerId, FALSE); + ClearTemporarySpeciesSpriteData(battlerId, FALSE, FALSE); } bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex) @@ -4407,7 +4407,7 @@ u8 GetNatureFromPersonality(u32 personality) return personality % NUM_NATURES; } -static u32 GetGMaxTargetSpecies(u32 species) +u32 GetGMaxTargetSpecies(u32 species) { const struct FormChange *formChanges = GetSpeciesFormChanges(species); u32 i; @@ -4416,7 +4416,7 @@ static u32 GetGMaxTargetSpecies(u32 species) if (formChanges[i].method == FORM_CHANGE_BATTLE_GIGANTAMAX) return formChanges[i].targetSpecies; } - return SPECIES_NONE; + return species; } u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner) @@ -4854,8 +4854,8 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 // Gigantamax Factor. We assume that is because their evolutions // do not have a Gigantamax Form. if (GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR, NULL) - && GetGMaxTargetSpecies(species) != SPECIES_NONE - && GetGMaxTargetSpecies(targetSpecies) == SPECIES_NONE) + && GetGMaxTargetSpecies(species) != species + && GetGMaxTargetSpecies(targetSpecies) == targetSpecies) { return SPECIES_NONE; } From 9c7c94d474aab9266e4ed8abc29bdd8ea2e6da2d Mon Sep 17 00:00:00 2001 From: hedara90 <90hedara@gmail.com> Date: Sun, 12 Jan 2025 10:01:44 +0100 Subject: [PATCH 8/8] Fixed a bunch of move anims (#5936) Co-authored-by: Hedara --- data/battle_anim_scripts.s | 556 ++++++++++++++++----------------- src/battle_anim_dark.c | 4 + src/battle_anim_electric.c | 7 + src/battle_anim_mon_movement.c | 2 +- 4 files changed, 290 insertions(+), 279 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index ae8642feb4..151ab6400a 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -661,22 +661,22 @@ gBattleAnimMove_LuckyChant:: monbg ANIM_DEF_PARTNER setalpha 12, 8 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER - createsprite gLuckyChantBigStarsSpriteTemplate, 2, 4, 0, -18, 8, 140 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, 16, -18, 8, 100 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, -16, -18, 8, 100 + createsprite gLuckyChantBigStarsSpriteTemplate, ANIM_ATTACKER, 2, 0, -18, 8, 140 + createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 16, -18, 8, 100 + createsprite gLuckyChantSmallStarsSpriteTemplate, 2, -16, -18, 8, 100 delay 15 - createsprite gLuckyChantBigStarsSpriteTemplate 2, 4, 0, -18, 8, 140 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, 32, -18, 8, 100 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, -32, -18, 8, 100 + createsprite gLuckyChantBigStarsSpriteTemplate ANIM_ATTACKER, 2, 0, -18, 8, 140 + createsprite gLuckyChantSmallStarsSpriteTemplate, ANIM_ATTACKER, 2, 32, -18, 8, 100 + createsprite gLuckyChantSmallStarsSpriteTemplate, ANIM_ATTACKER, 2, -32, -18, 8, 100 delay 15 - createsprite gLuckyChantBigStarsSpriteTemplate 2, 4, 0, -18, 8, 140 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, 24, -18, 8, 100 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, -18, -18, 8, 100 + createsprite gLuckyChantBigStarsSpriteTemplate ANIM_ATTACKER, 2, 0, -18, 8, 140 + createsprite gLuckyChantSmallStarsSpriteTemplate, ANIM_ATTACKER, 2, 24, -18, 8, 100 + createsprite gLuckyChantSmallStarsSpriteTemplate, ANIM_ATTACKER, 2, -18, -18, 8, 100 delay 30 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, 16, -18, 0, 100 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, -16, -18, 0, 100 + createsprite gLuckyChantSmallStarsSpriteTemplate, ANIM_ATTACKER, 2, 16, -18, 0, 100 + createsprite gLuckyChantSmallStarsSpriteTemplate, ANIM_ATTACKER, 2, -16, -18, 0, 100 delay 30 - createsprite gLuckyChantSmallStarsSpriteTemplate, 2, 4, 20, -16, 14, 80 + createsprite gLuckyChantSmallStarsSpriteTemplate, ANIM_ATTACKER, 2, 20, -16, 14, 80 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -824,7 +824,7 @@ gBattleAnimMove_Punishment:: monbg ANIM_TARGET setalpha 12, 8 playsewithpan 155, SOUND_PAN_TARGET - createsprite gPunishmentSpriteTemplate, 2, 4, 0, 0, 1, 0 + createsprite gPunishmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_TARGET @@ -834,7 +834,7 @@ gBattleAnimMove_Punishment:: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - createsprite gPunishmentImpactSpriteTemplate 2, 4, 0, 0, 1, 2 + createsprite gPunishmentImpactSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_TARGET @@ -848,33 +848,33 @@ gBattleAnimMove_LastResort:: waitbgfadein loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gComplexPaletteBlendSpriteTemplate, 2, 7, 2, 4, 2, RGB_WHITE, 10, 0, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 4, 2, RGB_WHITE, 10, 0, 0 waitforvisualfinish delay 10 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, 2, 5, 1, 0, 16, 16, RGB_WHITE - createsprite gSlideMonToOffsetSpriteTemplate, 2, 5, 0, 20, 0, 0, 4 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, 16, RGB_WHITE + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 0, 20, 0, 0, 4 delay 3 waitforvisualfinish playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, 132, 4, -10, 0, 1, 0 - createsprite gSlideMonToOffsetSpriteTemplate, 2, 5, 1, -32, 0, 0, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 132, -10, 0, 1, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 1, -32, 0, 0, 3 waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 8, -256, ANIM_ATTACKER, 0 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 8, -256, ANIM_TARGET, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 - createsprite gSimplePaletteBlendSpriteTemplate, 2, 5, 1, 2, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 2, 16, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 8, -256, ANIM_ATTACKER, 1 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 8, -256, ANIM_TARGET, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1 waitforvisualfinish - createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 0, 0, 5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 - createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 1, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, 1, 0, 7 waitforvisualfinish call UnsetHighSpeedBg end @@ -896,14 +896,14 @@ gBattleAnimMove_WorrySeed:: gBattleAnimMove_SuckerPunch:: loadspritegfx ANIM_TAG_POISON_JAB loadspritegfx ANIM_TAG_IMPACT - createsprite gSlideMonToOffsetSpriteTemplate, 2, 5, 0, 20, 0, 0, 4 - createsprite gSuckerPunchSpriteTemplate, 130, 6, -18, 5, 40, 8, 160, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSuckerPunchSpriteTemplate, ANIM_TARGET, 130, -18, 5, 40, 8, 160, 0 delay 4 - createsprite gBasicHitSplatSpriteTemplate, 130, 4, -8, 8, 1, 2 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 6, 384, ANIM_TARGET, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 130, -8, 8, 1, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 0, 1, 4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 end gBattleAnimMove_ToxicSpikes:: @@ -979,28 +979,28 @@ gBattleAnimGeneral_AquaRingHeal:: createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 23, 1 delay 5 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 10, 10, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, -15, 0, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 20, 10, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 0, -10, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, -10, 15, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 25, 20, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, -20, 20, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 12, 0, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0 setalpha 8, 8 playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER createsprite gGuardRingSpriteTemplate, 2, 0 @@ -1010,7 +1010,7 @@ gBattleAnimGeneral_AquaRingHeal:: createsprite gGuardRingSpriteTemplate, 2, 0 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 0, 2, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 0, 2, 0, 10, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -1020,7 +1020,7 @@ gBattleAnimMove_MagnetRise:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), -31, 1, 5, 5, RGB(31, 31, 20) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), 0, 1, 5, 5, RGB(31, 31, 20) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -12, 4, 10, 10, 12, 6 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 @@ -1045,11 +1045,11 @@ gBattleAnimMove_MagnetRise:: delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), -31, 1, 0, 0, RGB(31, 31, 20) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), 0, 1, 0, 0, RGB(31, 31, 20) delay 20 - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), -31, 1, 7, 7, RGB(31, 31, 20) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), 0, 1, 7, 7, RGB(31, 31, 20) waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), -31, 1, 0, 0, RGB(31, 31, 20) + createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), 0, 1, 0, 0, RGB(31, 31, 20) waitforvisualfinish end @@ -1090,33 +1090,33 @@ gBattleAnimMove_FlareBlitz:: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - createsprite gFireSpreadSpriteTemplate, 0x81, 0, 10, 192, 176, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, 192, 176, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 - createsprite gFireSpreadSpriteTemplate, 0x81, 0, 10, -192, 240, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, -192, 240, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 - createsprite gFireSpreadSpriteTemplate, 0x81, 0, 10, 192, -160, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, 192, -160, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 - createsprite gFireSpreadSpriteTemplate, 0x81, 0, 10, -192, -112, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, -192, -112, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 - createsprite gFireSpreadSpriteTemplate, 0x81, 0, 10, 160, 48, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, 160, 48, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 - createsprite gFireSpreadSpriteTemplate, 0x81, 0, 10, -224, -32, 40 - createsprite gFireSpreadSpriteTemplate, 0x81, 0, 10, 112, -128, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, -224, -32, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, 112, -128, 40 playsewithpan SE_M_COMET_PUNCH, +63 createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_BLACK playsewithpan SE_M_COMET_PUNCH, +63 @@ -1138,10 +1138,10 @@ gBattleAnimMove_ForcePalm:: splitbgprio ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET - createsprite gKarateChopSpriteTemplate, 2, 8, -16, 0, 0, 0, 10, 1, 3, 0 + createsprite gKarateChopSpriteTemplate, ANIM_TARGET, 2, -16, 0, 0, 0, 10, 1, 3, 0 waitforvisualfinish playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - createsprite gForcePalmSpriteTemplate 3, 4, 0, 0, 1, 2 + createsprite gForcePalmSpriteTemplate, ANIM_TARGET 3, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -1351,45 +1351,45 @@ gBattleAnimMove_AquaTail:: createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 23, 1 delay 5 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 10, 10, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, -16, 0, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 20, 10, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 0, -10, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, -10, 15, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 25, 20, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, -20, 20, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER - createsprite gSmallBubblePairSpriteTemplate, 2, 4, 12, 0, 25, 0 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0 waitforvisualfinish loadspritegfx ANIM_TAG_SLAM_HIT_2 loadspritegfx ANIM_TAG_IMPACT - createsprite gHorizontalLungeSpriteTemplate, 2, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 4 playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET - createsprite gAquaTailKnockOffSpriteTemplate, 130, 2, -16, -16 + createsprite gAquaTailKnockOffSpriteTemplate, ANIM_ATTACKER, 130, -16, -16 delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, 2, 7, 31, 5, 1, RGB_WHITE, 10, 0, 0 - createsprite gAquaTailHitSpriteTemplate, 131, 4, 0, 0, 1, 2 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_TARGET, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0 + createsprite gAquaTailHitSpriteTemplate, ANIM_TARGET, 131, 0, 0, 1, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - createsprite gSlideMonToOffsetSpriteTemplate, 2, 5, 1, -12, 10, 0, 3 - createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -12, 10, 0, 3 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5 delay 3 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 delay 5 - createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 1, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 6 delay 10 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -1513,7 +1513,7 @@ gBattleAnimMove_DragonPulse:: createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 3, 4, 0, 15 call DragonPulseParticle call DragonPulseParticle - createvisualtask AnimTask_SwayMon, 5, 0, 6, 51200, 4, ANIM_TARGET + createvisualtask AnimTask_SwayMon, ANIM_TARGET, 0, 6, 2048, 4, ANIM_TARGET createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(30, 10, 13) call DragonPulseParticle call DragonPulseParticle @@ -1532,7 +1532,7 @@ gBattleAnimMove_DragonPulse:: clearmonbg ANIM_TARGET end DragonPulseParticle: - createsprite gDragonPulseSpriteTemplate, 130, 6, 16, 0, 0, 0, 13, 0 + createsprite gDragonPulseSpriteTemplate, ANIM_ATTACKER, 130, 16, 0, 0, 0, 13, 0 delay 4 return @@ -1541,24 +1541,24 @@ gBattleAnimMove_DragonRush:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_RED_HEART - createsprite gHorizontalLungeSpriteTemplate, 2, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 4 playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET - createsprite gDragonRushSpriteTemplate, 131, 2, -16, -16 + createsprite gDragonRushSpriteTemplate, ANIM_ATTACKER, 131, -16, -16 delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, 2, 7, 31, 5, 1, RGB_WHITE, 10, 0, 0 - createsprite gBasicHitSplatSpriteTemplate, 3, 4, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_TARGET, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 1 waitforvisualfinish playsewithpan 131, SOUND_PAN_TARGET - createsprite gRockFragmentSpriteTemplate, 2, 6, 0, 0, 20, 24, 14, 2 - createsprite gRockFragmentSpriteTemplate, 2, 6, 5, 0, -20, 24, 14, 1 - createsprite gRockFragmentSpriteTemplate, 2, 6, 0, 5, 20, -24, 14, 2 - createsprite gRockFragmentSpriteTemplate, 2, 6, -5, 0, 20, 24, 14, 2 - createsprite gRockFragmentSpriteTemplate, 2, 6, 0, -5, 30, 18, 8, 2 - createsprite gRockFragmentSpriteTemplate, 2, 6, 0, 0, 30, -18, 8, 2 - createsprite gRockFragmentSpriteTemplate, 2, 6, 0, 0, -30, 18, 8, 2 - createsprite gRockFragmentSpriteTemplate, 2, 6, 0, 0, -30, -18, 8, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, 20, 24, 14, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 5, 0, -20, 24, 14, 1 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 5, 20, -24, 14, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, -5, 0, 20, 24, 14, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, -5, 30, 18, 8, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -18, 8, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, -30, 18, 8, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, -30, -18, 8, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 7, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -1709,24 +1709,24 @@ gBattleAnimMove_EarthPower:: playsewithpan SE_M_EARTHQUAKE, SOUND_PAN_TARGET delay 40 loopsewithpan 145, SOUND_PAN_TARGET 11, 3 - createvisualtask AnimTask_ShakeMon, 5, 5, ANIM_TARGET, 0, 3, 25, 1 - createsprite gDragonRageFirePlumeSpriteTemplate, 194, 3, 1, 5, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 25, 1 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, 5, 0 delay 1 - createsprite gDragonRageFirePlumeSpriteTemplate, 194, 3, 1, -10, -15 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, -10, -15 delay 1 - createsprite gDragonRageFirePlumeSpriteTemplate, 130, 3, 1, 0, 25 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 130, 1, 0, 25 delay 1 - createsprite gDragonRageFirePlumeSpriteTemplate, 194, 3, 1, 15, 5 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, 15, 5 delay 1 - createsprite gDragonRageFirePlumeSpriteTemplate, 194, 3, 1, -25, 0 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, -25, 0 delay 1 - createsprite gDragonRageFirePlumeSpriteTemplate, 130, 3, 1, 30, 30 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 130, 1, 30, 30 delay 1 - createsprite gDragonRageFirePlumeSpriteTemplate, 130, 3, 1, -27, 25 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 130, 1, -27, 25 delay 1 - createsprite gDragonRageFirePlumeSpriteTemplate, 194, 3, 1, 0, 8 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, 0, 8 waitforvisualfinish - createsprite gSlideMonToOriginalPosSpriteTemplate, 194, 3, 0, 0, 4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 194, 0, 0, 4 waitforvisualfinish end @@ -1735,12 +1735,12 @@ gBattleAnimMove_Switcheroo:: waitbgfadein loadspritegfx ANIM_TAG_ITEM_BAG loadspritegfx ANIM_TAG_SPEED_DUST - createsprite gTrickBagSpriteTemplate, 2, 2, -39, 80 - createsprite gTrickBagSpriteTemplate, 2, 2, -39, 208 + createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -39, 80 + createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -39, 208 delay 16 playsewithpan SE_M_SKETCH, 0 - createvisualtask AnimTask_StretchTargetUp, 3, 0 - createvisualtask AnimTask_StretchAttackerUp, 3, 0 + createvisualtask AnimTask_StretchTargetUp, 3 + createvisualtask AnimTask_StretchAttackerUp, 3 delay 30 playsewithpan SE_M_DOUBLE_TEAM, 0 delay 24 @@ -1787,17 +1787,17 @@ GigaImpactContinuity: delay 11 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5 delay 6 - createsprite gBasicHitSplatSpriteTemplate, 4, 4, -10, 0, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 1 - createsprite gSlideMonToOffsetSpriteTemplate 2, 5, 1, -16, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 1, -16, 0, 0, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish delay 2 - createsprite gSlideMonToOriginalPosSpriteTemplate 2, 3, 0, 0, 5 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5 delay 3 - createsprite gSlideMonToOriginalPosSpriteTemplate 2, 3, 1, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 6 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -1813,7 +1813,7 @@ gBattleAnimMove_NastyPlot:: createvisualtask AnimTask_FadeScreenToWhite, 5 waitbgfadein delay 8 - createsprite gQuestionMarkSpriteTemplate, 20, 0 + createsprite gQuestionMarkSpriteTemplate, ANIM_ATTACKER, 20, 0 playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER delay 54 loopsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER, 16, 3 @@ -1879,17 +1879,17 @@ gBattleAnimMove_Avalanche:: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_ICE_CHUNK monbg ANIM_DEF_PARTNER - createsprite gShakeMonOrTerrainSpriteTemplate, 2, 4, 7, 1, 11, 1 - createsprite gAvalancheSpriteTemplate, 130, 4, -5, 1, -5, 1 + createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 7, 1, 11, 1 + createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 4, -5, 1, -5, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 - createsprite gAvalancheSpriteTemplate, 130, 4, 5, 0, 6, 1 + createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 5, 0, 6, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 - createsprite gAvalancheSpriteTemplate, 130, 4, 19, 1, 10, 1 + createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 19, 1, 10, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 - createsprite gAvalancheSpriteTemplate 130, 4, -17, 2, -20, 1 + createsprite gAvalancheSpriteTemplate ANIM_TARGET, 130, -17, 2, -20, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 50, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 0, 5, 50, 1 @@ -2183,8 +2183,8 @@ gBattleAnimMove_PsychoCut:: loadspritegfx ANIM_TAG_CROSS_IMPACT monbg ANIM_ATK_PARTNER createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_CROSS_IMPACT, 0, 9, 9, RGB_PURPLE - createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 2, ANIM_ATTACKER - createsprite gPsychoCutSpiralSpriteTemplate, 2, 4, 0, 0, 0, 0 + createvisualtask AnimTask_SwayMon, ANIM_ATTACKER, 0, 6, 2048, 2, ANIM_ATTACKER + createsprite gPsychoCutSpiralSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0 createvisualtask AnimTask_BlendBattleAnimPal, 1, 1, 2, 0, 4, RGB_BLACK createvisualtask AnimTask_BlendBattleAnimPal, 1, 2, 2, 0, 10, RGB(20, 12, 23) delay 30 @@ -2210,28 +2210,28 @@ gBattleAnimMove_ZenHeadbutt:: loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, 2, 5, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0 waitforvisualfinish - createsprite gZenHeadbuttSpriteTemplate, 66, 1, 0 + createsprite gZenHeadbuttSpriteTemplate, ANIM_ATTACKER, 66, 0 delay 18 playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER loadspritegfx ANIM_TAG_IMPACT - createsprite gBowMonSpriteTemplate, 2, 1, 0 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 1, 0 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 - createsprite gBowMonSpriteTemplate, 2, 1, 1 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 1, 1 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 4, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 - createsprite gBowMonSpriteTemplate, 2, 1, 2 - createsprite gAquaTailHitSpriteTemplate, 131, 4, 0, 0, 1, 1 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 1, 2 + createsprite gAquaTailHitSpriteTemplate, ANIM_TARGER, 131, 0, 0, 1, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, 2, 5, 1, 4, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0 clearmonbg ANIM_ATTACKER blendoff delay 1 @@ -2246,22 +2246,22 @@ gBattleAnimMove_MirrorShot:: createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 10, RGB_WHITEALPHA createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, RGB(21, 21, 21) waitforvisualfinish - createsprite gRandomPosHitSplatSpriteTemplate, 131, 2, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGER, 131, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, 131, 2, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGER, 131, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, 131, 2, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGER, 131, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, 131, 2, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGER, 131, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, 131, 2, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGER, 131, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, 131, 2, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGER, 131, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 10, 0, RGB_WHITEALPHA @@ -2320,25 +2320,25 @@ gBattleAnimMove_RockClimb:: setalpha 12, 8 createvisualtask AnimTask_Rollout, 2, 0 waitforvisualfinish - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 5, 0, 1, 30, 1, RGB(0, 16, 1) - createsprite gBasicHitSplatSpriteTemplate, 131, 4, -15, 8, 1, 1 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, RGB(0, 16, 1) + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, -15, 8, 1, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, 131, 4, -5, -12, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, -5, -12, 1, 1 delay 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, 131, 4, 0, -32, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 0, -32, 1, 1 delay 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, 131, 4, 5, -52, 1, 1 - createsprite gSlideMonToOffsetSpriteTemplate, 2, 5, 1, -25, 16, 1, 4 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 5, -52, 1, 1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 1, -25, 16, 1, 4 delay 4 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 delay 30 - createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 0, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6 delay 4 - createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 1, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, 1, 0, 6 clearmonbg ANIM_DEF_PARTNER blendoff end @@ -2383,7 +2383,7 @@ gBattleAnimMove_DracoMeteor:: loadspritegfx ANIM_TAG_FAIRY_LOCK_CHAINS @Gray Colour loadspritegfx ANIM_TAG_WATER_GUN @Sparkles Trail loadspritegfx ANIM_TAG_FIRE_PLUME @Eruption - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, 0x2C41 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB(1, 2, 11) createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_WATER_GUN, 0, 10, 10, RGB_PURPLE @;Purple monbg ANIM_TARGET setalpha 12, 8 @@ -2395,72 +2395,72 @@ gBattleAnimMove_DracoMeteor:: call DracoMeteor2 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2 - createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x28, 0x20 @; For Meteor 1 - createvisualtask AnimTask_HorizontalShake, 5, 3, 5, 2, 0x1 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 40, 32 @; For Meteor 1 + createvisualtask AnimTask_HorizontalShake, 5, 5, 2, 1 delay 7 call DracoMeteor3 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2 - createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xFFF8, 0x20 @; For Meteor 2 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -8, 32 @; For Meteor 2 delay 7 call DracoMeteor4 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2 - createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x15, 0x20 @; For Meteor 3 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 21, 32 @; For Meteor 3 delay 7 call DracoMeteor1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2 - createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xFFF8, 0x20 @; For Meteor 4 - createvisualtask AnimTask_HorizontalShake, 5, 3, 5, 2, 0x1 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -8, 32 @; For Meteor 4 + createvisualtask AnimTask_HorizontalShake, 5, 5, 2, 1 delay 7 call DracoMeteor2 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2 - createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x28, 0x20 @; For Meteor 1 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 40, 32 @; For Meteor 1 delay 7 call DracoMeteor3 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2 - createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x15, 0x20 @; For Meteor 3 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 21, 32 @; For Meteor 3 delay 15 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 4, 2 - createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x15, 0x20 @; For Meteor 3 + createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 21, 32 @; For Meteor 3 createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 2, 1 delay 7 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, 0x2C41 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB(1, 2, 11) waitforvisualfinish clearmonbg ANIM_TARGET blendoff end DracoMeteor1: - createsprite gDracoMeteorRocksSpriteTemplate 0x83, 5, 0xffd0, 0xffc0, 0x28, 0x20, 0x19 + createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 131, -48, -64, 40, 32, 25 delay 2 - createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffd0, 0xffc0, 0x28, 0x20, 0x19 + createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -48, -64, 40, 32, 25 delay 2 - createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffd0, 0xffc0, 0x28, 0x20, 0x19 + createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -48, -64, 40, 32, 25 return DracoMeteor2: - createsprite gDracoMeteorRocksSpriteTemplate 0x83, 5, 0xff90, 0xffc0, 0xFFF8, 0x20, 0x19 + createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 131, -112, -64, -8, 32, 25 delay 2 - createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xff90, 0xffc0, 0xFFF8, 0x20, 0x19 + createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -112, -64, -8, 32, 25 delay 2 - createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xff90, 0xffc0, 0xFFF8, 0x20, 0x19 + createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -112, -64, -8, 32, 25 return DracoMeteor3: - createsprite gDracoMeteorRocksSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0x18, 0x20, 0x19 + createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, 24, 32, 25 delay 2 - createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0x18, 0x20, 0x19 + createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, 24, 32, 25 delay 2 - createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0x18, 0x20, 0x19 + createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, 24, 32, 25 return DracoMeteor4: - createsprite gDracoMeteorRocksSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0xFFF8, 0x20, 0x19 + createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, -8, 32, 25 delay 2 - createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0xFFF8, 0x20, 0x19 + createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, -8, 32, 25 delay 2 - createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0xFFF8, 0x20, 0x19 + createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, -8, 32, 25 return gBattleAnimMove_Discharge:: @@ -2576,14 +2576,14 @@ gBattleAnimMove_LavaPlume:: createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 32, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 1, 0, 32, 1 waitforvisualfinish - createsprite gLavaPlumeSpriteTemplate, 130, 1, 0 - createsprite gLavaPlumeSpriteTemplate, 130, 1, 32 - createsprite gLavaPlumeSpriteTemplate, 130, 1, 64 - createsprite gLavaPlumeSpriteTemplate, 130, 1, 96 - createsprite gLavaPlumeSpriteTemplate, 130, 1, 128 - createsprite gLavaPlumeSpriteTemplate, 130, 1, 160 - createsprite gLavaPlumeSpriteTemplate, 130, 1, 192 - createsprite gLavaPlumeSpriteTemplate, 130, 1, 224 + createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 0 + createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 32 + createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 64 + createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 96 + createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 128 + createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 160 + createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 192 + createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 224 playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER waitforvisualfinish end @@ -2726,36 +2726,36 @@ RockWrecker_1: createvisualtask AnimTask_StartSlidingBg, 5, -1024, 0, 0, -1 loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT - createsprite gHorizontalLungeSpriteTemplate, 2, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 3 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - createsprite gRockBlastRockSpriteTemplate, 130, 6, 16, 0, 0, 0, 25, 257 + createsprite gRockBlastRockSpriteTemplate, ANIM_ATTACKER, 130, 16, 0, 0, 0, 25, 257 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, 131, 4, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 0, 0, 1, 1 playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET - createsprite gRockFragmentSpriteTemplate, 130, 6, 0, 0, 20, 24, 14, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 130, 0, 0, 20, 24, 14, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 - createsprite gRockFragmentSpriteTemplate, 130, 6, 5, 0, -20, 24, 14, 1 - createsprite gRockFragmentSpriteTemplate, 130, 6, 0, 5, 20, -18, 14, 2 - createsprite gRockFragmentSpriteTemplate, 130, 6, -5, 0, -20, -18, 14, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 130, 5, 0, -20, 24, 14, 1 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 130, 0, 5, 20, -18, 14, 2 + createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 130, -5, 0, -20, -18, 14, 2 waitforvisualfinish call UnsetPsychicBg end RockWrecker_2: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT - createsprite gHorizontalLungeSpriteTemplate, 2, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 3 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER - createsprite gRockBlastRockSpriteTemplate, 130, 6, 16, 0, 0, 0, 25, 257 + createsprite gRockBlastRockSpriteTemplate, ANIM_ATTACKER, 130, 16, 0, 0, 0, 25, 257 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, 131, 4, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 0, 0, 1, 1 playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET - createsprite gRockFragmentSpriteTemplate 130, 6, 0, 0, 20, 24, 14, 2 + createsprite gRockFragmentSpriteTemplate ANIM_TARGET, 130, 0, 0, 20, 24, 14, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 - createsprite gRockFragmentSpriteTemplate 130, 6, 5, 0, -20, 24, 14, 1 - createsprite gRockFragmentSpriteTemplate 130, 6, 0, 5, 20, -18, 14, 2 - createsprite gRockFragmentSpriteTemplate 130, 6, -5, 0, -20, -18, 14, 2 + createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 130, 5, 0, -20, 24, 14, 1 + createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 130, 0, 5, 20, -18, 14, 2 + createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 130, -5, 0, -20, -18, 14, 2 waitforvisualfinish call UnsetPsychicBg end @@ -2785,7 +2785,7 @@ gBattleAnimMove_GunkShot:: splitbgprio ANIM_TARGET setalpha 12, 8 call SetGunkShotBG - createvisualtask AnimTask_ShakeMon, 5, 5, ANIM_ATTACKER, 0, 2, 40, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1 delay 6 panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0 createvisualtask AnimTask_StartSinAnimTimer, 5, 1, 100 @@ -2817,16 +2817,16 @@ gBattleAnimMove_GunkShot:: blendoff end GunkShotParticles: - createsprite gGunkShoParticlesSpriteTemplate, 3, 4, 10, 10, 0, 16 - createsprite gGunkShoParticlesSpriteTemplate, 3, 4, 10, 10, 0, -16 + createsprite gGunkShoParticlesSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 + createsprite gGunkShoParticlesSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, -16 delay 1 - createsprite gGunkShoParticlesSpriteTemplate, 3, 4, 10, 10, 0, 16 - createsprite gGunkShoParticlesSpriteTemplate, 3, 4, 10, 10, 0, -16 + createsprite gGunkShoParticlesSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 + createsprite gGunkShoParticlesSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, -16 delay 1 return GunkShotImpact: - createsprite gGunkShotImpactSpriteTemplate, 4, 4, 0, 15, 1, 1 - createsprite gGunkShotImpactSpriteTemplate, 4, 4, 0, -15, 1, 1 + createsprite gGunkShotImpactSpriteTemplate, ANIM_TARGET, 4, 0, 15, 1, 1 + createsprite gGunkShotImpactSpriteTemplate, ANIM_TARGET, 4, 0, -15, 1, 1 return SetGunkShotBG: fadetobg BG_GUNK_SHOT @@ -2860,16 +2860,16 @@ gBattleAnimMove_MagnetBomb:: loadspritegfx ANIM_TAG_SPARK_2 delay 0 playsewithpan 119, 192 - createsprite gSparkElectricitySpriteTemplate, 0, 7, 32, 24, 190, 12, 0, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0 delay 0 - createsprite gSparkElectricitySpriteTemplate, 0, 7, 80, 24, 22, 12, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, 0, 7, 156, 24, 121, 13, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1 delay 0 playsewithpan 119, 192 - createsprite gSparkElectricitySpriteTemplate 0, 7, 100, 24, 60, 10, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate 0, 7, 170, 24, 42, 11, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0 + createsprite gSparkElectricitySpriteTemplate ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate 0, 7, 238, 24, 165, 10, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1 delay 0 loadspritegfx ANIM_TAG_RED_ORB playsewithpan 152, SOUND_PAN_ATTACKER @@ -2901,22 +2901,22 @@ gBattleAnimMove_MagnetBomb:: loadspritegfx ANIM_TAG_GRAY_SMOKE loadspritegfx ANIM_TAG_BLACK_BALL playsewithpan 177, 63 - createsprite gOctazookaSmokeSpriteTemplate, 130, 4, 8, 8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, 8, 8, 1, 0 delay 2 - createsprite gOctazookaSmokeSpriteTemplate, 130, 4, -8, -8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, -8, -8, 1, 0 delay 2 - createsprite gOctazookaSmokeSpriteTemplate, 130, 4, 8, -8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, 8, -8, 1, 0 delay 2 - createsprite gOctazookaSmokeSpriteTemplate, 130, 4, -8, 8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, -8, 8, 1, 0 waitforvisualfinish playsewithpan 177, 63 - createsprite gOctazookaSmokeSpriteTemplate, 130, 4, 8, 8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, 8, 8, 1, 0 delay 2 - createsprite gOctazookaSmokeSpriteTemplate, 130, 4, -8, -8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, -8, -8, 1, 0 delay 2 - createsprite gOctazookaSmokeSpriteTemplate, 130, 4, 8, -8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, 8, -8, 1, 0 delay 2 - createsprite gOctazookaSmokeSpriteTemplate, 130, 4, -8, 8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, -8, 8, 1, 0 waitforvisualfinish end @@ -2924,55 +2924,55 @@ gBattleAnimMove_StoneEdge:: loadspritegfx ANIM_TAG_STONE_EDGE loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 28, 528, 30, 13, 50, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 528, 30, 13, 50, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 32, 480, 20, 16, -46, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 32, 480, 20, 16, -46, 1 delay 2 loopsewithpan 131, SOUND_PAN_TARGET 24, 3 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 33, 576, 20, 8, 42, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 576, 20, 8, 42, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 31, 400, 25, 11, -42, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 31, 400, 25, 11, -42, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 28, 512, 25, 16, 46, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 512, 25, 16, 46, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 33, 464, 30, 15, 49, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 464, 30, 15, 49, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 28, 528, 30, 13, 50, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 528, 30, 13, 50, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 32, 480, 20, 16, -46, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 32, 480, 20, 16, -46, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 33, 576, 20, 8, 42, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 576, 20, 8, 42, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 31, 400, 25, 11, -42, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 31, 400, 25, 11, -42, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 28, 512, 25, 16, 46, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 512, 25, 16, 46, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 33, 464, 30, 15, 49, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 464, 30, 15, 49, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 28, 528, 30, 13, 50, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 528, 30, 13, 50, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 32, 480, 20, 16, -46, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 32, 480, 20, 16, -46, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 33, 576, 20, 8, 42, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 576, 20, 8, 42, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 31, 400, 25, 11, -42, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 31, 400, 25, 11, -42, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 28, 512, 25, 16, 46, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 512, 25, 16, 46, 1 delay 2 - createsprite gStoneEdgeSpriteTemplate, 130, 7, 0, 33, 464, 30, 15, 49, 1 + createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 464, 30, 15, 49, 1 delay 2 - createsprite gBasicHitSplatSpriteTemplate, 131, 4, -32, -16, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, -32, -16, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1 delay 4 - createsprite gRandomPosHitSplatSpriteTemplate, 131, 2, 1, 3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gRandomPosHitSplatSpriteTemplate, 131, 2, 1, 3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gBasicHitSplatSpriteTemplate, 131, 4, 32, 20, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 32, 20, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -2982,14 +2982,14 @@ gBattleAnimMove_StoneEdge:: gBattleAnimMove_Captivate:: loadspritegfx ANIM_TAG_MAGENTA_HEART loadspritegfx ANIM_TAG_SPARKLE_2 - createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_DEF_PARTNER, 0, 2, 0 - createsprite gMagentaHeartSpriteTemplate, 3, 2, 0, 20 + createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 - createsprite gMagentaHeartSpriteTemplate, 3, 2, -20, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 - createsprite gMagentaHeartSpriteTemplate, 3, 2, 20, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 playsewithpan 228, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish @@ -3015,14 +3015,14 @@ gBattleAnimMove_StealthRock:: gBattleAnimMove_GrassKnot:: loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT - createsprite gSlideMonToOffsetSpriteTemplate, 2, 5, 0, 20, 0, 0, 4 - createsprite gGrassKnotSpriteTemplate, 130, 6, -18, 19, 40, 8, 160, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gGrassKnotSpriteTemplate, ANIM_TARGET, 130, -18, 19, 40, 8, 160, 0 delay 4 - createsprite gBasicHitSplatSpriteTemplate, 130, 4, -8, 8, 1, 2 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 6, 384, ANIM_TARGET, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 130, -8, 8, 1, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2 playsewithpan SE_M_VITAL_THROW2 SOUND_PAN_TARGET waitforvisualfinish - createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 0, 1, 4 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 end gBattleAnimMove_Chatter:: @@ -3288,10 +3288,10 @@ gBattleAnimMove_AquaJet:: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_SPLASH playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER - createsprite gDiveBallSpriteTemplate, 2, 4, 0, 0, 13, 336 + createsprite gDiveBallSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336 waitforvisualfinish playsewithpan SE_M_DIVE, SOUND_PAN_ATTACKER - createsprite gDiveWaterSplashSpriteTemplate, 3, 1, 0 + createsprite gDiveWaterSplashSpriteTemplate, ANIM_ATTACKER, 3, 0 call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets @@ -3302,7 +3302,7 @@ gBattleAnimMove_AquaJet:: monbg ANIM_DEF_PARTNER setalpha 12, 8 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - createsprite gDiveWaterSplashSpriteTemplate, 131, 1, 1 + createsprite gDiveWaterSplashSpriteTemplate, ANIM_TARGET, 131, 1 call DiveAttackWaterDroplets call DiveAttackWaterDroplets call DiveAttackWaterDroplets @@ -3344,18 +3344,18 @@ gBattleAnimMove_AttackOrder:: createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 20, 255, 15, 32, 0 createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 110, 10, 8, 32, 20 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate 131, 4, -32, -16, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, -32, -16, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 delay 4 - createsprite gRandomPosHitSplatSpriteTemplate 131, 2, 1, 3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gRandomPosHitSplatSpriteTemplate 131, 2, 1, 3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gBasicHitSplatSpriteTemplate 131, 4, 32, 20, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 32, 20, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -3369,26 +3369,26 @@ gBattleAnimMove_DefendOrder:: monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_TARGET - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 120, 70, 5, 70, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 120, 70, 5, 70, 30 delay 1 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 55, 6, 60, 25 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 55, 6, 60, 25 delay 1 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 60, 7, 60, 30 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 55, 10, 60, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 60, 7, 60, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 55, 10, 60, 30 delay 3 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 100, 50, 4, 50, 26 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 100, 50, 4, 50, 26 delay 1 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 105, 25, 8, 60, 20 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 105, 25, 8, 60, 20 delay 1 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 40, 10, 48, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 40, 10, 48, 30 delay 3 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 120, 30, 6, 45, 25 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 35, 10, 60, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 120, 30, 6, 45, 25 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 35, 10, 60, 30 delay 3 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 105, 20, 8, 40, 0 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 105, 20, 8, 40, 0 delay 3 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 20, 255, 15, 32, 0 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 110, 10, 8, 32, 20 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 20, 255, 15, 32, 0 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 110, 10, 8, 32, 20 waitforvisualfinish loadspritegfx ANIM_TAG_BLUE_STAR waitforvisualfinish @@ -3406,26 +3406,26 @@ gBattleAnimMove_HealOrder:: monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_TARGET - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 120, 70, 5, 70, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 120, 70, 5, 70, 30 delay 1 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 55, 6, 60, 25 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 55, 6, 60, 25 delay 1 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 60, 7, 60, 30 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 55, 10, 60, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 60, 7, 60, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 55, 10, 60, 30 delay 3 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 100, 50, 4, 50, 26 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 100, 50, 4, 50, 26 delay 1 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 105, 25, 8, 60, 20 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 105, 25, 8, 60, 20 delay 1 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 40, 10, 48, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 40, 10, 48, 30 delay 3 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 120, 30, 6, 45, 25 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 115, 35, 10, 60, 30 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 120, 30, 6, 45, 25 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 35, 10, 60, 30 delay 3 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 105, 20, 8, 40, 0 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 105, 20, 8, 40, 0 delay 3 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 20, 255, 15, 32, 0 - createsprite gAttackOrderParticleSpriteTemplate, 130, 5, 110, 10, 8, 32, 20 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 20, 255, 15, 32, 0 + createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 110, 10, 8, 32, 20 waitforvisualfinish loadspritegfx ANIM_TAG_BLUE_STAR waitforvisualfinish @@ -3462,16 +3462,16 @@ gBattleAnimMove_DoubleHit:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 - createsprite gHorizontalLungeSpriteTemplate, 2, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, 2, 4, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 8 waitforvisualfinish - createsprite gHorizontalLungeSpriteTemplate, 2, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, 2, 4, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 8 @@ -3560,33 +3560,33 @@ gBattleAnimMove_LunarDance:: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_HOLLOW_ORB setalpha 0, 16 - createsprite gSimplePaletteBlendSpriteTemplate, 2, 5, 1, 1, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 waitforvisualfinish - createsprite gMoonSpriteTemplate, 2, 2, 120, 56 - createvisualtask AnimTask_AlphaFadeIn, 3, 5, 0, 16, 16, 0, 1 + createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 + createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 playsewithpan 211, 0 delay 30 - createsprite gMoonlightSparkleSpriteTemplate, 40, 2, -12, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, -12, 0 delay 30 - createsprite gMoonlightSparkleSpriteTemplate, 40, 2, -18, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, -18, 0 delay 30 - createsprite gMoonlightSparkleSpriteTemplate, 40, 2, 21, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 21, 0 delay 30 - createsprite gMoonlightSparkleSpriteTemplate, 40, 2, 0, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 0, 0 delay 30 - createsprite gMoonlightSparkleSpriteTemplate, 40, 2, 10, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 10, 0 delay 20 createvisualtask AnimTask_MoonlightEndFade, 2, 0 createvisualtask AnimTask_DragonDanceWaver, 5, 0 playsewithpan 203, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_BlendPalInAndOutByTag, 5, 5, ANIM_TAG_HOLLOW_ORB, RGB(0, 0, 19), 14, 0, 3 - createsprite gDragonDanceOrbSpriteTemplate, 2, 1, 0 - createsprite gDragonDanceOrbSpriteTemplate, 2, 1, 43 - createsprite gDragonDanceOrbSpriteTemplate, 2, 1, 85 - createsprite gDragonDanceOrbSpriteTemplate, 2, 1, 128 - createsprite gDragonDanceOrbSpriteTemplate, 2, 1, 170 - createsprite gDragonDanceOrbSpriteTemplate, 2, 1, 213 + createvisualtask AnimTask_BlendPalInAndOutByTag, 5, ANIM_TAG_HOLLOW_ORB, RGB(0, 0, 19), 14, 0, 3 + createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 0 + createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 43 + createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 85 + createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 128 + createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 170 + createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 213 delay 30 playsewithpan 203, SOUND_PAN_ATTACKER delay 30 @@ -3767,7 +3767,7 @@ gBattleAnimMove_OminousWind:: monbg ANIM_DEF_PARTNER @bankBG_over_partnerBG delay 0 - createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 5, 1, 0, 0, 0, 0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 1, 0, 0, 0, 0 delay 0 createvisualtask AnimTask_GetAttackerSide, 2, 0 jumpargeq 7, 1, OminousWindFadeToBg diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index 2400c22aaf..fd9ffdf923 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -257,6 +257,10 @@ const struct SpriteTemplate gPunishmentImpactSpriteTemplate = .callback = AnimPunishment, }; +// arg 0: x pixel offset +// arg 1: y pixel offset +// arg 2: Something +// arg 3: Something static void AnimPunishment(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c index 6deb4667bb..fb9861a3f3 100644 --- a/src/battle_anim_electric.c +++ b/src/battle_anim_electric.c @@ -646,6 +646,13 @@ static void AnimUnusedCirclingShock(struct Sprite *sprite) sprite->callback = TranslateSpriteInCircle; } +// arg 0: +// arg 1: +// arg 2: +// arg 3: duration +// arg 4: target +// arg 5: +// arg 6: void AnimSparkElectricity(struct Sprite *sprite) { u8 battler; diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 240e43b713..0bacd96219 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -908,7 +908,7 @@ static void AnimTask_SlideOffScreen_Step(u8 taskId) // arg 1: wave amplitude // arg 2: wave period // arg 3: num sways -// arg 4: which mon (0 = attacker, 1`= target) +// arg 4: which mon (0 = attacker, 1 = target) void AnimTask_SwayMon(u8 taskId) { u8 spriteId;