From 6c0878b5fe5f7bc6430d3660528460f286d27ab7 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 24 Nov 2020 17:21:59 -0500 Subject: [PATCH 01/15] infestation between turn anim --- data/battle_anim_scripts.s | 20 ++++++++++++++++++++ include/constants/battle_anim.h | 1 + src/battle_anim_throw.c | 2 ++ 3 files changed, 23 insertions(+) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 70ed22c9e5..431ca8e2e1 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -23929,6 +23929,7 @@ General_TurnTrap: jumpargeq 0, TRAP_ANIM_WHIRLPOOL, Status_Whirlpool jumpargeq 0, TRAP_ANIM_CLAMP, Status_Clamp jumpargeq 0, TRAP_ANIM_SAND_TOMB, Status_SandTomb + jumpargeq 0, TRAP_ANIM_INFESTATION, Status_Infestation goto Status_BindWrap Status_BindWrap: loadspritegfx ANIM_TAG_TENDRILS @@ -24002,6 +24003,25 @@ Status_SandTomb: stopsound end +Status_Infestation: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @black color + loadspritegfx ANIM_TAG_SMALL_BUBBLES @circle particles + monbg ANIM_DEF_PARTNER + monbgprio_28 ANIM_TARGET + createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_DEF, 0x2, 0x0, 0x9, 0x7320 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x4f 0x1 + loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 0x4F + call InfestationVortex + call InfestationVortex + call InfestationVortex + call InfestationVortex + call InfestationVortex + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x7320 + waitforvisualfinish + clearmonbg ANIM_DEF_PARTNER + end + General_HeldItemEffect: loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 871aa1e351..633f0ae8a1 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -558,6 +558,7 @@ #define TRAP_ANIM_WHIRLPOOL 2 #define TRAP_ANIM_CLAMP 3 #define TRAP_ANIM_SAND_TOMB 4 +#define TRAP_ANIM_INFESTATION 5 // Weather defines for battle animation scripts. #define ANIM_WEATHER_NONE 0 diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index ad32702353..c8c2b9e6a4 100755 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -2494,6 +2494,8 @@ void AnimTask_GetTrappedMoveAnimId(u8 taskId) gBattleAnimArgs[0] = TRAP_ANIM_CLAMP; else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SAND_TOMB) gBattleAnimArgs[0] = TRAP_ANIM_SAND_TOMB; + else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_INFESTATION) + gBattleAnimArgs[0] = TRAP_ANIM_INFESTATION; else gBattleAnimArgs[0] = TRAP_ANIM_BIND; From 58a79a4f37e7c14380744bbbc1de58f2e68abf7c Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 1 Dec 2020 17:52:44 -0500 Subject: [PATCH 02/15] shorten between-turn infestation anim length --- data/battle_anim_scripts.s | 3 --- 1 file changed, 3 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 431ca8e2e1..a8af186864 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24013,9 +24013,6 @@ Status_Infestation: loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 0x4F call InfestationVortex call InfestationVortex - call InfestationVortex - call InfestationVortex - call InfestationVortex waitforvisualfinish launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x7320 waitforvisualfinish From 964ec53a65815aa28f3e63e42fa219b96ae10943 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 8 Dec 2020 11:36:19 -0700 Subject: [PATCH 03/15] port cfru shadow sneak anim --- data/battle_anim_scripts.s | 52 ++++++++++++++++++++++++-------------- src/battle_anim_new.c | 12 +++++++++ 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index cf11f4d6ae..df87c770e3 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -2799,28 +2799,42 @@ Move_FIRE_FANG: end Move_SHADOW_SNEAK: - loadspritegfx ANIM_TAG_LICK - setalpha 0, 16 - delay 1 - createvisualtask AnimTask_InitMementoShadow, 2 - delay 1 - createvisualtask AnimTask_MoveAttackerMementoShadow, 5 - playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER - delay 48 - playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_WHITE_SHADOW @Destiny Bond + loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @Black Colour + loadspritegfx ANIM_TAG_POISON_BUBBLE @Poison + loadspritegfx ANIM_TAG_HANDS_AND_FEET + monbg ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x7 0x0000 waitforvisualfinish - createvisualtask sub_8114470, 2 - setalpha 0, 16 - delay 1 - playsewithpan SE_M_LICK, SOUND_PAN_TARGET - createsprite gLickSpriteTemplate, ANIM_TARGET, 2, 0, 0 - createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 16, 1 + playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x12 0x6 0x1 0x3 + launchtask AnimTask_AttackerFadeToInvisible 0x2 0x1 0x1 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + invisible ANIM_ATTACKER + delay 0x1 + launchtask AnimTask_DestinyBondWhiteShadow 0x5 0x2 0x0 0x30 + delay 0x30 + launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x2 0x0 0xF 0x0 + createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 + call ShadowSneakMovement + createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0 + call ShadowSneakMovement + createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0 + call ShadowSneakMovement + createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0 + call ShadowSneakMovement + waitforvisualfinish + visible ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x7 0x0 0x0000 waitforvisualfinish - clearmonbg_23 ANIM_TARGET - delay 1 - blendoff - delay 1 end +ShadowSneakMovement: + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + delay 0x4 + return Move_MUD_BOMB: loadspritegfx ANIM_TAG_MUD_SAND diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 0b54b4c409..e7bb23d90f 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -66,6 +66,18 @@ static const union AffineAnimCmd sSquishTargetAffineAnimCmds[] = }; //// GEN 4 +// shadow sneak +const struct SpriteTemplate gShadowSneakImpactSpriteTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_IceCrystalHit, + .callback = AnimIceEffectParticle +}; + // power trick const struct SpriteTemplate gPowerTrickSpriteTemplate = { From ee59fab143ee4ff79227c9848bfea3acc48cfdc5 Mon Sep 17 00:00:00 2001 From: NamNguyenUTSA <47985283+NamNguyenUTSA@users.noreply.github.com> Date: Fri, 11 Dec 2020 08:31:00 -0600 Subject: [PATCH 04/15] Allow player partner NPC's to mega evolve (i.e., Steven at Mossdeep) --- src/battle_controller_player_partner.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 9743e92e00..06a73beab1 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -1526,7 +1526,10 @@ static void PlayerPartnerHandleChooseMove(void) gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); } - BtlController_EmitTwoReturnValues(1, 10, chosenMoveId | (gBattlerTarget << 8)); + if (CanMegaEvolve(gActiveBattler)) // If partner can mega evolve, do it. + BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); + else + BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8)); PlayerPartnerBufferExecCompleted(); } From 0ac026e6ca0075ecbcfdfe855998c3c4371e2ac9 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 11 Dec 2020 20:21:40 -0300 Subject: [PATCH 05/15] Added the data of SwSh's Crown Tundra's moves And Dragon Energy's effect. Eerie Spell's is the only one missing out of this bunch. --- data/battle_scripts_1.s | 2 + include/constants/battle_move_effects.h | 1 + include/constants/moves.h | 11 ++- src/battle_util.c | 3 + src/data/battle_moves.h | 112 ++++++++++++++++++++++++ src/data/text/move_descriptions.h | 41 ++++++++- src/data/text/move_names.h | 8 ++ 7 files changed, 176 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0ccaa7ef64..982507ac83 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -365,6 +365,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectFairyLock .4byte BattleScript_EffectAllySwitch .4byte BattleScript_EffectSleepHit + .4byte BattleScript_EffectDragonEnergy BattleScript_EffectSleepHit: setmoveeffect MOVE_EFFECT_SLEEP @@ -2007,6 +2008,7 @@ BattleScript_EffectPlaceholder: printstring STRINGID_NOTDONEYET goto BattleScript_MoveEnd +BattleScript_EffectDragonEnergy: BattleScript_EffectStompingTantrum: BattleScript_EffectEvasionDownHit: BattleScript_EffectVitalThrow: diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index b018429de4..5bd0c6a46d 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -351,5 +351,6 @@ #define EFFECT_FAIRY_LOCK 345 #define EFFECT_ALLY_SWITCH 346 #define EFFECT_SLEEP_HIT 347 // Relic Song +#define EFFECT_DRAGON_ENERGY 348 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/moves.h b/include/constants/moves.h index 711aa30232..1c38d54e92 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -772,8 +772,17 @@ #define MOVE_JUNGLE_HEALING 744 #define MOVE_WICKED_BLOW 745 #define MOVE_SURGING_STRIKES 746 +// Crown Tundra Moves +#define MOVE_THUNDER_CAGE 747 +#define MOVE_DRAGON_ENERGY 748 +#define MOVE_FREEZING_GLARE 749 +#define MOVE_FIERY_WRATH 750 +#define MOVE_THUNDEROUS_KICK 751 +#define MOVE_GLACIAL_LANCE 752 +#define MOVE_ASTRAL_BARRAGE 753 +#define MOVE_EERIE_SPELL 754 -#define MOVES_COUNT_GEN8 747 +#define MOVES_COUNT_GEN8 755 #define MOVES_COUNT MOVES_COUNT_GEN8 diff --git a/src/battle_util.c b/src/battle_util.c index b929b7499d..14f7a6e93b 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6581,6 +6581,9 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) if (gBattleMoves[gLastUsedMove].effect == EFFECT_FUSION_COMBO && move != gLastUsedMove) basePower *= 2; break; + case EFFECT_DRAGON_ENERGY: + basePower = 150 * gBattleMons[battlerAtk].hp / gBattleMons[battlerAtk].maxHP; + break; } if (basePower == 0) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 0b0c0b5530..175c623f3d 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11386,4 +11386,116 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, }, + + [MOVE_THUNDER_CAGE] = + { + .effect = EFFECT_TRAP, + .power = 80, + .type = TYPE_ELECTRIC, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_DRAGON_ENERGY] = + { + .effect = EFFECT_DRAGON_ENERGY, + .power = 150, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_FREEZING_GLARE] = + { + .power = 90, + .effect = EFFECT_FREEZE_HIT, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_FIERY_WRATH] = + { + .effect = EFFECT_FLINCH_HIT, + .power = 90, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_THUNDEROUS_KICK] = + { + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 90, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_GLACIAL_LANCE] = + { + .effect = EFFECT_HIT, + .power = 130, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_ASTRAL_BARRAGE] = + { + .effect = EFFECT_HIT, + .power = 120, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_EERIE_SPELL] = + { + .effect = EFFECT_HIT, // To do. It's a copy of Spite that inflicts damage and reduced the target's last move's PP by 3 instead of 4. + .power = 80, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, + .split = SPLIT_SPECIAL, + }, }; diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 96b04d3422..2792f33ce9 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2910,6 +2910,38 @@ static const u8 sSURGING_STRIKESDescription[] = _( "Mastering the Water style,\n" "strikes with 3 critical hits."); +static const u8 sTHUNDER_CAGEDescription[] = _( + "Traps the foe in a cage of\n" + "electricity for 2 to 5 turns."); + +static const u8 sDRAGON_ENERGYDescription[] = _( + "The higher the user's HP\n" + "the more damage caused."); + +static const u8 sFREEZING_GLAREDescription[] = _( + "Shoots psychic power from\n" + "the eyes. May freeze the foe."); + +static const u8 sFIERY_WRATHDescription[] = _( + "An attack fueled by your\n" + "wrath. May cause flinching."); + +static const u8 sTHUNDEROUS_KICKDescription[] = _( + "Uses a lightning-like kick\n" + "to hit. Lowers foe's DEFENSE."); + +static const u8 sGLACIAL_LANCEDescription[] = _( + "Strikes by hurling a blizzard-\n" + "cloaked icicle lance at a foe."); + +static const u8 sASTRAL_BARRAGEDescription[] = _( + "Strikes by sending a frightful\n" + "amount of ghosts at a foe."); + +static const u8 sEERIE_SPELLDescription[] = _( + "Eeriely inflicts damage and\n" + "cuts a foe's las move's PP."); + static const u8 sNotDoneYetDescription[] = _( "Not done yet."); @@ -3664,5 +3696,12 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_JUNGLE_HEALING - 1] = sJUNGLE_HEALINGDescription, [MOVE_WICKED_BLOW - 1] = sWICKED_BLOWDescription, [MOVE_SURGING_STRIKES - 1] = sSURGING_STRIKESDescription, - + [MOVE_THUNDER_CAGE - 1] = sTHUNDER_CAGEDescription, + [MOVE_DRAGON_ENERGY - 1] = sDRAGON_ENERGYDescription, + [MOVE_FREEZING_GLARE - 1] = sFREEZING_GLAREDescription, + [MOVE_FIERY_WRATH - 1] = sFIERY_WRATHDescription, + [MOVE_THUNDEROUS_KICK - 1] = sTHUNDEROUS_KICKDescription, + [MOVE_GLACIAL_LANCE - 1] = sGLACIAL_LANCEDescription, + [MOVE_ASTRAL_BARRAGE - 1] = sASTRAL_BARRAGEDescription, + [MOVE_EERIE_SPELL - 1] = sEERIE_SPELLDescription, }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 1eaf3137d2..8df3a514dd 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -748,4 +748,12 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_JUNGLE_HEALING] = _("Jungle Heal"), [MOVE_WICKED_BLOW] = _("Wicked Blow"), [MOVE_SURGING_STRIKES] = _("SurgeStrikes"), + [MOVE_THUNDER_CAGE] = _("Thunder Cage"), + [MOVE_DRAGON_ENERGY] = _("DragonEnergy"), + [MOVE_FREEZING_GLARE] = _("FreezngGlare"), + [MOVE_FIERY_WRATH] = _("Fiery Wrath"), + [MOVE_THUNDEROUS_KICK] = _("ThnderusKick"), + [MOVE_GLACIAL_LANCE] = _("GlacialLance"), + [MOVE_ASTRAL_BARRAGE] = _("AstrlBarrage"), + [MOVE_EERIE_SPELL] = _("Eerie Spell"), }; From c5e04cf2437623acafdcf3904a2839ef98bb3cc7 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 01:19:15 -0300 Subject: [PATCH 06/15] Removed the unnecessary Dragon Energy effect The move is an Eruption clone, whose effect was already done. Thanks to BuffelSaft for the heads up. I took the chance and fixed its target too. --- data/battle_scripts_1.s | 2 -- include/constants/battle_move_effects.h | 1 - src/battle_util.c | 3 --- src/data/battle_moves.h | 4 ++-- 4 files changed, 2 insertions(+), 8 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 982507ac83..0ccaa7ef64 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -365,7 +365,6 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectFairyLock .4byte BattleScript_EffectAllySwitch .4byte BattleScript_EffectSleepHit - .4byte BattleScript_EffectDragonEnergy BattleScript_EffectSleepHit: setmoveeffect MOVE_EFFECT_SLEEP @@ -2008,7 +2007,6 @@ BattleScript_EffectPlaceholder: printstring STRINGID_NOTDONEYET goto BattleScript_MoveEnd -BattleScript_EffectDragonEnergy: BattleScript_EffectStompingTantrum: BattleScript_EffectEvasionDownHit: BattleScript_EffectVitalThrow: diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 5bd0c6a46d..b018429de4 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -351,6 +351,5 @@ #define EFFECT_FAIRY_LOCK 345 #define EFFECT_ALLY_SWITCH 346 #define EFFECT_SLEEP_HIT 347 // Relic Song -#define EFFECT_DRAGON_ENERGY 348 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/src/battle_util.c b/src/battle_util.c index 14f7a6e93b..b929b7499d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6581,9 +6581,6 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) if (gBattleMoves[gLastUsedMove].effect == EFFECT_FUSION_COMBO && move != gLastUsedMove) basePower *= 2; break; - case EFFECT_DRAGON_ENERGY: - basePower = 150 * gBattleMons[battlerAtk].hp / gBattleMons[battlerAtk].maxHP; - break; } if (basePower == 0) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 175c623f3d..7031fdc222 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11403,13 +11403,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DRAGON_ENERGY] = { - .effect = EFFECT_DRAGON_ENERGY, + .effect = EFFECT_ERUPTION, .power = 150, .type = TYPE_DRAGON, .accuracy = 100, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, From 31d483ef44bb39536b20f5b8677eca7c72a5d425 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 11:26:27 -0300 Subject: [PATCH 07/15] Some more battle_config.h tweaks --- include/constants/battle_config.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 55c62af987..4cf2464181 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -111,7 +111,7 @@ #define B_MINIMIZE_DMG_ACC GEN_6 // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks. // Ability settings -#define B_ABILITY_WEATHER GEN_6 // In Gen5+, weather caused by abilities lasts the same amount of turns as induced from a move. Before, they lasted till the battle's end or weather change by a move. +#define B_ABILITY_WEATHER GEN_6 // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move. #define B_GALE_WINGS GEN_6 // In Gen7+ requires full HP to trigger. #define B_STANCE_CHANGE_FAIL GEN_7 // In Gen7+, Aegislash's form change does not happen, if the Pokémon cannot use a move, because of confusion, paralysis, etc. In gen6, the form change occurs despite not being able to move. #define B_GHOSTS_ESCAPE GEN_6 // In Gen6+, ghosts can escape even when blocked by abilities such as Shadow Tag. @@ -124,8 +124,9 @@ #define B_HP_BERRIES GEN_6 // In Gen4+, berries which restore hp activate immediately after hp drops to half. In gen3, the effect occurs at the end of the turn. #define B_BERRIES_INSTANT GEN_6 // In Gen4+, most berries activate on battle start/switch-in if applicable. In gen3, they only activate either at the move end or turn end. -// Flag settings. -// To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag for toggling the feature. +// Flag settings +// To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. +// Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag to toggle the feature. #define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water. #define B_FLAG_FORCE_DOUBLE_WILD 0 // If this flag is set, all land and surfing wild battles will be double battles. From e9c6c96b9d087103b88e84e891186336e3d9359a Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 11:54:41 -0300 Subject: [PATCH 08/15] Corrected Final Gambit's move data It didn't have its own working effect assigned, and it wasn't being affected by King's Rock even though it should. --- src/data/battle_moves.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 0b0c0b5530..bce0c60e5d 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -7986,7 +7986,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FINAL_GAMBIT] = { - .effect = EFFECT_HIT_SWITCH_TARGET, + .effect = EFFECT_FINAL_GAMBIT, .power = 1, .type = TYPE_FIGHTING, .accuracy = 100, @@ -7994,7 +7994,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, }, From 305bea32df6c40fea32d72bec732207e1d46dee9 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 20:32:52 -0300 Subject: [PATCH 09/15] Added missing check to Flower Gift (offensive) --- src/battle_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index b929b7499d..aeeefa7347 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6960,7 +6960,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b } break; case ABILITY_FLOWER_GIFT: - if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM && WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) + if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM && WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_SUN_ANY) && IS_MOVE_PHYSICAL(move)) MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_HUSTLE: @@ -6996,7 +6996,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b switch (GetBattlerAbility(BATTLE_PARTNER(battlerAtk))) { case ABILITY_FLOWER_GIFT: - if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM) + if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM && IS_MOVE_PHYSICAL(move)) MulModifier(&modifier, UQ_4_12(1.5)); break; } From 36b0e6dedce4002385e162ac1efce4086a4f9e9a Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 13 Dec 2020 17:08:35 -0700 Subject: [PATCH 10/15] fix shake duration --- data/battle_anim_scripts.s | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index a8af186864..facd8e0d23 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24009,8 +24009,8 @@ Status_Infestation: monbg ANIM_DEF_PARTNER monbgprio_28 ANIM_TARGET createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_DEF, 0x2, 0x0, 0x9, 0x7320 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x4f 0x1 - loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 0x4F + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 30 0x1 + loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 30 call InfestationVortex call InfestationVortex waitforvisualfinish From ffa35a33c169780a6154eb4976218b499e63d3c7 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 07:44:34 -0300 Subject: [PATCH 11/15] Review corrections --- src/data/battle_moves.h | 10 +++++----- src/data/text/move_descriptions.h | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 7031fdc222..138f4f86c7 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11425,7 +11425,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -11437,9 +11437,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .accuracy = 100, .pp = 10, .secondaryEffectChance = 20, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -11465,7 +11465,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .accuracy = 100, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_PHYSICAL, @@ -11479,7 +11479,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .accuracy = 100, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 2792f33ce9..354094ad00 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2928,7 +2928,7 @@ static const u8 sFIERY_WRATHDescription[] = _( static const u8 sTHUNDEROUS_KICKDescription[] = _( "Uses a lightning-like kick\n" - "to hit. Lowers foe's DEFENSE."); + "to hit. Lowers foe's Defense."); static const u8 sGLACIAL_LANCEDescription[] = _( "Strikes by hurling a blizzard-\n" @@ -2939,8 +2939,8 @@ static const u8 sASTRAL_BARRAGEDescription[] = _( "amount of ghosts at a foe."); static const u8 sEERIE_SPELLDescription[] = _( - "Eeriely inflicts damage and\n" - "cuts a foe's las move's PP."); + "Attacks with psychic power.\n" + "Foe's last move has 3 PP cut."); static const u8 sNotDoneYetDescription[] = _( "Not done yet."); From 89989943b37b6ce91e2eea7b803bd7f8957c1851 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 19:11:17 -0300 Subject: [PATCH 12/15] Added placeholders for the anims of CT's moves --- data/battle_anim_scripts.s | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index cf11f4d6ae..9fb69e1e4a 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -767,7 +767,15 @@ gBattleAnims_Moves:: .4byte Move_JUNGLE_HEALING .4byte Move_WICKED_BLOW .4byte Move_SURGING_STRIKES - .4byte Move_COUNT @ cannot be reached, because last move is Surging Strikes + .4byte Move_THUNDER_CAGE + .4byte Move_DRAGON_ENERGY + .4byte Move_FREEZING_GLARE + .4byte Move_FIERY_WRATH + .4byte Move_THUNDEROUS_KICK + .4byte Move_GLACIAL_LANCE + .4byte Move_ASTRAL_BARRAGE + .4byte Move_EERIE_SPELL + .4byte Move_COUNT @ cannot be reached, because last move is Eerie Spell .align 2 gBattleAnims_StatusConditions:: @@ -14006,6 +14014,30 @@ Move_WICKED_BLOW:: Move_SURGING_STRIKES:: end @to do: +Move_THUNDER_CAGE:: + end @to do: + +Move_DRAGON_ENERGY:: + end @to do: + +Move_FREEZING_GLARE:: + end @to do: + +Move_FIERY_WRATH:: + end @to do: + +Move_THUNDEROUS_KICK:: + end @to do: + +Move_GLACIAL_LANCE:: + end @to do: + +Move_ASTRAL_BARRAGE:: + end @to do: + +Move_EERIE_SPELL:: + end @to do: + @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ Move_NONE: Move_MIRROR_MOVE: From 0aae069db88550f703856f9833e0b6ae68622c46 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 21:11:17 -0300 Subject: [PATCH 13/15] Made Fiery Wrath unaffected by King's Rock --- src/data/battle_moves.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 138f4f86c7..13cef869b9 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11439,7 +11439,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 20, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, }, From 9f2dc914ba1064bf9085a52c6daf3b77885db61f Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 21:57:47 -0300 Subject: [PATCH 14/15] Tweaked Final Gambit's effect -Made the user faint before the foe like in the official games -Removed calls to resultmessage and critmessage as those were never needed by this move's effect --- data/battle_scripts_1.s | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0ccaa7ef64..8065073fcd 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1082,16 +1082,12 @@ BattleScript_EffectFinalGambit: waitstate healthbarupdate BS_TARGET datahpupdate BS_TARGET - critmessage - waitmessage 0x40 - resultmessage - waitmessage 0x40 - seteffectwithchance - tryfaintmon BS_TARGET, FALSE, NULL - jumpifmovehadnoeffect BattleScript_MoveEnd healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER + seteffectwithchance tryfaintmon BS_ATTACKER, FALSE, NULL + tryfaintmon BS_TARGET, FALSE, NULL + jumpifmovehadnoeffect BattleScript_MoveEnd goto BattleScript_MoveEnd BattleScript_EffectHitSwitchTarget: From 3918542b3e10a441344fb70ac7411b3dbcc55ce3 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 20 Dec 2020 21:31:36 -0300 Subject: [PATCH 15/15] Corrections to Final Gambit's effect's battle script -Restored the call to resultmessage -Corrected its behavior against Endured, Focus Banded/Sashed and Sturdy foes --- data/battle_scripts_1.s | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 8065073fcd..0856324e2d 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1082,6 +1082,9 @@ BattleScript_EffectFinalGambit: waitstate healthbarupdate BS_TARGET datahpupdate BS_TARGET + resultmessage + waitmessage 0x40 + dmgtocurrattackerhp healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER seteffectwithchance