From 31a602f3b64eb58efaf8065614f13abfaa4048e9 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 8 Nov 2022 10:10:21 -0300 Subject: [PATCH 01/27] Optimized Intimidate's code --- asm/macros/battle_script.inc | 6 +-- data/battle_scripts_1.s | 43 +++++++++++----------- include/battle.h | 4 +- include/battle_scripts.h | 1 - include/battle_util.h | 12 +++--- include/constants/battle_script_commands.h | 2 +- src/battle_main.c | 2 - src/battle_script_commands.c | 30 ++------------- src/battle_util.c | 32 +++------------- 9 files changed, 40 insertions(+), 92 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 1a6641e76..0e3aab037 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1162,7 +1162,7 @@ .4byte \ptr .endm - .macro trygetintimidatetarget ptr:req + .macro unused2 ptr:req .byte 0xe1 .4byte \ptr .endm @@ -1326,8 +1326,8 @@ various \battler, VARIOUS_GET_BATTLER_FAINTED .endm - .macro resetintimidatetracebits battler:req - various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS + .macro resetswitchinabilitybits battler:req + various \battler, VARIOUS_RESET_SWITCH_IN_ABILITY_BITS .endm .macro updatechoicemoveonlvlup battler:req diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 63719e2b6..4514de868 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6128,7 +6128,7 @@ BattleScript_FaintedMonTryChoose: jumpifbyte CMP_EQUAL, gBattleCommunication, PARTY_SIZE, BattleScript_FaintedMonSendOutNew @ Switch Pokémon before opponent atknameinbuff1 - resetintimidatetracebits BS_ATTACKER + resetswitchinabilitybits BS_ATTACKER hpthresholds2 BS_ATTACKER printstring STRINGID_RETURNMON switchoutabilities BS_ATTACKER @@ -8198,19 +8198,15 @@ BattleScript_TryAdrenalineOrb: BattleScript_TryAdrenalineOrbRet: return -BattleScript_IntimidateActivatesEnd3:: - call BattleScript_PauseIntimidateActivates - end3 - -BattleScript_PauseIntimidateActivates: - pause B_WAIT_TIME_SHORT BattleScript_IntimidateActivates:: + showabilitypopup BS_ATTACKER + pause B_WAIT_TIME_LONG + destroyabilitypopup setbyte gBattlerTarget, 0 - call BattleScript_AbilityPopUp -BattleScript_IntimidateActivatesLoop: - setstatchanger STAT_ATK, 1, TRUE - trygetintimidatetarget BattleScript_IntimidateActivatesReturn - jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateActivatesLoopIncrement +BattleScript_IntimidateLoop: + jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_IntimidateLoopIncrement + jumpiftargetally BattleScript_IntimidateLoopIncrement + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_IntimidatePrevented @@ -8220,27 +8216,30 @@ BattleScript_IntimidateActivatesLoop: jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented .endif - statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_IntimidateActivatesLoopIncrement - jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 1, BattleScript_IntimidateActivatesLoopIncrement +BattleScript_IntimidateEffect: + statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 printstring STRINGID_PKMNCUTSATTACKWITH waitmessage B_WAIT_TIME_LONG - call BattleScript_TryAdrenalineOrb -BattleScript_IntimidateActivatesLoopIncrement: +@ Perform stat nerf +BattleScript_IntimidateLoopIncrement: addbyte gBattlerTarget, 1 - goto BattleScript_IntimidateActivatesLoop -BattleScript_IntimidateActivatesReturn: - return + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_IntimidateLoop +BattleScript_IntimidateEnd: + destroyabilitypopup + pause B_WAIT_TIME_MED + end3 + BattleScript_IntimidatePrevented: - pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp + pause B_WAIT_TIME_LONG setbyte gBattleCommunication STAT_ATK - stattextbuffer BS_ATTACKER + stattextbuffer BS_TARGET printstring STRINGID_STATWASNOTLOWERED waitmessage B_WAIT_TIME_LONG call BattleScript_TryAdrenalineOrb - goto BattleScript_IntimidateActivatesLoopIncrement + goto BattleScript_IntimidateLoopIncrement BattleScript_DroughtActivates:: pause B_WAIT_TIME_SHORT diff --git a/include/battle.h b/include/battle.h index 5d9f57e43..9670aa4e6 100644 --- a/include/battle.h +++ b/include/battle.h @@ -53,7 +53,7 @@ struct ResourceFlags #define RESOURCE_FLAG_FLASH_FIRE 0x1 #define RESOURCE_FLAG_ROOST 0x2 #define RESOURCE_FLAG_UNBURDEN 0x4 -#define RESOURCE_FLAG_INTIMIDATED 0x8 +#define RESOURCE_FLAG_UNUSED 0x8 #define RESOURCE_FLAG_TRACED 0x10 #define RESOURCE_FLAG_EMERGENCY_EXIT 0x20 #define RESOURCE_FLAG_NEUTRALIZING_GAS 0x40 @@ -158,7 +158,6 @@ struct SpecialStatus u8 statLowered:1; u8 lightningRodRedirected:1; u8 restoredBattlerSprite: 1; - u8 intimidatedMon:1; u8 traced:1; u8 ppNotAffectedByPressure:1; u8 faintedHasReplacement:1; @@ -583,7 +582,6 @@ struct BattleStruct u8 AI_itemFlags[2]; u16 choicedMove[MAX_BATTLERS_COUNT]; u16 changedItems[MAX_BATTLERS_COUNT]; - u8 intimidateBattler; u8 switchInItemsCounter; u8 arenaTurnCounter; u8 turnSideTracker; diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 23f18e3be..7fdc5758c 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -152,7 +152,6 @@ extern const u8 BattleScript_ShedSkinActivates[]; extern const u8 BattleScript_WeatherFormChanges[]; extern const u8 BattleScript_WeatherFormChangesLoop[]; extern const u8 BattleScript_WeatherFormChange[]; -extern const u8 BattleScript_IntimidateActivatesEnd3[]; extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_DroughtActivates[]; extern const u8 BattleScript_TookAttack[]; diff --git a/include/battle_util.h b/include/battle_util.h index 3f516daba..257b5a743 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -29,13 +29,11 @@ #define ABILITYEFFECT_WEATHER_FORM 7 #define ABILITYEFFECT_SYNCHRONIZE 8 #define ABILITYEFFECT_ATK_SYNCHRONIZE 9 -#define ABILITYEFFECT_INTIMIDATE1 10 -#define ABILITYEFFECT_INTIMIDATE2 11 -#define ABILITYEFFECT_TRACE1 12 -#define ABILITYEFFECT_TRACE2 13 -#define ABILITYEFFECT_MOVE_END_OTHER 14 -#define ABILITYEFFECT_NEUTRALIZINGGAS 15 -#define ABILITYEFFECT_FIELD_SPORT 16 // Only used if B_SPORT_TURNS < GEN_6 +#define ABILITYEFFECT_TRACE1 10 +#define ABILITYEFFECT_TRACE2 11 +#define ABILITYEFFECT_MOVE_END_OTHER 12 +#define ABILITYEFFECT_NEUTRALIZINGGAS 13 +#define ABILITYEFFECT_FIELD_SPORT 14 // Only used if B_SPORT_TURNS < GEN_6 // Special cases #define ABILITYEFFECT_MUD_SPORT 252 // Only used if B_SPORT_TURNS < GEN_6 #define ABILITYEFFECT_WATER_SPORT 253 // Only used if B_SPORT_TURNS < GEN_6 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 06a09fc17..2d6db1fbb 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -93,7 +93,7 @@ #define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 #define VARIOUS_GET_MOVE_TARGET 3 #define VARIOUS_GET_BATTLER_FAINTED 4 -#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 +#define VARIOUS_RESET_SWITCH_IN_ABILITY_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 #define VARIOUS_RESET_PLAYER_FAINTED 7 #define VARIOUS_PALACE_FLAVOR_TEXT 8 diff --git a/src/battle_main.c b/src/battle_main.c index 9790810a1..74b844012 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3721,8 +3721,6 @@ static void TryDoEventsBeforeFirstTurn(void) if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBattlerAttacker, 0, 0, 0) != 0) return; } - if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) != 0) - return; if (AbilityBattleEffects(ABILITYEFFECT_TRACE1, 0, 0, 0, 0) != 0) return; // Check all switch in items having effect from the fastest mon to slowest. diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3e52aa618..036ac3bd1 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -545,7 +545,7 @@ static void Cmd_setuserstatus3(void); static void Cmd_assistattackselect(void); static void Cmd_trysetmagiccoat(void); static void Cmd_trysetsnatch(void); -static void Cmd_trygetintimidatetarget(void); +static void Cmd_unused2(void); static void Cmd_switchoutabilities(void); static void Cmd_jumpifhasnohp(void); static void Cmd_getsecretpowereffect(void); @@ -804,7 +804,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_assistattackselect, //0xDE Cmd_trysetmagiccoat, //0xDF Cmd_trysetsnatch, //0xE0 - Cmd_trygetintimidatetarget, //0xE1 + Cmd_unused2, //0xE1 Cmd_switchoutabilities, //0xE2 Cmd_jumpifhasnohp, //0xE3 Cmd_getsecretpowereffect, //0xE4 @@ -6783,7 +6783,6 @@ static void Cmd_switchineffects(void) if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0) || ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE) - || AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE2, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE2, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_WEATHER_FORM, 0, 0, 0, 0)) return; @@ -8469,8 +8468,7 @@ static void Cmd_various(void) else gBattleCommunication[0] = FALSE; break; - case VARIOUS_RESET_INTIMIDATE_TRACE_BITS: - gSpecialStatuses[gActiveBattler].intimidatedMon = FALSE; + case VARIOUS_RESET_SWITCH_IN_ABILITY_BITS: gSpecialStatuses[gActiveBattler].traced = FALSE; gSpecialStatuses[gActiveBattler].switchInAbilityDone = FALSE; break; @@ -8634,7 +8632,6 @@ static void Cmd_various(void) gBattlescriptCurrInstr += 3; AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, gActiveBattler, 0, 0, 0); AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0); - AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE2, gActiveBattler, 0, 0, 0); AbilityBattleEffects(ABILITYEFFECT_TRACE2, gActiveBattler, 0, 0, 0); return; case VARIOUS_SAVE_TARGET: @@ -13533,27 +13530,8 @@ static void Cmd_trysetsnatch(void) } } -static void Cmd_trygetintimidatetarget(void) +static void Cmd_unused2(void) { - u8 side; - - gBattleScripting.battler = gBattleStruct->intimidateBattler; - side = GetBattlerSide(gBattleScripting.battler); - - PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.battler].ability) - - for (;gBattlerTarget < gBattlersCount; gBattlerTarget++) - { - if (GetBattlerSide(gBattlerTarget) == side) - continue; - if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) - break; - } - - if (gBattlerTarget >= gBattlersCount) - gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); - else - gBattlescriptCurrInstr += 5; } static void Cmd_switchoutabilities(void) diff --git a/src/battle_util.c b/src/battle_util.c index 9c3e189d7..bc5037abd 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4780,10 +4780,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITY_INTIMIDATE: - if (!(gSpecialStatuses[battler].intimidatedMon)) + if (!gSpecialStatuses[battler].switchInAbilityDone) { - gBattleResources->flags->flags[battler] |= RESOURCE_FLAG_INTIMIDATED; - gSpecialStatuses[battler].intimidatedMon = TRUE; + gSpecialStatuses[battler].switchInAbilityDone = TRUE; + SET_STATCHANGER(STAT_ATK, 1, TRUE); + BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivates); + effect++; } break; case ABILITY_FORECAST: @@ -5958,30 +5960,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } } break; - case ABILITYEFFECT_INTIMIDATE1: - case ABILITYEFFECT_INTIMIDATE2: - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerAbility(i) == ABILITY_INTIMIDATE && gBattleResources->flags->flags[i] & RESOURCE_FLAG_INTIMIDATED - && (IsBattlerAlive(BATTLE_OPPOSITE(i)) || IsBattlerAlive(BATTLE_PARTNER(BATTLE_OPPOSITE(i))))) // At least one opposing mon has to be alive. - { - gBattleResources->flags->flags[i] &= ~RESOURCE_FLAG_INTIMIDATED; - gLastUsedAbility = ABILITY_INTIMIDATE; - if (caseID == ABILITYEFFECT_INTIMIDATE1) - { - BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivatesEnd3); - } - else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_IntimidateActivates; - } - battler = gBattlerAbility = gBattleStruct->intimidateBattler = i; - effect++; - break; - } - } - break; case ABILITYEFFECT_TRACE1: case ABILITYEFFECT_TRACE2: for (i = 0; i < gBattlersCount; i++) From f7d1a12d2d36cd704a76c6a207395ee25395e462 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 12:15:44 +0100 Subject: [PATCH 02/27] Data entry for gen9 moves --- data/battle_anim_scripts.s | 97 ++++ include/config.h | 3 +- include/constants/moves.h | 54 +- src/battle_debug.c | 2 +- src/data/battle_moves.h | 790 ++++++++++++++++++++++++++++++ src/data/contest_moves.h | 96 ++++ src/data/text/move_descriptions.h | 273 +++++++++++ src/data/text/move_names.h | 96 ++++ 8 files changed, 1408 insertions(+), 3 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index ff407c0c4..84d0fd6e5 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -805,6 +805,55 @@ gBattleAnims_Moves:: .4byte Move_SANDSEAR_STORM .4byte Move_LUNAR_BLESSING .4byte Move_TAKE_HEART +@@@@@@@@@@@@ GEN 9 @@@@@@@@@@@@ + .4byte Move_TERA_BLAST + .4byte Move_SILK_TRAP + .4byte Move_AXE_KICK + .4byte Move_LAST_RESPECTS + .4byte Move_LUMINA_CRASH + .4byte Move_ORDER_UP + .4byte Move_JET_PUNCH + .4byte Move_SPICY_EXTRACT + .4byte Move_SPIN_OUT + .4byte Move_POPULATION_BOMB + .4byte Move_ICE_SPINNER + .4byte Move_GLAIVE_RUSH + .4byte Move_REVIVAL_BLESSING + .4byte Move_SALT_CURE + .4byte Move_TRIPLE_DIVE + .4byte Move_MORTAL_SPIN + .4byte Move_DOODLE + .4byte Move_FILLET_AWAY + .4byte Move_KOWTOW_CLEAVE + .4byte Move_FLOWER_TRICK + .4byte Move_TORCH_SONG + .4byte Move_AQUA_STEP + .4byte Move_RAGING_BULL + .4byte Move_MAKE_IT_RAIN + .4byte Move_RUINATION + .4byte Move_COLLISION_COURSE + .4byte Move_ELECTRO_DRIFT + .4byte Move_SHED_TAIL + .4byte Move_CHILLY_RECEPTION + .4byte Move_TIDY_UP + .4byte Move_SNOWSCAPE + .4byte Move_POUNCE + .4byte Move_TRAILBLAZE + .4byte Move_CHILLING_WATER + .4byte Move_HYPER_DRILL + .4byte Move_TWIN_BEAM + .4byte Move_RAGE_FIST + .4byte Move_ARMOR_CANNON + .4byte Move_BITTER_BLADE + .4byte Move_DOUBLE_SHOCK + .4byte Move_GIGATON_HAMMER + .4byte Move_COMEUPPANCE + .4byte Move_AQUA_CUTTER + .4byte Move_BLAZING_TORQUE + .4byte Move_WICKED_TORQUE + .4byte Move_NOXIOUS_TORQUE + .4byte Move_COMBAT_TORQUE + .4byte Move_MAGICAL_TORQUE @@@@ Z MOVES .4byte Move_BREAKNECK_BLITZ .4byte Move_ALL_OUT_PUMMELING @@ -14345,6 +14394,54 @@ Move_WILDBOLT_STORM:: Move_SANDSEAR_STORM:: Move_LUNAR_BLESSING:: Move_TAKE_HEART:: +Move_TERA_BLAST:: +Move_SILK_TRAP:: +Move_AXE_KICK:: +Move_LAST_RESPECTS:: +Move_LUMINA_CRASH:: +Move_ORDER_UP:: +Move_JET_PUNCH:: +Move_SPICY_EXTRACT:: +Move_SPIN_OUT:: +Move_POPULATION_BOMB:: +Move_ICE_SPINNER:: +Move_GLAIVE_RUSH:: +Move_REVIVAL_BLESSING:: +Move_SALT_CURE:: +Move_TRIPLE_DIVE:: +Move_MORTAL_SPIN:: +Move_DOODLE:: +Move_FILLET_AWAY:: +Move_KOWTOW_CLEAVE:: +Move_FLOWER_TRICK:: +Move_TORCH_SONG:: +Move_AQUA_STEP:: +Move_RAGING_BULL:: +Move_MAKE_IT_RAIN:: +Move_RUINATION:: +Move_COLLISION_COURSE:: +Move_ELECTRO_DRIFT:: +Move_SHED_TAIL:: +Move_CHILLY_RECEPTION:: +Move_TIDY_UP:: +Move_SNOWSCAPE:: +Move_POUNCE:: +Move_TRAILBLAZE:: +Move_CHILLING_WATER:: +Move_HYPER_DRILL:: +Move_TWIN_BEAM:: +Move_RAGE_FIST:: +Move_ARMOR_CANNON:: +Move_BITTER_BLADE:: +Move_DOUBLE_SHOCK:: +Move_GIGATON_HAMMER:: +Move_COMEUPPANCE:: +Move_AQUA_CUTTER:: +Move_BLAZING_TORQUE:: +Move_WICKED_TORQUE:: +Move_NOXIOUS_TORQUE:: +Move_COMBAT_TORQUE:: +Move_MAGICAL_TORQUE:: end @to do @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ diff --git a/include/config.h b/include/config.h index ad8b3268f..590972bae 100644 --- a/include/config.h +++ b/include/config.h @@ -70,6 +70,7 @@ #define GEN_6 3 #define GEN_7 4 #define GEN_8 5 -#define GEN_LATEST GEN_8 +#define GEN_9 6 +#define GEN_LATEST GEN_9 #endif // GUARD_CONFIG_H diff --git a/include/constants/moves.h b/include/constants/moves.h index 75691de76..20cb32c54 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -809,7 +809,59 @@ #define MOVES_COUNT_GEN8 779 -#define MOVES_COUNT MOVES_COUNT_GEN8 +// Gen 9 moves. +#define MOVE_TERA_BLAST 779 +#define MOVE_SILK_TRAP 780 +#define MOVE_AXE_KICK 781 +#define MOVE_LAST_RESPECTS 782 +#define MOVE_LUMINA_CRASH 783 +#define MOVE_ORDER_UP 784 +#define MOVE_JET_PUNCH 785 +#define MOVE_SPICY_EXTRACT 786 +#define MOVE_SPIN_OUT 787 +#define MOVE_POPULATION_BOMB 788 +#define MOVE_ICE_SPINNER 789 +#define MOVE_GLAIVE_RUSH 790 +#define MOVE_REVIVAL_BLESSING 791 +#define MOVE_SALT_CURE 792 +#define MOVE_TRIPLE_DIVE 793 +#define MOVE_MORTAL_SPIN 794 +#define MOVE_DOODLE 795 +#define MOVE_FILLET_AWAY 796 +#define MOVE_KOWTOW_CLEAVE 797 +#define MOVE_FLOWER_TRICK 798 +#define MOVE_TORCH_SONG 799 +#define MOVE_AQUA_STEP 800 +#define MOVE_RAGING_BULL 801 +#define MOVE_MAKE_IT_RAIN 802 +#define MOVE_RUINATION 803 +#define MOVE_COLLISION_COURSE 804 +#define MOVE_ELECTRO_DRIFT 805 +#define MOVE_SHED_TAIL 806 +#define MOVE_CHILLY_RECEPTION 807 +#define MOVE_TIDY_UP 808 +#define MOVE_SNOWSCAPE 809 +#define MOVE_POUNCE 810 +#define MOVE_TRAILBLAZE 811 +#define MOVE_CHILLING_WATER 812 +#define MOVE_HYPER_DRILL 813 +#define MOVE_TWIN_BEAM 814 +#define MOVE_RAGE_FIST 815 +#define MOVE_ARMOR_CANNON 816 +#define MOVE_BITTER_BLADE 817 +#define MOVE_DOUBLE_SHOCK 818 +#define MOVE_GIGATON_HAMMER 819 +#define MOVE_COMEUPPANCE 820 +#define MOVE_AQUA_CUTTER 821 +#define MOVE_BLAZING_TORQUE 822 +#define MOVE_WICKED_TORQUE 823 +#define MOVE_NOXIOUS_TORQUE 824 +#define MOVE_COMBAT_TORQUE 825 +#define MOVE_MAGICAL_TORQUE 826 + +#define MOVES_COUNT_GEN9 827 + +#define MOVES_COUNT MOVES_COUNT_GEN9 // Z Moves #define MOVE_BREAKNECK_BLITZ (MOVES_COUNT + 0) diff --git a/src/battle_debug.c b/src/battle_debug.c index 568b9a96e..0868ac030 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -1767,7 +1767,7 @@ static void SetUpModifyArrows(struct BattleDebugMenu *data) break; case LIST_ITEM_MOVES: data->modifyArrows.minValue = 0; - data->modifyArrows.maxValue = MOVES_COUNT_GEN8 - 1; + data->modifyArrows.maxValue = MOVES_COUNT_GEN9 - 1; data->modifyArrows.maxDigits = 3; if (data->currentSecondaryListItemId == 4) { diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 346309c55..41d772598 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13618,6 +13618,796 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, }, + [MOVE_TERA_BLAST] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_TERA_BLAST, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_SILK_TRAP] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_PROTECT with extra checks + .power = 0, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 4, + .flags = FLAG_PROTECTION_MOVE, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_AXE_KICK] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_RECOIL_IF_MISS + 30% chance to confuse + .power = 120, + .type = TYPE_FIGHTING, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 190, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_LAST_RESPECTS] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_LAST_RESPECTS + .power = 50, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_LUMINA_CRASH] = + { + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2, + .power = 80, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_ORDER_UP] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_ORDER_UP + .power = 80, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, // No King's Rock I believe? I may be mistaken + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_JET_PUNCH] = + { + .effect = EFFECT_HIT, + .power = 60, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, // I assume Iron Fist is relevant here, but untested + .split = SPLIT_PHYSICAL, + .zMovePower = 120, + .zMoveEffect = Z_EFFECT_NONE, + // The datamine master sheet mentions uncopiable by Metronome but that sounds odd? not yet implemented + }, + + [MOVE_SPICY_EXTRACT] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_SPICY_EXTRACT + .power = 0, + .type = TYPE_GRASS, + .accuracy = 0, // Supposedly never misses? needs a double check? + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_NONE, + // The datamine master sheet mentions uncopiable by Metronome but that sounds odd? not yet implemented + }, + + [MOVE_SPIN_OUT] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_SPIN_OUT + .power = 100, + .type = TYPE_STEEL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 180, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_POPULATION_BOMB] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_MULTI_HIT maybe? + .power = 20, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 40, + .zMoveEffect = Z_EFFECT_NONE, + //Supposedly uncallable by Metronome? (if so, needs implementation) + //The master sheet mentions a "slicing" flag but I'm not sure what it refers to + }, + + [MOVE_ICE_SPINNER] = + { + .effect = EFFECT_DAMAGE_SET_TERRAIN, + .power = 80, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE, + .argument = 1, //remove terrain + }, + + [MOVE_GLAIVE_RUSH] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_GLAIVE_RUSH + .power = 120, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 190, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_REVIVAL_BLESSING] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_REVIVAL_BLESSING + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 1, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_NONE, + // Uncallable by Metronome (to be implemented) + }, + + [MOVE_SALT_CURE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_SALT_CURE + .power = 40, + .type = TYPE_ROCK, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 80, + .zMoveEffect = Z_EFFECT_NONE, + // Supposedly uncallable by Metronome, but dubious + }, + + [MOVE_TRIPLE_DIVE] = + { + .effect = EFFECT_TRIPLE_KICK, + .power = 30, + .type = TYPE_WATER, + .accuracy = 95, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_MORTAL_SPIN] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_MORTAL_SPIN + .power = 30, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 60, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_DOODLE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_DOODLE + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, // Supposedly unconfirmed? + .priority = 0, + .flags = 0, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_NONE, + // Supposedly uncallable by Metronome (unimplemented) + }, + + [MOVE_FILLET_AWAY] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_FILLET_AWAY + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_RECOVER_HP, + // Supposedly uncallable by Metronome (unimplemented) + }, + + [MOVE_KOWTOW_CLEAVE] = + { + .effect = EFFECT_HIT, + .power = 85, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE, + // Needs a "slicing" flag (not sure what it refers to) + }, + + [MOVE_FLOWER_TRICK] = + { + .effect = EFFECT_ALWAYS_CRIT, + .power = 70, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 140, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_TORCH_SONG] = + { + .effect = EFFECT_SP_ATTACK_UP_HIT, + .power = 80, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, + .split = SPLIT_SPECIAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_AQUA_STEP] = + { + .effect = EFFECT_SPEED_UP_HIT, + .power = 80, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DANCE, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_RAGING_BULL] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_RAGING_BULL + .power = 90, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 175, + .zMoveEffect = Z_EFFECT_NONE, + // Uncallable by Metronome (to be implemented) + }, + + [MOVE_MAKE_IT_RAIN] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_MAKE_IT_RAIN + .power = 120, + .type = TYPE_STEEL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_SPECIAL, + .zMovePower = 190, + .zMoveEffect = Z_EFFECT_NONE, + // Uncallable by Metronome (to be implemented) + }, + + [MOVE_RUINATION] = + { + .effect = EFFECT_SUPER_FANG, + .power = 1, + .type = TYPE_DARK, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_SPECIAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, + // Uncallable by Metronome (to be implemented) + }, + + [MOVE_COLLISION_COURSE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_COLLISION_COURSE + .power = 100, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 180, + .zMoveEffect = Z_EFFECT_NONE, + // Uncallable by Metronome (to be implemented) + }, + + [MOVE_ELECTRO_DRIFT] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_COLLISION_COURSE + .power = 100, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_SPECIAL, + .zMovePower = 180, + .zMoveEffect = Z_EFFECT_NONE, + // Uncallable by Metronome (to be implemented) + }, + + [MOVE_SHED_TAIL] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_SHED_TAIL + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_RESET_STATS, + // Uncallable by Metronome (to be implemented) + // Supposedly unsnatchable? + }, + + [MOVE_CHILLY_RECEPTION] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_CHILLY_RECEPTION + .power = 0, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_ALL_BATTLERS, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_SPD_UP_1, + // Supposedly uncallable by Metronome? (to be implemented) + }, + + [MOVE_TIDY_UP] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_TIDY_UP + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_NONE, + // Supposedly uncallable by Metronome? (to be implemented) + // Supposedly unsnatchable? + }, + + [MOVE_SNOWSCAPE] = + { + .effect = EFFECT_HAIL, + .power = 0, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_ALL_BATTLERS, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + .split = SPLIT_STATUS, + .zMovePower = 0, + .zMoveEffect = Z_EFFECT_SPD_UP_1, + // Currently an exact copy of Hail until we figure out what to do with it + }, + + [MOVE_POUNCE] = + { + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 50, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .split = SPLIT_PHYSICAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_TRAILBLAZE] = + { + .effect = EFFECT_SPEED_UP_HIT, + .power = 50, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .split = SPLIT_PHYSICAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_CHILLING_WATER] = + { + .effect = EFFECT_ATTACK_DOWN_HIT, + .power = 50, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .split = SPLIT_SPECIAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_HYPER_DRILL] = + { + .effect = EFFECT_HIT, + .power = 100, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 180, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_TWIN_BEAM] = + { + .effect = EFFECT_HIT, + .power = 40, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, + .split = SPLIT_SPECIAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_RAGE_FIST] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_RAGE_FIST + .power = 50, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, + .split = SPLIT_PHYSICAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_ARMOR_CANNON] = + { + .effect = EFFECT_CLOSE_COMBAT, + .power = 120, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + .zMovePower = 190, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_BITTER_BLADE] = + { + .effect = EFFECT_ABSORB, + .power = 90, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE, + // Needs the "slicing" flag + }, + + [MOVE_DOUBLE_SHOCK] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_DOUBLE_SHOCK + .power = 120, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 190, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_GIGATON_HAMMER] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_GIGATON_HAMMER + .power = 160, + .type = TYPE_STEEL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 200, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_COMEUPPANCE] = + { + .effect = EFFECT_METAL_BURST, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_AQUA_CUTTER] = + { + .effect = EFFECT_HIT, + .power = 70, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, + .split = SPLIT_PHYSICAL, + .zMovePower = 140, + .zMoveEffect = Z_EFFECT_NONE, + // Needs the "slicing" flag + }, + + [MOVE_BLAZING_TORQUE] = + { + .effect = EFFECT_BURN_HIT, + .power = 80, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_WICKED_TORQUE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_SLEEP_HIT + .power = 80, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_NOXIOUS_TORQUE] = + { + .effect = EFFECT_POISON_HIT, + .power = 100, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_COMBAT_TORQUE] = + { + .effect = EFFECT_PARALYZE_HIT, + .power = 100, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE + }, + + [MOVE_MAGICAL_TORQUE] = + { + .effect = EFFECT_CONFUSE_HIT, + .power = 100, + .type = TYPE_FAIRY, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + .split = SPLIT_PHYSICAL, + .zMovePower = 160, + .zMoveEffect = Z_EFFECT_NONE + }, + // Z-Moves [MOVE_BREAKNECK_BLITZ] = { diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h index 244f0ddb2..2de44b348 100644 --- a/src/data/contest_moves.h +++ b/src/data/contest_moves.h @@ -5966,6 +5966,102 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = [MOVE_LUNAR_BLESSING] = {0}, // TODO [MOVE_TAKE_HEART] = {0}, // TODO + + [MOVE_TERA_BLAST] = {0}, // TODO + + [MOVE_SILK_TRAP] = {0}, // TODO + + [MOVE_AXE_KICK] = {0}, // TODO + + [MOVE_LAST_RESPECTS] = {0}, // TODO + + [MOVE_LUMINA_CRASH] = {0}, // TODO + + [MOVE_ORDER_UP] = {0}, // TODO + + [MOVE_JET_PUNCH] = {0}, // TODO + + [MOVE_SPICY_EXTRACT] = {0}, // TODO + + [MOVE_SPIN_OUT] = {0}, // TODO + + [MOVE_POPULATION_BOMB] = {0}, // TODO + + [MOVE_ICE_SPINNER] = {0}, // TODO + + [MOVE_GLAIVE_RUSH] = {0}, // TODO + + [MOVE_REVIVAL_BLESSING] = {0}, // TODO + + [MOVE_SALT_CURE] = {0}, // TODO + + [MOVE_TRIPLE_DIVE] = {0}, // TODO + + [MOVE_MORTAL_SPIN] = {0}, // TODO + + [MOVE_DOODLE] = {0}, // TODO + + [MOVE_FILLET_AWAY] = {0}, // TODO + + [MOVE_KOWTOW_CLEAVE] = {0}, // TODO + + [MOVE_FLOWER_TRICK] = {0}, // TODO + + [MOVE_TORCH_SONG] = {0}, // TODO + + [MOVE_AQUA_STEP] = {0}, // TODO + + [MOVE_RAGING_BULL] = {0}, // TODO + + [MOVE_MAKE_IT_RAIN] = {0}, // TODO + + [MOVE_RUINATION] = {0}, // TODO + + [MOVE_COLLISION_COURSE] = {0}, // TODO + + [MOVE_ELECTRO_DRIFT] = {0}, // TODO + + [MOVE_SHED_TAIL] = {0}, // TODO + + [MOVE_CHILLY_RECEPTION] = {0}, // TODO + + [MOVE_TIDY_UP] = {0}, // TODO + + [MOVE_SNOWSCAPE] = {0}, // TODO + + [MOVE_POUNCE] = {0}, // TODO + + [MOVE_TRAILBLAZE] = {0}, // TODO + + [MOVE_CHILLING_WATER] = {0}, // TODO + + [MOVE_HYPER_DRILL] = {0}, // TODO + + [MOVE_TWIN_BEAM] = {0}, // TODO + + [MOVE_RAGE_FIST] = {0}, // TODO + + [MOVE_ARMOR_CANNON] = {0}, // TODO + + [MOVE_BITTER_BLADE] = {0}, // TODO + + [MOVE_DOUBLE_SHOCK] = {0}, // TODO + + [MOVE_GIGATON_HAMMER] = {0}, // TODO + + [MOVE_COMEUPPANCE] = {0}, // TODO + + [MOVE_AQUA_CUTTER] = {0}, // TODO + + [MOVE_BLAZING_TORQUE] = {0}, // TODO + + [MOVE_WICKED_TORQUE] = {0}, // TODO + + [MOVE_NOXIOUS_TORQUE] = {0}, // TODO + + [MOVE_COMBAT_TORQUE] = {0}, // TODO + + [MOVE_MAGICAL_TORQUE] = {0}, // TODO }; const struct ContestEffect gContestEffects[] = diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index a4a1941ad..f77989d05 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2964,6 +2964,7 @@ static const u8 sPsyshieldBashDescription[] = _( static const u8 sPowerShiftDescription[] = _( "The user swaps its offensive\n" "and defensive stats."); +/* The user swaps its Attack and Defense stats. */ static const u8 sStoneAxeDescription[] = _( "High critical hit ratio. Sets\n" @@ -2976,50 +2977,81 @@ static const u8 sSpringtideStormDescription[] = _( static const u8 sMysticalPowerDescription[] = _( "Increases the user's better\n" "of Atk. and Def. stats."); +/* The user attacks by emitting a mysterious power. +This also boosts the user’s Sp. Atk stat. */ static const u8 sRagingFuryDescription[] = _( "Viciously spews flames at\n" "a foe, becoming fixated."); +// "A rampage of 2 to 3 turns\n" +// "that confuses the user."); + +/* The user rampages around spewing flames for two to +three turns. The user then becomes confused. */ static const u8 sWaveCrashDescription[] = _( "A water slam. Hurts the user\n" "and raises its Action Speed."); +/* The user shrouds itself in water and slams into the target +with its whole body to inflict damage. This also damages +the user quite a lot. */ static const u8 sChloroblastDescription[] = _( "An blast that hurts the user\n" "and lowers its Action Speed."); +/* The user launches its amassed chlorophyll to inflict +damage on the target. This also damages the user. */ static const u8 sMountainGaleDescription[] = _( "The user hurls giant chunks\n" "of ice to damage the foe."); +/* The user hurls giant chunks of ice at the target to inflict +damage. This may also make the target flinch. */ static const u8 sVictoryDanceDescription[] = _( "Dances to raise damage 50%,\n" "plus offenses and defenses."); +/* The user performs an intense dance to usher in victory, +boosting its Attack, Defense, and Speed stats. */ static const u8 sHeadlongRushDescription[] = _( "Hits with a full-body tackle,\n" "lowering the foe's Defense."); +/* The user smashes into the target in a full-body tackle. +This also lowers the user’s Defense and Sp. Def stats. */ static const u8 sBarbBarrageDescription[] = _( "Can poison on impact. Powers\n" "up if the foe has an ailment."); +/* The user launches countless toxic barbs to inflict +damage. This may also poison the target. This move’s +power is doubled if the target is already poisoned. */ static const u8 sEsperWingDescription[] = _( "High critical hit ratio.\n" "Ups the user's Action Speed."); +/* The user slashes the target with aura-enriched wings. +This also boosts the user’s Speed stat. This move has +a heightened chance of landing a critical hit. */ static const u8 sBitterMaliceDescription[] = _( "Hurts a foe harder if it has\n" "an ailment. Can give FrstBte."); +/* The user attacks the target with spine-chilling resentment. +This also lowers the target’s Attack stat. */ static const u8 sShelterDescription[] = _( "The user hardens their skin\n" "and obscures itself."); +/* The user makes its skin as hard as an iron shield, sharply +boosting its Defense stat. */ static const u8 sTripleArrowsDescription[] = _( "Ups critical-hit ratio for 3\n" "turns. Lowers foe Defenses."); +/* The user kicks, then fires three arrows. This move has a +heightened chance of landing a critical hit and may also +lower the target’s Defense stat or make it flinch. */ static const u8 sInfernalParadeDescription[] = _( "Hurts a foe harder if it has\n" @@ -3032,6 +3064,9 @@ static const u8 sCeaselessEdgeDescription[] = _( static const u8 sBleakwindStormDescription[] = _( "Hits with brutal, cold winds.\n" "May inflict frostbite."); +/* The user attacks with savagely cold winds that cause +both body and spirit to tremble. This may also lower the +Speed stats of opposing Pokémon. */ static const u8 sWildboltStormDescription[] = _( "Hits with a brutal tempest.\n" @@ -3044,11 +3079,201 @@ static const u8 sSandsearStormDescription[] = _( static const u8 sLunarBlessingDescription[] = _( "The user heals themself and\n" "conceals their presence."); +/* The user receives a blessing from the crescent moon, +restoring HP and curing status conditions for itself and +its ally Pokémon currently in the battle. */ static const u8 sTakeHeartDescription[] = _( "The user lifts its spirits to\n" "heal and strengthen itself."); +static const u8 sTeraBlastDescription[] = _( + "Unleashes the user's Tera-type\n" + "energy if Terrastallized."); + +static const u8 sSilkTrapDescription[] =_( + "Protects itself, lowering\n" + "Speed on contact."); + +static const u8 sAxeKickDescription[] = _( + "May miss and hurt the kicker.\n" + "May cause confusion."); + +static const u8 sLastRespectsDescription[] = _( + "This move deals more damage\n" + "for each defeated ally."); + +static const u8 sLuminaCrashDescription[] = _( + "A mind-affecting light\n" + "harshly lowers Sp. Def."); + +static const u8 sOrderUpDescription[] = _( + "Boosts a user's stats\n" + "depending on Tatsugiri."); + +static const u8 sJetPunchDescription[] = _( + "A punch is thrown at blinding\n" + "speed to strike first."); + +static const u8 sSpicyExtractDescription[] = _( + "Sharply boosts target's Attack,\n" + "harshly lowers its Defense."); + +static const u8 sSpinOutDescription[] = _( + "Furiously strains its legs.\n" + "Harshly lowers user's Speed."); + +static const u8 sPopulationBombDescription[] = _( + "The user's fellows hit one\n" + "to ten times in a row."); + +static const u8 sIceSpinnerDescription[] = _( + "Ice-covered feet hit a foe\n" + "and destroy the terrain."); + +static const u8 sGlaiveRushDescription[] = _( + "Enemy attacks next turn always\n" + "hit with double damage."); + +static const u8 sRevivalBlessingDescription[] = _( + "Revives a fainted party {PKMN}\n" + "and restores half of its HP."); + +static const u8 sSaltCureDescription[] = _( + "Perpetually damages foe. Super-\n" + "effective against Steel and Water."); + +static const u8 sTripleDiveDescription[] = _( + "Hits the target with splashes\n" + "of water three times in a row."); + +static const u8 sMortalSpinDescription[] = _( + "Poisons all foes and eliminates\n" + "trapping moves and Leech Seed."); + +static const u8 sDoodleDescription[] = _( + "Changes user's and ally's\n" + "Ability into the target's."); + +static const u8 sFilletAwayDescription[] = _( + "Sharply boosts offenses and\n" + "Speed by using its own HP."); + +static const u8 sKowtowCleaveDescription[] = _( + "Slashes the foe after kowtowing.\n" + "This attack never misses."); + +static const u8 sFlowerTrickDescription[] = _( + "A bouquet of flowers never misses\n" + "and always lands a critical hit."); + +static const u8 sTorchSongDescription[] = _( + "Scorches the target. Boosts the\n" + "user's Sp. Atk."); + +static const u8 sAquaStepDescription[] = _( + "Light and fluid dance steps hit.\n" + "Boosts the user's Speed."); + +static const u8 sRagingBullDescription[] = _( + "A bull-like tackle breaks barriers.\n" + "The type depends on the user's form."); + +static const u8 sMakeItRainDescription[] = _( + "The user's Sp. Atk stat is lowered.\n" + "Money is earned after battle."); + +static const u8 sRuinationDescription[] = _( + "A summoned ruinous disaster cuts\n" + "the target's HP in half."); + +static const u8 sCollisionCourseDescription[] = _( + "A massive prehistoric explosion\n" + "that is stronger when supereffective."); + +static const u8 sElectroDriftDescription[] = _( + "Futuristic electricity piercing\n" + "that is stronger when supereffective."); + +static const u8 sShedTailDescription[] = _( + "Creates a Substitute for itself\n" + "before switching out."); + +static const u8 sChillyReceptionDescription[] =_( + "A bad joke summons a snowstorm.\n" + "The user also switches out."); + +static const u8 sTidyUpDescription[] = _( + "The user tidies up hazards.\n" + "Its Attack and Speed are raised."); + +static const u8 sSnowscapeDescription[] = _( + "Summons a snowstorm that\n" + "strikes every turn."); + +static const u8 sPounceDescription[] = _( + "The user pounces on the foe,\n" + "lowering its Speed."); + +static const u8 sTrailblazeDescription[] = _( + "The user attacks suddenly,\n" + "raising its Speed."); + +static const u8 sChillingWaterDescription[] = _( + "A shower with ice-cold water\n" + "lowers the target's Attack."); + +static const u8 sHyperDrillDescription[] = _( + "A spinning pointed part pierces\n" + "through a foe's Protect."); + +static const u8 sTwinBeamDescription[] = _( + "Mystical beams from the user's\n" + "eyes hit twice in a row."); + +static const u8 sRageFistDescription[] = _( + "The more the user has been hit,\n" + "the stronger the move."); + +static const u8 sArmorCannonDescription[] = _( + "A strong attack but lowers\n" + "the defensive stats."); + +static const u8 sBitterBladeDescription[] = _( + "An attack that absorbs\n" + "half the damage inflicted."); + +static const u8 sDoubleShockDescription[] = _( + "Discharges all electricity,\n" + "losing the Electric type."); + +static const u8 sGigatonHammerDescription[] = _( + "Swings a huge hammer. Can't\n" + "be used twice in a row."); + +static const u8 sComeuppanceDescription[] = _( + "Retaliates strongly against\n" + "who last hurt the user."); + +static const u8 sAquaCutterDescription[] = _( + "Pressurized water cut with a\n" + "high critical-hit ratio."); + +static const u8 sBlazingTorqueDescription[] = _( + "---"); + +static const u8 sWickedTorqueDescription[] = _( + "---"); + +static const u8 sNoxiousTorqueDescription[] = _( + "---"); + +static const u8 sCombatTorqueDescription[] = _( + "---"); + +static const u8 sMagicalTorqueDescription[] = _( + "---"); + const u8 gNotDoneYetDescription[] = _( "This move can't be used. Its\n" "effect is in development."); @@ -3838,4 +4063,52 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_SANDSEAR_STORM - 1] = sSandsearStormDescription, [MOVE_LUNAR_BLESSING - 1] = sLunarBlessingDescription, [MOVE_TAKE_HEART - 1] = sTakeHeartDescription, + [MOVE_TERA_BLAST - 1] = sTeraBlastDescription, + [MOVE_SILK_TRAP - 1] = sSilkTrapDescription, + [MOVE_AXE_KICK - 1] = sAxeKickDescription, + [MOVE_LAST_RESPECTS - 1] = sLastRespectsDescription, + [MOVE_LUMINA_CRASH - 1] = sLuminaCrashDescription, + [MOVE_ORDER_UP - 1] = sOrderUpDescription, + [MOVE_JET_PUNCH - 1] = sJetPunchDescription, + [MOVE_SPICY_EXTRACT - 1] = sSpicyExtractDescription, + [MOVE_SPIN_OUT - 1] = sSpinOutDescription, + [MOVE_POPULATION_BOMB - 1] = sPopulationBombDescription, + [MOVE_ICE_SPINNER - 1] = sIceSpinnerDescription, + [MOVE_GLAIVE_RUSH - 1] = sGlaiveRushDescription, + [MOVE_REVIVAL_BLESSING - 1] = sRevivalBlessingDescription, + [MOVE_SALT_CURE - 1] = sSaltCureDescription, + [MOVE_TRIPLE_DIVE - 1] = sTripleDiveDescription, + [MOVE_MORTAL_SPIN - 1] = sMortalSpinDescription, + [MOVE_DOODLE - 1] = sDoodleDescription, + [MOVE_FILLET_AWAY - 1] = sFilletAwayDescription, + [MOVE_KOWTOW_CLEAVE - 1] = sKowtowCleaveDescription, + [MOVE_FLOWER_TRICK - 1] = sFlowerTrickDescription, + [MOVE_TORCH_SONG - 1] = sTorchSongDescription, + [MOVE_AQUA_STEP - 1] = sAquaStepDescription, + [MOVE_RAGING_BULL - 1] = sRagingBullDescription, + [MOVE_MAKE_IT_RAIN - 1] = sMakeItRainDescription, + [MOVE_RUINATION - 1] = sRuinationDescription, + [MOVE_COLLISION_COURSE - 1] = sCollisionCourseDescription, + [MOVE_ELECTRO_DRIFT - 1] = sElectroDriftDescription, + [MOVE_SHED_TAIL - 1] = sShedTailDescription, + [MOVE_CHILLY_RECEPTION - 1] = sChillyReceptionDescription, + [MOVE_TIDY_UP - 1] = sTidyUpDescription, + [MOVE_SNOWSCAPE - 1] = sSnowscapeDescription, + [MOVE_POUNCE - 1] = sPounceDescription, + [MOVE_TRAILBLAZE - 1] = sTrailblazeDescription, + [MOVE_CHILLING_WATER - 1] = sChillingWaterDescription, + [MOVE_HYPER_DRILL - 1] = sHyperDrillDescription, + [MOVE_TWIN_BEAM - 1] = sTwinBeamDescription, + [MOVE_RAGE_FIST - 1] = sRageFistDescription, + [MOVE_ARMOR_CANNON - 1] = sArmorCannonDescription, + [MOVE_BITTER_BLADE - 1] = sBitterBladeDescription, + [MOVE_DOUBLE_SHOCK - 1] = sDoubleShockDescription, + [MOVE_GIGATON_HAMMER - 1] = sGigatonHammerDescription, + [MOVE_COMEUPPANCE - 1] = sComeuppanceDescription, + [MOVE_AQUA_CUTTER - 1] = sAquaCutterDescription, + [MOVE_BLAZING_TORQUE - 1] = sBlazingTorqueDescription, + [MOVE_WICKED_TORQUE - 1] = sWickedTorqueDescription, + [MOVE_NOXIOUS_TORQUE - 1] = sNoxiousTorqueDescription, + [MOVE_COMBAT_TORQUE - 1] = sCombatTorqueDescription, + [MOVE_MAGICAL_TORQUE - 1] = sMagicalTorqueDescription, }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 5f0a741cb..221d3db73 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -781,6 +781,54 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_SANDSEAR_STORM] = _("Sandsear Storm"), [MOVE_LUNAR_BLESSING] = _("Lunar Blessing"), [MOVE_TAKE_HEART] = _("Take Heart"), + [MOVE_TERA_BLAST] = _("Tera Blast"), + [MOVE_SILK_TRAP] = _("Silk Trap"), + [MOVE_AXE_KICK] = _("Axe Kick"), + [MOVE_LAST_RESPECTS] = _("Last Respects"), + [MOVE_LUMINA_CRASH] = _("Lumina Crash"), + [MOVE_ORDER_UP] = _("Order Up"), + [MOVE_JET_PUNCH] = _("Jet Punch"), + [MOVE_SPICY_EXTRACT] = _("Spicy Extract"), + [MOVE_SPIN_OUT] = _("Spin Out"), + [MOVE_POPULATION_BOMB] = _("Population Bomb"), + [MOVE_ICE_SPINNER] = _("Ice Spinner"), + [MOVE_GLAIVE_RUSH] = _("Glaive Rush"), + [MOVE_REVIVAL_BLESSING] = _("Revival Blessing"), + [MOVE_SALT_CURE] = _("Salt Cure"), + [MOVE_TRIPLE_DIVE] = _("Triple Dive"), + [MOVE_MORTAL_SPIN] = _("Mortal Spin"), + [MOVE_DOODLE] = _("Doodle"), + [MOVE_FILLET_AWAY] = _("Fillet Away"), + [MOVE_KOWTOW_CLEAVE] = _("Kowtow Cleave"), + [MOVE_FLOWER_TRICK] = _("Flower Trick"), + [MOVE_TORCH_SONG] = _("Torch Song"), + [MOVE_AQUA_STEP] = _("Aqua Step"), + [MOVE_RAGING_BULL] = _("Raging Bull"), + [MOVE_MAKE_IT_RAIN] = _("Make It Rain"), + [MOVE_RUINATION] = _("Ruination"), + [MOVE_COLLISION_COURSE] = _("Collision Course"), + [MOVE_ELECTRO_DRIFT] = _("Electro Drift"), + [MOVE_SHED_TAIL] = _("Shed Tail"), + [MOVE_CHILLY_RECEPTION] = _("Chilly Reception"), + [MOVE_TIDY_UP] = _("Tidy Up"), + [MOVE_SNOWSCAPE] = _("Snowscape"), + [MOVE_POUNCE] = _("Pounce"), + [MOVE_TRAILBLAZE] = _("Trailblaze"), + [MOVE_CHILLING_WATER] = _("Chilling Water"), + [MOVE_HYPER_DRILL] = _("Hyper Drill"), + [MOVE_TWIN_BEAM] = _("Twin Beam"), + [MOVE_RAGE_FIST] = _("Rage Fist"), + [MOVE_ARMOR_CANNON] = _("Armor Cannon"), + [MOVE_BITTER_BLADE] = _("Bitter Blade"), + [MOVE_DOUBLE_SHOCK] = _("Double Shock"), + [MOVE_GIGATON_HAMMER] = _("Gigaton Hammer"), + [MOVE_COMEUPPANCE] = _("Comeuppance"), + [MOVE_AQUA_CUTTER] = _("Aqua Cutter"), + [MOVE_BLAZING_TORQUE] = _("Blazing Torque"), + [MOVE_WICKED_TORQUE] = _("Wicked Torque"), + [MOVE_NOXIOUS_TORQUE] = _("Noxious Torque"), + [MOVE_COMBAT_TORQUE] = _("Combat Torque"), + [MOVE_MAGICAL_TORQUE] = _("Magical Torque"), }; #else // 12 letters @@ -1565,6 +1613,54 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_SANDSEAR_STORM] = _("SndsearStorm"), [MOVE_LUNAR_BLESSING] = _("LunarBlessng"), [MOVE_TAKE_HEART] = _("Take Heart"), + [MOVE_TERA_BLAST] = _("Tera Blast"), + [MOVE_SILK_TRAP] = _("Silk Trap"), + [MOVE_AXE_KICK] = _("Axe Kick"), + [MOVE_LAST_RESPECTS] = _("LastRespects"), + [MOVE_LUMINA_CRASH] = _("Lumina Crash"), + [MOVE_ORDER_UP] = _("Order Up"), + [MOVE_JET_PUNCH] = _("Jet Punch"), + [MOVE_SPICY_EXTRACT] = _("SpicyExtract"), + [MOVE_SPIN_OUT] = _("Spin Out"), + [MOVE_POPULATION_BOMB] = _("PoplatinBomb"), + [MOVE_ICE_SPINNER] = _("Ice Spinner"), + [MOVE_GLAIVE_RUSH] = _("Glaive Rush"), + [MOVE_REVIVAL_BLESSING] = _("RevivlBlesng"), + [MOVE_SALT_CURE] = _("Salt Cure"), + [MOVE_TRIPLE_DIVE] = _("Triple Dive"), + [MOVE_MORTAL_SPIN] = _("Mortal Spin"), + [MOVE_DOODLE] = _("Doodle"), + [MOVE_FILLET_AWAY] = _("Fillet Away"), + [MOVE_KOWTOW_CLEAVE] = _("KowtowCleave"), + [MOVE_FLOWER_TRICK] = _("Flower Trick"), + [MOVE_TORCH_SONG] = _("Torch Song"), + [MOVE_AQUA_STEP] = _("Aqua Step"), + [MOVE_RAGING_BULL] = _("Raging Bull"), + [MOVE_MAKE_IT_RAIN] = _("Make It Rain"), + [MOVE_RUINATION] = _("Ruination"), + [MOVE_COLLISION_COURSE] = _("ColisinCours"), + [MOVE_ELECTRO_DRIFT] = _("ElectroDrift"), + [MOVE_SHED_TAIL] = _("Shed Tail"), + [MOVE_CHILLY_RECEPTION] = _("ChilReceptin"), + [MOVE_TIDY_UP] = _("Tidy Up"), + [MOVE_SNOWSCAPE] = _("Snowscape"), + [MOVE_POUNCE] = _("Pounce"), + [MOVE_TRAILBLAZE] = _("Trailblaze"), + [MOVE_CHILLING_WATER] = _("ChillingWatr"), + [MOVE_HYPER_DRILL] = _("Hyper Drill"), + [MOVE_TWIN_BEAM] = _("Twin Beam"), + [MOVE_RAGE_FIST] = _("Rage Fist"), + [MOVE_ARMOR_CANNON] = _("Armor Cannon"), + [MOVE_BITTER_BLADE] = _("Bitter Blade"), + [MOVE_DOUBLE_SHOCK] = _("Double Shock"), + [MOVE_GIGATON_HAMMER] = _("GigatonHammr"), + [MOVE_COMEUPPANCE] = _("Comeuppance"), + [MOVE_AQUA_CUTTER] = _("Aqua Cutter"), + [MOVE_BLAZING_TORQUE] = _("BlazngTorque"), + [MOVE_WICKED_TORQUE] = _("WickedTorque"), + [MOVE_NOXIOUS_TORQUE] = _("NoxiusTorque"), + [MOVE_COMBAT_TORQUE] = _("CombatTorque"), + [MOVE_MAGICAL_TORQUE] = _("MagiclTorque"), }; #endif From e2791851521a3a7a8d3c920c94750cc1ae31d0bf Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 12:22:15 +0100 Subject: [PATCH 03/27] Update move data to GEN9 (with config) --- src/data/battle_moves.h | 139 ++++++++++++++++++++++++++++++++-------- 1 file changed, 114 insertions(+), 25 deletions(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 41d772598..93927c77e 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -1868,7 +1868,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_RECOVER] = { - #if B_UPDATED_MOVE_DATA >= GEN_4 + #if B_UPDATED_MOVE_DATA >= GEN_9 + .pp = 5, + #elif B_UPDATED_MOVE_DATA >= GEN_4 .pp = 10, #else .pp = 20, @@ -2401,11 +2403,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SOFT_BOILED] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .pp = 5, + #else + .pp = 10, + #endif .effect = EFFECT_SOFTBOILED, .power = 0, .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -2798,11 +2804,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_REST] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .pp = 5, + #else + .pp = 10, + #endif .effect = EFFECT_REST, .power = 0, .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -3759,11 +3769,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_MILK_DRINK] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .pp = 5, + #else + .pp = 10, + #endif .effect = EFFECT_SOFTBOILED, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -5452,11 +5466,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SLACK_OFF] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .pp = 5, + #else + .pp = 10, + #endif .effect = EFFECT_RESTORE_HP, .power = 0, .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -6403,11 +6421,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_ROOST] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .pp = 5, + #else + .pp = 10, + #endif .effect = EFFECT_ROOST, .power = 0, .type = TYPE_FLYING, .accuracy = 0, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -11013,11 +11035,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SHORE_UP] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .pp = 5, + #else + .pp = 10, + #endif .effect = EFFECT_SHORE_UP, .power = 0, .type = TYPE_GROUND, .accuracy = 0, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -12853,8 +12879,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_GRASSY_GLIDE] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 60, + #else + .power = 70, + #endif .effect = EFFECT_GRASSY_GLIDE, - .power = 70, .type = TYPE_GRASS, .accuracy = 100, .pp = 20, @@ -13076,8 +13106,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_WICKED_BLOW] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 75, + #else + .power = 80, + #endif .effect = EFFECT_ALWAYS_CRIT, - .power = 80, .type = TYPE_DARK, .accuracy = 100, .pp = 5, @@ -13188,8 +13222,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_GLACIAL_LANCE] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 120, + #else + .power = 130, + #endif .effect = EFFECT_HIT, - .power = 130, .type = TYPE_ICE, .accuracy = 100, .pp = 5, @@ -13236,8 +13274,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_DIRE_CLAW] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 80, + #else + .power = 60, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_DIRE_CLAW, - .power = 60, .type = TYPE_POISON, .accuracy = 100, .pp = 15, @@ -13300,8 +13342,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SPRINGTIDE_STORM] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 100, + #else + .power = 95, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_SPRINGTIDE_STORM, - .power = 95, .type = TYPE_FAIRY, .accuracy = 80, .pp = 5, @@ -13332,8 +13378,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_RAGING_FURY] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 120, + #else + .power = 90, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_RAGING_FURY, - .power = 90, .type = TYPE_FIRE, .accuracy = 85, .pp = 10, @@ -13348,8 +13398,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_WAVE_CRASH] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 120, + #else + .power = 75, + #endif .effect = EFFECT_RECOIL_33, // TODO: Legends: Arceus mechanics. - .power = 75, .type = TYPE_WATER, .accuracy = 100, .pp = 10, @@ -13364,8 +13418,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_CHLOROBLAST] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 150, + #else + .power = 120, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_CHLOROBLAST, - .power = 120, .type = TYPE_GRASS, .accuracy = 95, .pp = 5, @@ -13412,8 +13470,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_HEADLONG_RUSH] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 120, + #else + .power = 100, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_HEADLONG_RUSH, - .power = 100, .type = TYPE_GROUND, .accuracy = 100, .pp = 5, @@ -13444,8 +13506,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_ESPER_WING] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 80, + #else + .power = 75, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_ESPER_WING, - .power = 75, .type = TYPE_PSYCHIC, .accuracy = 90, .pp = 10, @@ -13460,8 +13526,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_BITTER_MALICE] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 75, + #else + .power = 60, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_ESPER_WING, - .power = 60, .type = TYPE_GHOST, .accuracy = 100, .pp = 15, @@ -13492,8 +13562,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_TRIPLE_ARROWS] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 90, + #else + .power = 50, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_TRIPLE_ARROWS, - .power = 50, .type = TYPE_FIGHTING, .accuracy = 100, .pp = 15, @@ -13540,11 +13614,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_BLEAKWIND_STORM] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 100, + .pp = 10, + #else + .power = 95, + .pp = 5, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_BLEAKWIND_STORM, - .power = 95, .type = TYPE_FLYING, .accuracy = 80, - .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -13556,11 +13635,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_WILDBOLT_STORM] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 100, + .pp = 10, + #else + .power = 95, + .pp = 5, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_WILDBOLT_STORM, - .power = 95, .type = TYPE_ELECTRIC, .accuracy = 80, - .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -13572,11 +13656,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SANDSEAR_STORM] = { + #if B_UPDATED_MOVE_DATA >= GEN_9 + .power = 100, + .pp = 10, + #else + .power = 95, + .pp = 5, + #endif .effect = EFFECT_PLACEHOLDER, // EFFECT_SANDSEAR_STORM, - .power = 95, .type = TYPE_GROUND, .accuracy = 80, - .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, From ed33f2b9ce497d9b1ff59f29f7f11a5cdfb86da4 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 20:56:25 +0100 Subject: [PATCH 04/27] Change PLA moves to SV effects --- src/data/battle_moves.h | 56 ++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 93927c77e..c2f021ce7 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13294,12 +13294,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_PSYSHIELD_BASH] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_PSYSHIELD_BASH, + .effect = EFFECT_DEFENSE_UP_HIT, .power = 70, .type = TYPE_PSYCHIC, - .accuracy = 90, + .accuracy = 100, .pp = 10, - .secondaryEffectChance = 50, // TODO: Adjust this value. Currently it's set to Fiery Dance's. + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, @@ -13347,7 +13347,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 95, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_SPRINGTIDE_STORM, + .effect = EFFECT_ATTACK_DOWN_HIT, .type = TYPE_FAIRY, .accuracy = 80, .pp = 5, @@ -13362,7 +13362,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_MYSTICAL_POWER] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_MYSTICAL_POWER, + .effect = EFFECT_PLACEHOLDER, // EFFECT_SPECIAL_ATTACK_UP_HIT .power = 70, .type = TYPE_PSYCHIC, .accuracy = 90, @@ -13383,12 +13383,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 90, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_RAGING_FURY, + .effect = EFFECT_RAMPAGE, .type = TYPE_FIRE, - .accuracy = 85, + .accuracy = 100, .pp = 10, - .secondaryEffectChance = 100, - .target = MOVE_TARGET_SELECTED, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_RANDOM, .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, @@ -13403,7 +13403,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 75, #endif - .effect = EFFECT_RECOIL_33, // TODO: Legends: Arceus mechanics. + .effect = EFFECT_RECOIL_33, .type = TYPE_WATER, .accuracy = 100, .pp = 10, @@ -13423,11 +13423,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 120, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_CHLOROBLAST, + .effect = EFFECT_RECOIL_50, .type = TYPE_GRASS, .accuracy = 95, .pp = 5, - .secondaryEffectChance = 100, + .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, @@ -13438,12 +13438,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_MOUNTAIN_GALE] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_ACTION_SPEED_DOWN_HIT, + .effect = EFFECT_FLINCH_HIT, .power = 100, .type = TYPE_ICE, .accuracy = 85, .pp = 5, - .secondaryEffectChance = 100, + .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, @@ -13475,14 +13475,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 100, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_HEADLONG_RUSH, + .effect = EFFECT_CLOSE_COMBAT, .type = TYPE_GROUND, .accuracy = 100, .pp = 5, - .secondaryEffectChance = 100, + .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, @@ -13511,14 +13511,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 75, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_ESPER_WING, + .effect = EFFECT_SPEED_UP_HIT, .type = TYPE_PSYCHIC, .accuracy = 90, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, @@ -13531,7 +13531,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 60, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_ESPER_WING, + .effect = EFFECT_PLACEHOLDER, // EFFECT_ATTACKER_ATTACK_DOWN_HIT .type = TYPE_GHOST, .accuracy = 100, .pp = 15, @@ -13546,7 +13546,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SHELTER] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_SHELTER, + .effect = EFFECT_DEFENSE_UP_2, .power = 0, .type = TYPE_STEEL, .accuracy = 0, @@ -13621,10 +13621,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 95, .pp = 5, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_BLEAKWIND_STORM, + .effect = EFFECT_SPEED_DOWN_HIT, .type = TYPE_FLYING, .accuracy = 80, - .secondaryEffectChance = 0, + .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, @@ -13642,10 +13642,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 95, .pp = 5, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_WILDBOLT_STORM, + .effect = EFFECT_PARALYZE_HIT, .type = TYPE_ELECTRIC, .accuracy = 80, - .secondaryEffectChance = 0, + .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, @@ -13663,10 +13663,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .power = 95, .pp = 5, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_SANDSEAR_STORM, + .effect = EFFECT_BURN_HIT, .type = TYPE_GROUND, .accuracy = 80, - .secondaryEffectChance = 0, + .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, From d4c92a0a190df263eef1cb037917877fdd01ae33 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 21:54:46 +0100 Subject: [PATCH 05/27] Fix Bitter Malice's effect --- 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 c2f021ce7..694465e97 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13531,11 +13531,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 60, #endif - .effect = EFFECT_PLACEHOLDER, // EFFECT_ATTACKER_ATTACK_DOWN_HIT + .effect = EFFECT_ATTACK_DOWN_HIT, .type = TYPE_GHOST, .accuracy = 100, .pp = 15, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, From 3ac3cb249e17ef68e56c8370af8160a525bb6cc5 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 22:00:21 +0100 Subject: [PATCH 06/27] Wicked Torque effect --- data/battle_scripts_1.s | 5 +++++ include/constants/battle_move_effects.h | 3 ++- src/battle_tv.c | 3 ++- src/data/battle_moves.h | 4 ++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 63719e2b6..4f8447987 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -412,6 +412,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectExtremeEvoboost @ EFFECT_EXTREME_EVOBOOST .4byte BattleScript_EffectTerrainHit @ EFFECT_DAMAGE_SET_TERRAIN .4byte BattleScript_EffectDarkVoid @ EFFECT_DARK_VOID + .4byte BattleScript_EffectSleepHit @ EFFECT_SLEEP_HIT BattleScript_AffectionBasedEndurance:: playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON @@ -3201,6 +3202,10 @@ BattleScript_EffectBurnHit:: setmoveeffect MOVE_EFFECT_BURN goto BattleScript_EffectHit +BattleScript_EffectSleepHit:: + setmoveeffect MOVE_EFFECT_SLEEP + goto BattleScript_EffectHit + BattleScript_EffectFreezeHit:: setmoveeffect MOVE_EFFECT_FREEZE goto BattleScript_EffectHit diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index d38e7108d..2292dfa1f 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -393,7 +393,8 @@ #define EFFECT_EXTREME_EVOBOOST 387 #define EFFECT_DAMAGE_SET_TERRAIN 388 // genesis supernova #define EFFECT_DARK_VOID 389 +#define EFFECT_SLEEP_HIT 390 -#define NUM_BATTLE_MOVE_EFFECTS 389 +#define NUM_BATTLE_MOVE_EFFECTS 391 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/src/battle_tv.c b/src/battle_tv.c index 646c3563f..db51c3f4e 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -299,7 +299,8 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_WATER_SPORT] = 4, [EFFECT_CALM_MIND] = 1, [EFFECT_DRAGON_DANCE] = 1, - [EFFECT_CAMOUFLAGE] = 3 + [EFFECT_CAMOUFLAGE] = 3, + [EFFECT_SLEEP_HIT] = 1, }; static const u16 sPoints_Effectiveness[] = diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 694465e97..3ae20e102 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -14435,12 +14435,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_WICKED_TORQUE] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_SLEEP_HIT + .effect = EFFECT_SLEEP_HIT, .power = 80, .type = TYPE_DARK, .accuracy = 100, .pp = 10, - .secondaryEffectChance = 10, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED, From a250341e6c7b704c837182ae9ee70b18c45ee59c Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 22:00:46 +0100 Subject: [PATCH 07/27] Forgot to reset Wicked Torque effect rate --- 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 3ae20e102..44aa3227e 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -14440,7 +14440,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .type = TYPE_DARK, .accuracy = 100, .pp = 10, - .secondaryEffectChance = 100, + .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_PROTECT_AFFECTED, From 9512b3a57a3a426fbf136e6268a901e77aecf697 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 22:12:26 +0100 Subject: [PATCH 08/27] Implement Double Shock functionality with temporary string --- data/battle_scripts_1.s | 18 ++++++++++++++++++ include/battle_scripts.h | 1 + include/constants/battle.h | 3 ++- include/constants/battle_move_effects.h | 3 ++- include/constants/battle_string_ids.h | 3 ++- src/battle_ai_main.c | 4 ++++ src/battle_message.c | 3 ++- src/battle_script_commands.c | 6 ++++++ src/data/battle_moves.h | 2 +- 9 files changed, 38 insertions(+), 5 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 4f8447987..9b7e3a070 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -413,6 +413,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectTerrainHit @ EFFECT_DAMAGE_SET_TERRAIN .4byte BattleScript_EffectDarkVoid @ EFFECT_DARK_VOID .4byte BattleScript_EffectSleepHit @ EFFECT_SLEEP_HIT + .4byte BattleScript_EffectDoubleShock @ EFFECT_DOUBLE_SHOCK BattleScript_AffectionBasedEndurance:: playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON @@ -1281,6 +1282,23 @@ BattleScript_BurnUpRemoveType:: printstring STRINGID_ATTACKERLOSTFIRETYPE waitmessage B_WAIT_TIME_LONG return + +BattleScript_EffectDoubleShock: + attackcanceler + attackstring + ppreduce + jumpiftype BS_ATTACKER, TYPE_ELECTRIC, BattleScript_DoubleShockWorks + goto BattleScript_ButItFailed + +BattleScript_DoubleShockWorks: + setmoveeffect MOVE_EFFECT_DOUBLE_SHOCK | MOVE_EFFECT_CERTAIN + goto BattleScript_EffectHit + +BattleScript_DoubleShockRemoveType:: + losetype BS_ATTACKER, TYPE_ELECTRIC + printstring STRINGID_ATTACKERLOSTELECTRICTYPE + waitmessage B_WAIT_TIME_LONG + return BattleScript_EffectPurify: attackcanceler diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 23f18e3be..16ac7a8c8 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -433,6 +433,7 @@ extern const u8 BattleScript_SymbiosisActivates[]; extern const u8 BattleScript_MultiHitPrintStrings[]; extern const u8 BattleScript_BurnUpRemoveType[]; extern const u8 BattleScript_TargetAbilityStatRaiseRet[]; +extern const u8 BattleScript_DoubleShockRemoveType[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; diff --git a/include/constants/battle.h b/include/constants/battle.h index 366471e47..d6e21d0ae 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -369,8 +369,9 @@ #define MOVE_EFFECT_RECOIL_HP_25 0x44 #define MOVE_EFFECT_RELIC_SONG 0x45 #define MOVE_EFFECT_TRAP_BOTH 0x46 +#define MOVE_EFFECT_DOUBLE_SHOCK 0x47 -#define NUM_MOVE_EFFECTS 0x47 +#define NUM_MOVE_EFFECTS 0x48 #define MOVE_EFFECT_AFFECTS_USER 0x4000 #define MOVE_EFFECT_CERTAIN 0x8000 diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 2292dfa1f..a2a633fb8 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -394,7 +394,8 @@ #define EFFECT_DAMAGE_SET_TERRAIN 388 // genesis supernova #define EFFECT_DARK_VOID 389 #define EFFECT_SLEEP_HIT 390 +#define EFFECT_DOUBLE_SHOCK 391 -#define NUM_BATTLE_MOVE_EFFECTS 391 +#define NUM_BATTLE_MOVE_EFFECTS 392 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 4bce51a45..e1bcf983a 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -630,8 +630,9 @@ #define STRINGID_ATTACKERHEALEDITSBURN 628 #define STRINGID_ATTACKERMELTEDTHEICE 629 #define STRINGID_TARGETTOUGHEDITOUT 630 +#define STRINGID_ATTACKERLOSTELECTRICTYPE 631 -#define BATTLESTRINGS_COUNT 631 +#define BATTLESTRINGS_COUNT 632 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 9604f1195..e141a45bf 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2007,6 +2007,10 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (!IS_BATTLER_OF_TYPE(battlerAtk, TYPE_FIRE)) score -= 10; break; + case EFFECT_DOUBLE_SHOCK: + if (!IS_BATTLER_OF_TYPE(battlerAtk, TYPE_ELECTRIC)) + score -= 10; + break; case EFFECT_DEFOG: if (gSideStatuses[GetBattlerSide(battlerDef)] & (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL | SIDE_STATUS_SAFEGUARD | SIDE_STATUS_MIST) diff --git a/src/battle_message.c b/src/battle_message.c index 9503fbaaf..07598d95a 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -759,7 +759,7 @@ static const u8 sText_AttackerBrokeThroughParalysis[] = _("{B_ATK_NAME_WITH_PREF static const u8 sText_AttackerHealedItsBurn[] = _("{B_ATK_NAME_WITH_PREFIX} healed its burn with\nits sheer determination!"); static const u8 sText_AttackerMeltedTheIce[] = _("{B_ATK_NAME_WITH_PREFIX} melted the ice with\nits fiery determination!"); static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!"); - +static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} discharged itself out!"); // Unofficial text until the string from the main games is known const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { @@ -1381,6 +1381,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE - BATTLESTRINGS_TABLE_START] = sText_CantEscapeBecauseOfCurrentMove, [STRINGID_PKMNTOOKTARGETHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnTookTargetHigh, [STRINGID_TARGETTOOHEAVY - BATTLESTRINGS_TABLE_START] = sText_TargetTooHeavy, + [STRINGID_ATTACKERLOSTELECTRICTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostElectricType, }; const u16 gZEffectStringIds[] = diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3e52aa618..013faa8dd 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1131,6 +1131,7 @@ static const u16 sFinalStrikeOnlyEffects[] = EFFECT_BUG_BITE, EFFECT_THIEF, EFFECT_BURN_UP, + EFFECT_DOUBLE_SHOCK, EFFECT_SECRET_POWER, EFFECT_SMACK_DOWN, EFFECT_SPARKLING_ARIA, @@ -3647,6 +3648,11 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_BurnUpRemoveType; break; + case MOVE_EFFECT_DOUBLE_SHOCK: + // This seems unnecessary but is done to make it work properly with Parental Bond + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_DoubleShockRemoveType; + break; } } } diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 44aa3227e..c7f1064cc 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -14355,7 +14355,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_DOUBLE_SHOCK] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_DOUBLE_SHOCK + .effect = EFFECT_DOUBLE_SHOCK, .power = 120, .type = TYPE_ELECTRIC, .accuracy = 100, From 29ae22183bda084c2a9d3af85c04aefb58562e26 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 22:17:08 +0100 Subject: [PATCH 09/27] Mystical Power effect --- data/battle_scripts_1.s | 5 +++++ include/constants/battle_move_effects.h | 3 ++- src/battle_ai_main.c | 4 ++++ src/battle_tv.c | 1 + src/data/battle_moves.h | 2 +- 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 9b7e3a070..31251d62f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -414,6 +414,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectDarkVoid @ EFFECT_DARK_VOID .4byte BattleScript_EffectSleepHit @ EFFECT_SLEEP_HIT .4byte BattleScript_EffectDoubleShock @ EFFECT_DOUBLE_SHOCK + .4byte BattleScript_EffectSpecialAttackUpHit @ EFFECT_SPECIAL_ATTACK_UP_HIT BattleScript_AffectionBasedEndurance:: playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON @@ -4993,6 +4994,10 @@ BattleScript_EffectAttackUpHit:: setmoveeffect MOVE_EFFECT_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER goto BattleScript_EffectHit +BattleScript_EffectSpecialAttackUpHit:: + setmoveeffect MOVE_EFFECT_SP_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER + goto BattleScript_EffectHit + BattleScript_EffectAllStatsUpHit:: setmoveeffect MOVE_EFFECT_ALL_STATS_UP | MOVE_EFFECT_AFFECTS_USER goto BattleScript_EffectHit diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index a2a633fb8..f6f109122 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -395,7 +395,8 @@ #define EFFECT_DARK_VOID 389 #define EFFECT_SLEEP_HIT 390 #define EFFECT_DOUBLE_SHOCK 391 +#define EFFECT_SPECIAL_ATTACK_UP_HIT 392 -#define NUM_BATTLE_MOVE_EFFECTS 392 +#define NUM_BATTLE_MOVE_EFFECTS 393 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index e141a45bf..16a40de3d 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3942,6 +3942,10 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (sereneGraceBoost) IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score); break; + case EFFECT_SPECIAL_ATTACK_UP_HIT: + if (sereneGraceBoost) + IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score); + break; case EFFECT_FELL_STINGER: if (gBattleMons[battlerAtk].statStages[STAT_ATK] < MAX_STAT_STAGE && AI_DATA->abilities[battlerAtk] != ABILITY_CONTRARY diff --git a/src/battle_tv.c b/src/battle_tv.c index db51c3f4e..5a2a96e86 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -301,6 +301,7 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_DRAGON_DANCE] = 1, [EFFECT_CAMOUFLAGE] = 3, [EFFECT_SLEEP_HIT] = 1, + [EFFECT_SPECIAL_ATTACK_UP_HIT] = 1, }; static const u16 sPoints_Effectiveness[] = diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index c7f1064cc..116c49294 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13362,7 +13362,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_MYSTICAL_POWER] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_SPECIAL_ATTACK_UP_HIT + .effect = EFFECT_SPECIAL_ATTACK_UP_HIT, .power = 70, .type = TYPE_PSYCHIC, .accuracy = 90, From 739680e4251737b53dd737c1c5cd782ebec63518 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 22:23:34 +0100 Subject: [PATCH 10/27] Victory Dance effect --- data/battle_scripts_1.s | 33 +++++++++++++++++++++++++ include/constants/battle_move_effects.h | 3 ++- src/battle_ai_main.c | 14 +++++++++++ src/battle_ai_util.c | 1 + src/data/battle_moves.h | 2 +- 5 files changed, 51 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 31251d62f..018f94eb5 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -415,6 +415,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectSleepHit @ EFFECT_SLEEP_HIT .4byte BattleScript_EffectDoubleShock @ EFFECT_DOUBLE_SHOCK .4byte BattleScript_EffectSpecialAttackUpHit @ EFFECT_SPECIAL_ATTACK_UP_HIT + .4byte BattleScript_EffectVictoryDance @ EFFECT_VICTORY_DANCE BattleScript_AffectionBasedEndurance:: playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON @@ -2346,6 +2347,38 @@ BattleScript_QuiverDanceTrySpeed:: BattleScript_QuiverDanceEnd:: goto BattleScript_MoveEnd +BattleScript_EffectVictoryDance: + attackcanceler + attackstring + ppreduce + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, MAX_STAT_STAGE, BattleScript_VictoryDanceDoMoveAnim + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, MAX_STAT_STAGE, BattleScript_VictoryDanceDoMoveAnim + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, MAX_STAT_STAGE, BattleScript_CantRaiseMultipleStats +BattleScript_VictoryDanceDoMoveAnim:: + attackanimation + waitanimation + setbyte sSTAT_ANIM_PLAYED, FALSE + playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF | BIT_SPEED, 0 + setstatchanger STAT_ATK, 1, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_VictoryDanceTryDef + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_VictoryDanceTryDef + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_VictoryDanceTryDef:: + setstatchanger STAT_DEF, 1, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_VictoryDanceTrySpeed + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_VictoryDanceTrySpeed + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_VictoryDanceTrySpeed:: + setstatchanger STAT_SPEED, 1, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_VictoryDanceEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_VictoryDanceEnd + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_VictoryDanceEnd:: + goto BattleScript_MoveEnd + BattleScript_EffectSpeedUpHit: setmoveeffect MOVE_EFFECT_SPD_PLUS_1 | MOVE_EFFECT_AFFECTS_USER goto BattleScript_EffectHit diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index f6f109122..5af1017a9 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -396,7 +396,8 @@ #define EFFECT_SLEEP_HIT 390 #define EFFECT_DOUBLE_SHOCK 391 #define EFFECT_SPECIAL_ATTACK_UP_HIT 392 +#define EFFECT_VICTORY_DANCE 393 -#define NUM_BATTLE_MOVE_EFFECTS 393 +#define NUM_BATTLE_MOVE_EFFECTS 394 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 16a40de3d..384c50d88 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -1082,6 +1082,14 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) else if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_SPDEF)) score -= 6; break; + case EFFECT_VICTORY_DANCE: + if (gBattleMons[battlerAtk].statStages[STAT_ATK] >= MAX_STAT_STAGE || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) + score -= 10; + else if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_SPEED)) + score -= 8; + else if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_DEF)) + score -= 6; + break; case EFFECT_SHIFT_GEAR: if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) score -= 10; @@ -4401,6 +4409,11 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPDEF, &score); break; + case EFFECT_VICTORY_DANCE: + IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPEED, &score); + IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score); + IncreaseStatUpScore(battlerAtk, battlerDef, STAT_DEF, &score); + break; case EFFECT_SHELL_SMASH: if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_RESTORE_STATS) score += 1; @@ -4886,6 +4899,7 @@ static s16 AI_SetupFirstTurn(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_SANDSTORM: case EFFECT_HAIL: case EFFECT_GEOMANCY: + case EFFECT_VICTORY_DANCE: score += 2; break; default: diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 113d5d3e0..83c933167 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2091,6 +2091,7 @@ bool32 IsStatRaisingEffect(u16 effect) case EFFECT_BULK_UP: case EFFECT_GEOMANCY: case EFFECT_STOCKPILE: + case EFFECT_VICTORY_DANCE: return TRUE; default: return FALSE; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 116c49294..5dd53a922 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13454,7 +13454,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_VICTORY_DANCE] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_VICTORY_DANCE, + .effect = EFFECT_VICTORY_DANCE, .power = 0, .type = TYPE_FIGHTING, .accuracy = 0, From 4034f18c0e6225f9a0b8104802d0fe2ae9dd17e1 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 22:30:40 +0100 Subject: [PATCH 11/27] Update PLA descriptions --- src/data/text/move_descriptions.h | 90 +++++++++---------------------- 1 file changed, 26 insertions(+), 64 deletions(-) diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index f77989d05..c2f3e00a8 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2962,9 +2962,8 @@ static const u8 sPsyshieldBashDescription[] = _( "energy. May raise Defense."); static const u8 sPowerShiftDescription[] = _( - "The user swaps its offensive\n" - "and defensive stats."); -/* The user swaps its Attack and Defense stats. */ + "The user swaps its Attack\n" + "and Defense stats."); static const u8 sStoneAxeDescription[] = _( "High critical hit ratio. Sets\n" @@ -2975,83 +2974,52 @@ static const u8 sSpringtideStormDescription[] = _( "Varies with the user's form."); static const u8 sMysticalPowerDescription[] = _( - "Increases the user's better\n" - "of Atk. and Def. stats."); -/* The user attacks by emitting a mysterious power. -This also boosts the user’s Sp. Atk stat. */ + "A mysterious power strikes and\n" + "raises the user's Sp. Atk."); static const u8 sRagingFuryDescription[] = _( - "Viciously spews flames at\n" - "a foe, becoming fixated."); -// "A rampage of 2 to 3 turns\n" -// "that confuses the user."); - -/* The user rampages around spewing flames for two to -three turns. The user then becomes confused. */ + "A rampage of 2 to 3 turns\n" + "that confuses the user."); static const u8 sWaveCrashDescription[] = _( - "A water slam. Hurts the user\n" - "and raises its Action Speed."); -/* The user shrouds itself in water and slams into the target -with its whole body to inflict damage. This also damages -the user quite a lot. */ + "A slam shrouded in water.\n" + "It also hurts the user."); static const u8 sChloroblastDescription[] = _( - "An blast that hurts the user\n" - "and lowers its Action Speed."); -/* The user launches its amassed chlorophyll to inflict -damage on the target. This also damages the user. */ + "A user-hurting blast of\n" + "amassed chlorophyll."); static const u8 sMountainGaleDescription[] = _( - "The user hurls giant chunks\n" - "of ice to damage the foe."); -/* The user hurls giant chunks of ice at the target to inflict -damage. This may also make the target flinch. */ + "Giant chunks of ice damage\n" + "the foe. It may flinch."); static const u8 sVictoryDanceDescription[] = _( - "Dances to raise damage 50%,\n" - "plus offenses and defenses."); -/* The user performs an intense dance to usher in victory, -boosting its Attack, Defense, and Speed stats. */ + "Dances to raise Attack,\n" + "Defense and Speed."); static const u8 sHeadlongRushDescription[] = _( "Hits with a full-body tackle,\n" - "lowering the foe's Defense."); -/* The user smashes into the target in a full-body tackle. -This also lowers the user’s Defense and Sp. Def stats. */ + "lowering the users's defenses."); static const u8 sBarbBarrageDescription[] = _( "Can poison on impact. Powers\n" - "up if the foe has an ailment."); -/* The user launches countless toxic barbs to inflict -damage. This may also poison the target. This move’s -power is doubled if the target is already poisoned. */ + "up against poisoned foes."); static const u8 sEsperWingDescription[] = _( "High critical hit ratio.\n" - "Ups the user's Action Speed."); -/* The user slashes the target with aura-enriched wings. -This also boosts the user’s Speed stat. This move has -a heightened chance of landing a critical hit. */ + "Ups the user's Speed."); static const u8 sBitterMaliceDescription[] = _( - "Hurts a foe harder if it has\n" - "an ailment. Can give FrstBte."); -/* The user attacks the target with spine-chilling resentment. -This also lowers the target’s Attack stat. */ + "A spine-chilling resentment\n" + "that may lower the foe's Attack."); static const u8 sShelterDescription[] = _( - "The user hardens their skin\n" - "and obscures itself."); -/* The user makes its skin as hard as an iron shield, sharply -boosting its Defense stat. */ + "The user hardens their skin,\n" + "sharply raising its Defense."); static const u8 sTripleArrowsDescription[] = _( - "Ups critical-hit ratio for 3\n" - "turns. Lowers foe Defenses."); -/* The user kicks, then fires three arrows. This move has a -heightened chance of landing a critical hit and may also -lower the target’s Defense stat or make it flinch. */ + "High critical hit ratio.\n" + "May lower Defense or flinch."); static const u8 sInfernalParadeDescription[] = _( "Hurts a foe harder if it has\n" @@ -3063,10 +3031,7 @@ static const u8 sCeaselessEdgeDescription[] = _( static const u8 sBleakwindStormDescription[] = _( "Hits with brutal, cold winds.\n" - "May inflict frostbite."); -/* The user attacks with savagely cold winds that cause -both body and spirit to tremble. This may also lower the -Speed stats of opposing Pokémon. */ + "May lower the foe's Speed."); static const u8 sWildboltStormDescription[] = _( "Hits with a brutal tempest.\n" @@ -3077,11 +3042,8 @@ static const u8 sSandsearStormDescription[] = _( "May inflict a burn."); static const u8 sLunarBlessingDescription[] = _( - "The user heals themself and\n" - "conceals their presence."); -/* The user receives a blessing from the crescent moon, -restoring HP and curing status conditions for itself and -its ally Pokémon currently in the battle. */ + "The user heals and cures\n" + "itself and its ally."); static const u8 sTakeHeartDescription[] = _( "The user lifts its spirits to\n" From 4da9ecbceacfffc4815cf7a350af69f956c8593b Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Fri, 18 Nov 2022 22:37:31 +0100 Subject: [PATCH 12/27] Prepare FLAG_SLICING_MOVE for merger with abilities branch --- src/data/battle_moves.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 5dd53a922..dec837ef6 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13863,12 +13863,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMovePower = 40, .zMoveEffect = Z_EFFECT_NONE, //Supposedly uncallable by Metronome? (if so, needs implementation) - //The master sheet mentions a "slicing" flag but I'm not sure what it refers to }, [MOVE_ICE_SPINNER] = @@ -14014,11 +14013,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, - // Needs a "slicing" flag (not sure what it refers to) }, [MOVE_FLOWER_TRICK] = @@ -14346,11 +14344,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, - // Needs the "slicing" flag }, [MOVE_DOUBLE_SHOCK] = @@ -14410,11 +14407,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, - // Needs the "slicing" flag }, [MOVE_BLAZING_TORQUE] = From 4ac1e4fc61b9e13bf3a59ccd84d10642c33bffbc Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sat, 19 Nov 2022 13:41:56 +0100 Subject: [PATCH 13/27] Power Shift is now a clone of Power Trick --- 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 dec837ef6..3ea9cd716 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13310,7 +13310,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_POWER_SHIFT] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_POWER_SHIFT, + .effect = EFFECT_POWER_TRICK, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, @@ -13318,7 +13318,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, From 051ad7bf6974542c06dc6864d19bb5ea14a1b916 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 4 Dec 2022 00:12:38 +0100 Subject: [PATCH 14/27] Update src/data/text/move_descriptions.h Co-Authored-By: Eduardo Quezada D'Ottone --- src/data/text/move_descriptions.h | 90 +++++++++++++++---------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index c2f3e00a8..aa4cec4ea 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2974,8 +2974,8 @@ static const u8 sSpringtideStormDescription[] = _( "Varies with the user's form."); static const u8 sMysticalPowerDescription[] = _( - "A mysterious power strikes and\n" - "raises the user's Sp. Atk."); + "A mysterious power strikes,\n" + "raising the user's Sp. Atk."); static const u8 sRagingFuryDescription[] = _( "A rampage of 2 to 3 turns\n" @@ -3010,8 +3010,8 @@ static const u8 sEsperWingDescription[] = _( "Ups the user's Speed."); static const u8 sBitterMaliceDescription[] = _( - "A spine-chilling resentment\n" - "that may lower the foe's Attack."); + "A spine-chilling resentment.\n" + "May lower the foe's Attack."); static const u8 sShelterDescription[] = _( "The user hardens their skin,\n" @@ -3050,8 +3050,8 @@ static const u8 sTakeHeartDescription[] = _( "heal and strengthen itself."); static const u8 sTeraBlastDescription[] = _( - "Unleashes the user's Tera-type\n" - "energy if Terrastallized."); + "If the user's Terastallized,\n" + "it hits with its Tera-type."); static const u8 sSilkTrapDescription[] =_( "Protects itself, lowering\n" @@ -3078,7 +3078,7 @@ static const u8 sJetPunchDescription[] = _( "speed to strike first."); static const u8 sSpicyExtractDescription[] = _( - "Sharply boosts target's Attack,\n" + "Sharply ups target's Attack,\n" "harshly lowers its Defense."); static const u8 sSpinOutDescription[] = _( @@ -3094,24 +3094,24 @@ static const u8 sIceSpinnerDescription[] = _( "and destroy the terrain."); static const u8 sGlaiveRushDescription[] = _( - "Enemy attacks next turn always\n" - "hit with double damage."); + "Foe attacks next turn can't\n" + "miss and do double damage."); static const u8 sRevivalBlessingDescription[] = _( "Revives a fainted party {PKMN}\n" "and restores half of its HP."); static const u8 sSaltCureDescription[] = _( - "Perpetually damages foe. Super-\n" - "effective against Steel and Water."); + "Hurts foe every turn. Double\n" + "damage to Steel and Water."); static const u8 sTripleDiveDescription[] = _( - "Hits the target with splashes\n" - "of water three times in a row."); + "Hits target with splashes\n" + "of water 3 times in a row."); static const u8 sMortalSpinDescription[] = _( - "Poisons all foes and eliminates\n" - "trapping moves and Leech Seed."); + "Erases trap moves and Leech\n" + "Seed. Poisons adjecent foes."); static const u8 sDoodleDescription[] = _( "Changes user's and ally's\n" @@ -3122,56 +3122,56 @@ static const u8 sFilletAwayDescription[] = _( "Speed by using its own HP."); static const u8 sKowtowCleaveDescription[] = _( - "Slashes the foe after kowtowing.\n" - "This attack never misses."); + "User slashes the foe after\n" + "kowtowing. It never misses."); static const u8 sFlowerTrickDescription[] = _( - "A bouquet of flowers never misses\n" - "and always lands a critical hit."); + "Rigged bouquet. Always gets\n" + "a critical hit, never missing."); static const u8 sTorchSongDescription[] = _( - "Scorches the target. Boosts the\n" - "user's Sp. Atk."); + "Flames scorch the target.\n" + "Boosts the user's Sp. Atk."); static const u8 sAquaStepDescription[] = _( - "Light and fluid dance steps hit.\n" - "Boosts the user's Speed."); + "Hits with light, fluid dance\n" + "steps. Ups the user's Speed."); static const u8 sRagingBullDescription[] = _( - "A bull-like tackle breaks barriers.\n" - "The type depends on the user's form."); + "Tackle that breaks barriers.\n" + "User's form determines type."); static const u8 sMakeItRainDescription[] = _( - "The user's Sp. Atk stat is lowered.\n" - "Money is earned after battle."); + "Lowers the user's Sp. Atk.\n" + "Money is recovered after."); static const u8 sRuinationDescription[] = _( - "A summoned ruinous disaster cuts\n" - "the target's HP in half."); + "Summons a ruinous disaster\n" + "and cuts half the foe's HP."); static const u8 sCollisionCourseDescription[] = _( - "A massive prehistoric explosion\n" - "that is stronger when supereffective."); + "Prehistoric explosion that's\n" + "stronger if supereffective."); static const u8 sElectroDriftDescription[] = _( - "Futuristic electricity piercing\n" - "that is stronger when supereffective."); + "Futuristic electricity. It's\n" + "stronger if supereffective."); static const u8 sShedTailDescription[] = _( - "Creates a Substitute for itself\n" - "before switching out."); + "Creates a Substitute for\n" + "itself before switching out."); static const u8 sChillyReceptionDescription[] =_( - "A bad joke summons a snowstorm.\n" + "Bad joke summons snowstorm.\n" "The user also switches out."); static const u8 sTidyUpDescription[] = _( - "The user tidies up hazards.\n" - "Its Attack and Speed are raised."); + "User tidies up hazards and\n" + "raises its Attack and Speed."); static const u8 sSnowscapeDescription[] = _( "Summons a snowstorm that\n" - "strikes every turn."); + "lasts for five turns."); static const u8 sPounceDescription[] = _( "The user pounces on the foe,\n" @@ -3186,16 +3186,16 @@ static const u8 sChillingWaterDescription[] = _( "lowers the target's Attack."); static const u8 sHyperDrillDescription[] = _( - "A spinning pointed part pierces\n" - "through a foe's Protect."); + "A spinning pointed part\n" + "bypasses a foe's Protect."); static const u8 sTwinBeamDescription[] = _( - "Mystical beams from the user's\n" - "eyes hit twice in a row."); + "Mystical eye-beams that hit\n" + "the target twice in a row."); static const u8 sRageFistDescription[] = _( - "The more the user has been hit,\n" - "the stronger the move."); + "The more the user has been\n" + "hit, the stronger the move."); static const u8 sArmorCannonDescription[] = _( "A strong attack but lowers\n" From c14fa82f43614f2640a10cf7f69205db62f36cf1 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 4 Dec 2022 18:14:27 +0100 Subject: [PATCH 15/27] Fix Headlong Rush description --- src/data/text/move_descriptions.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index aa4cec4ea..7000759f7 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2998,8 +2998,8 @@ static const u8 sVictoryDanceDescription[] = _( "Defense and Speed."); static const u8 sHeadlongRushDescription[] = _( - "Hits with a full-body tackle,\n" - "lowering the users's defenses."); + "Hits with a full-body tackle.\n" + "Lowers the users's defenses."); static const u8 sBarbBarrageDescription[] = _( "Can poison on impact. Powers\n" From dc97a31c31f48bc0c4b79342de7328b2adac4b49 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 4 Dec 2022 18:15:35 +0100 Subject: [PATCH 16/27] Change battle_debug.c to MOVES_COUNT --- src/battle_debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_debug.c b/src/battle_debug.c index 0868ac030..be7dbf715 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -1767,7 +1767,7 @@ static void SetUpModifyArrows(struct BattleDebugMenu *data) break; case LIST_ITEM_MOVES: data->modifyArrows.minValue = 0; - data->modifyArrows.maxValue = MOVES_COUNT_GEN9 - 1; + data->modifyArrows.maxValue = MOVES_COUNT - 1; data->modifyArrows.maxDigits = 3; if (data->currentSecondaryListItemId == 4) { From 5bcb6b8afda3f57c5489a7dfd64b3dc9289002bc Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 4 Dec 2022 18:16:15 +0100 Subject: [PATCH 17/27] Update B_METRONOME_MOVES --- src/battle_script_commands.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 013faa8dd..1a796e6d4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11763,7 +11763,9 @@ static void Cmd_mimicattackcopy(void) static void Cmd_metronome(void) { -#if B_METRONOME_MOVES >= GEN_8 +#if B_METRONOME_MOVES >= GEN_9 + u16 moveCount = MOVES_COUNT_GEN9; +#elif B_METRONOME_MOVES >= GEN_8 u16 moveCount = MOVES_COUNT_GEN8; #elif B_METRONOME_MOVES >= GEN_7 u16 moveCount = MOVES_COUNT_GEN7; From 58a54c90d2bb117cd825d2ec5383a647cc32a7fb Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 4 Dec 2022 18:16:37 +0100 Subject: [PATCH 18/27] Restore GEN_LATEST to GEN_8 --- include/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/config.h b/include/config.h index 590972bae..3a2461717 100644 --- a/include/config.h +++ b/include/config.h @@ -71,6 +71,6 @@ #define GEN_7 4 #define GEN_8 5 #define GEN_9 6 -#define GEN_LATEST GEN_9 +#define GEN_LATEST GEN_8 #endif // GUARD_CONFIG_H From b0ead44ee8439b7f556b879aaeb03361d2b62cda Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 4 Dec 2022 21:23:45 +0100 Subject: [PATCH 19/27] Update battle_tv.c --- src/battle_tv.c | 612 +++++++++++++++++++++++++++++++----------------- 1 file changed, 396 insertions(+), 216 deletions(-) diff --git a/src/battle_tv.c b/src/battle_tv.c index 5a2a96e86..9d2ec244e 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -86,222 +86,402 @@ static const u16 sVariableDmgMoves[] = static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = { - [EFFECT_HIT] = 1, - [EFFECT_SLEEP] = 1, - [EFFECT_POISON_HIT] = 1, - [EFFECT_ABSORB] = 4, - [EFFECT_BURN_HIT] = 1, - [EFFECT_FREEZE_HIT] = 1, - [EFFECT_PARALYZE_HIT] = 1, - [EFFECT_EXPLOSION] = 0, - [EFFECT_DREAM_EATER] = 5, - [EFFECT_MIRROR_MOVE] = 1, - [EFFECT_ATTACK_UP] = 1, - [EFFECT_DEFENSE_UP] = 1, - [EFFECT_SPEED_UP] = 1, - [EFFECT_SPECIAL_ATTACK_UP] = 1, - [EFFECT_SPECIAL_DEFENSE_UP] = 1, - [EFFECT_ACCURACY_UP] = 1, - [EFFECT_EVASION_UP] = 1, -// [EFFECT_ALWAYS_HIT] = 2, - [EFFECT_ATTACK_DOWN] = 1, - [EFFECT_DEFENSE_DOWN] = 1, - [EFFECT_SPEED_DOWN] = 1, - [EFFECT_SPECIAL_ATTACK_DOWN] = 1, - [EFFECT_SPECIAL_DEFENSE_DOWN] = 1, - [EFFECT_ACCURACY_DOWN] = 1, - [EFFECT_EVASION_DOWN] = 1, - [EFFECT_HAZE] = 5, - [EFFECT_BIDE] = 5, - [EFFECT_RAMPAGE] = 4, - [EFFECT_ROAR] = 5, - [EFFECT_MULTI_HIT] = 1, - [EFFECT_CONVERSION] = 3, - [EFFECT_FLINCH_HIT] = 1, - [EFFECT_RESTORE_HP] = 3, - [EFFECT_TOXIC] = 5, - [EFFECT_PAY_DAY] = 1, - [EFFECT_LIGHT_SCREEN] = 7, - [EFFECT_TRI_ATTACK] = 1, - [EFFECT_REST] = 7, - [EFFECT_OHKO] = 7, -// [EFFECT_RAZOR_WIND] = 1, - [EFFECT_SUPER_FANG] = 5, - [EFFECT_DRAGON_RAGE] = 2, - [EFFECT_TRAP] = 4, -// [EFFECT_HIGH_CRITICAL] = 1, -// [EFFECT_DOUBLE_HIT] = 1, - [EFFECT_RECOIL_IF_MISS] = 1, - [EFFECT_MIST] = 5, - [EFFECT_FOCUS_ENERGY] = 1, - [EFFECT_RECOIL_25] = 2, - [EFFECT_CONFUSE] = 4, - [EFFECT_ATTACK_UP_2] = 1, - [EFFECT_DEFENSE_UP_2] = 1, - [EFFECT_SPEED_UP_2] = 1, - [EFFECT_SPECIAL_ATTACK_UP_2] = 1, - [EFFECT_SPECIAL_DEFENSE_UP_2] = 1, - [EFFECT_ACCURACY_UP_2] = 1, - [EFFECT_EVASION_UP_2] = 1, - [EFFECT_TRANSFORM] = 0, - [EFFECT_ATTACK_DOWN_2] = 1, - [EFFECT_DEFENSE_DOWN_2] = 1, - [EFFECT_SPEED_DOWN_2] = 1, - [EFFECT_SPECIAL_ATTACK_DOWN_2] = 1, - [EFFECT_SPECIAL_DEFENSE_DOWN_2] = 1, - [EFFECT_ACCURACY_DOWN_2] = 1, - [EFFECT_EVASION_DOWN_2] = 1, - [EFFECT_REFLECT] = 7, - [EFFECT_POISON] = 4, - [EFFECT_PARALYZE] = 4, - [EFFECT_ATTACK_DOWN_HIT] = 1, - [EFFECT_DEFENSE_DOWN_HIT] = 1, - [EFFECT_SPEED_DOWN_HIT] = 1, - [EFFECT_SPECIAL_ATTACK_DOWN_HIT] = 1, - [EFFECT_SPECIAL_DEFENSE_DOWN_HIT] = 1, - [EFFECT_ACCURACY_DOWN_HIT] = 1, - [EFFECT_EVASION_DOWN_HIT] = 1, -// [EFFECT_SKY_ATTACK] = 4, - [EFFECT_CONFUSE_HIT] = 1, -// [EFFECT_TWINEEDLE] = 1, - [EFFECT_VITAL_THROW] = 1, - [EFFECT_SUBSTITUTE] = 4, - [EFFECT_RECHARGE] = 5, - [EFFECT_RAGE] = 2, - [EFFECT_MIMIC] = 4, - [EFFECT_METRONOME] = 1, - [EFFECT_LEECH_SEED] = 4, - [EFFECT_DO_NOTHING] = 1, - [EFFECT_DISABLE] = 7, - [EFFECT_LEVEL_DAMAGE] = 2, - [EFFECT_PSYWAVE] = 1, - [EFFECT_COUNTER] = 5, - [EFFECT_ENCORE] = 7, - [EFFECT_PAIN_SPLIT] = 3, - [EFFECT_SNORE] = 3, - [EFFECT_CONVERSION_2] = 4, - [EFFECT_LOCK_ON] = 3, - [EFFECT_SKETCH] = 3, -// [EFFECT_UNUSED_60] = 3, - [EFFECT_SLEEP_TALK] = 3, - [EFFECT_DESTINY_BOND] = 3, - [EFFECT_FLAIL] = 2, - [EFFECT_SPITE] = 4, - [EFFECT_FALSE_SWIPE] = 1, - [EFFECT_HEAL_BELL] = 5, -// [EFFECT_QUICK_ATTACK] = 1, - [EFFECT_TRIPLE_KICK] = 1, - [EFFECT_THIEF] = 4, - [EFFECT_MEAN_LOOK] = 5, - [EFFECT_NIGHTMARE] = 3, - [EFFECT_MINIMIZE] = 1, - [EFFECT_CURSE] = 2, -// [EFFECT_UNUSED_6E] = 1, - [EFFECT_PROTECT] = 5, - [EFFECT_SPIKES] = 4, - [EFFECT_FORESIGHT] = 3, - [EFFECT_PERISH_SONG] = 6, - [EFFECT_SANDSTORM] = 4, - [EFFECT_ENDURE] = 3, - [EFFECT_ROLLOUT] = 3, - [EFFECT_SWAGGER] = 3, - [EFFECT_FURY_CUTTER] = 2, - [EFFECT_ATTRACT] = 4, - [EFFECT_RETURN] = 1, - [EFFECT_PRESENT] = 1, - [EFFECT_FRUSTRATION] = 1, - [EFFECT_SAFEGUARD] = 5, -// [EFFECT_THAW_HIT] = 1, Now unused - [EFFECT_MAGNITUDE] = 1, - [EFFECT_BATON_PASS] = 7, - [EFFECT_PURSUIT] = 2, - [EFFECT_RAPID_SPIN] = 2, - [EFFECT_SONICBOOM] = 1, -// [EFFECT_UNUSED_83] = 1, - [EFFECT_MORNING_SUN] = 4, - [EFFECT_SYNTHESIS] = 4, - [EFFECT_MOONLIGHT] = 4, - [EFFECT_HIDDEN_POWER] = 1, - [EFFECT_RAIN_DANCE] = 4, - [EFFECT_SUNNY_DAY] = 4, - [EFFECT_DEFENSE_UP_HIT] = 1, - [EFFECT_ATTACK_UP_HIT] = 1, - [EFFECT_ALL_STATS_UP_HIT] = 1, -// [EFFECT_UNUSED_8D] = 1, - [EFFECT_BELLY_DRUM] = 7, - [EFFECT_PSYCH_UP] = 7, - [EFFECT_MIRROR_COAT] = 6, - [EFFECT_SKULL_BASH] = 3, - [EFFECT_TWISTER] = 1, - [EFFECT_EARTHQUAKE] = 1, - [EFFECT_FUTURE_SIGHT] = 1, - [EFFECT_GUST] = 1, - [EFFECT_FLINCH_MINIMIZE_HIT] = 1, - [EFFECT_SOLAR_BEAM] = 1, - [EFFECT_THUNDER] = 1, - [EFFECT_TELEPORT] = 1, - [EFFECT_BEAT_UP] = 2, - [EFFECT_SEMI_INVULNERABLE] = 3, - [EFFECT_DEFENSE_CURL] = 1, - [EFFECT_SOFTBOILED] = 1, - [EFFECT_FAKE_OUT] = 4, - [EFFECT_UPROAR] = 4, - [EFFECT_STOCKPILE] = 3, - [EFFECT_SPIT_UP] = 3, - [EFFECT_SWALLOW] = 3, -// [EFFECT_UNUSED_A3] = 1, - [EFFECT_HAIL] = 4, - [EFFECT_TORMENT] = 7, - [EFFECT_FLATTER] = 7, - [EFFECT_WILL_O_WISP] = 5, - [EFFECT_MEMENTO] = 7, - [EFFECT_FACADE] = 1, - [EFFECT_FOCUS_PUNCH] = 7, - [EFFECT_SMELLINGSALT] = 1, - [EFFECT_FOLLOW_ME] = 5, - [EFFECT_NATURE_POWER] = 0, - [EFFECT_CHARGE] = 4, - [EFFECT_TAUNT] = 4, - [EFFECT_HELPING_HAND] = 4, - [EFFECT_TRICK] = 4, - [EFFECT_ROLE_PLAY] = 4, - [EFFECT_WISH] = 2, - [EFFECT_ASSIST] = 2, - [EFFECT_INGRAIN] = 6, - [EFFECT_SUPERPOWER] = 3, - [EFFECT_MAGIC_COAT] = 6, - [EFFECT_RECYCLE] = 4, - [EFFECT_REVENGE] = 4, - [EFFECT_BRICK_BREAK] = 2, - [EFFECT_YAWN] = 5, - [EFFECT_KNOCK_OFF] = 2, - [EFFECT_ENDEAVOR] = 1, - [EFFECT_ERUPTION] = 1, - [EFFECT_SKILL_SWAP] = 6, - [EFFECT_IMPRISON] = 6, - [EFFECT_REFRESH] = 6, - [EFFECT_GRUDGE] = 1, - [EFFECT_SNATCH] = 1, - [EFFECT_LOW_KICK] = 1, - [EFFECT_SECRET_POWER] = 1, - [EFFECT_RECOIL_33] = 2, - [EFFECT_TEETER_DANCE] = 6, -// [EFFECT_BLAZE_KICK] = 1, - [EFFECT_MUD_SPORT] = 4, - [EFFECT_POISON_FANG] = 1, - [EFFECT_WEATHER_BALL] = 1, - [EFFECT_OVERHEAT] = 3, - [EFFECT_TICKLE] = 1, - [EFFECT_COSMIC_POWER] = 1, - [EFFECT_SKY_UPPERCUT] = 1, - [EFFECT_BULK_UP] = 1, -// [EFFECT_POISON_TAIL] = 1, - [EFFECT_WATER_SPORT] = 4, - [EFFECT_CALM_MIND] = 1, - [EFFECT_DRAGON_DANCE] = 1, - [EFFECT_CAMOUFLAGE] = 3, - [EFFECT_SLEEP_HIT] = 1, - [EFFECT_SPECIAL_ATTACK_UP_HIT] = 1, + [EFFECT_HIT] = 1, + [EFFECT_SLEEP] = 1, + [EFFECT_POISON_HIT] = 1, + [EFFECT_ABSORB] = 4, + [EFFECT_BURN_HIT] = 1, + [EFFECT_FREEZE_HIT] = 1, + [EFFECT_PARALYZE_HIT] = 1, + [EFFECT_EXPLOSION] = 0, + [EFFECT_DREAM_EATER] = 5, + [EFFECT_MIRROR_MOVE] = 1, + [EFFECT_ATTACK_UP] = 1, + [EFFECT_DEFENSE_UP] = 1, + [EFFECT_SPEED_UP] = 1, + [EFFECT_SPECIAL_ATTACK_UP] = 1, + [EFFECT_SPECIAL_DEFENSE_UP] = 1, + [EFFECT_ACCURACY_UP] = 1, + [EFFECT_EVASION_UP] = 1, +// [EFFECT_ALWAYS_HIT] = 2, + [EFFECT_ATTACK_DOWN] = 1, + [EFFECT_DEFENSE_DOWN] = 1, + [EFFECT_SPEED_DOWN] = 1, + [EFFECT_SPECIAL_ATTACK_DOWN] = 1, + [EFFECT_SPECIAL_DEFENSE_DOWN] = 1, + [EFFECT_ACCURACY_DOWN] = 1, + [EFFECT_EVASION_DOWN] = 1, + [EFFECT_HAZE] = 5, + [EFFECT_BIDE] = 5, + [EFFECT_RAMPAGE] = 4, + [EFFECT_ROAR] = 5, + [EFFECT_MULTI_HIT] = 1, + [EFFECT_CONVERSION] = 3, + [EFFECT_FLINCH_HIT] = 1, + [EFFECT_RESTORE_HP] = 3, + [EFFECT_TOXIC] = 5, + [EFFECT_PAY_DAY] = 1, + [EFFECT_LIGHT_SCREEN] = 7, + [EFFECT_TRI_ATTACK] = 1, + [EFFECT_REST] = 7, + [EFFECT_OHKO] = 7, +// [EFFECT_RAZOR_WIND] = 1, + [EFFECT_SUPER_FANG] = 5, + [EFFECT_DRAGON_RAGE] = 2, + [EFFECT_TRAP] = 4, +// [EFFECT_HIGH_CRITICAL] = 1, +// [EFFECT_DOUBLE_HIT] = 1, + [EFFECT_RECOIL_IF_MISS] = 1, + [EFFECT_MIST] = 5, + [EFFECT_FOCUS_ENERGY] = 1, + [EFFECT_RECOIL_25] = 2, + [EFFECT_CONFUSE] = 4, + [EFFECT_ATTACK_UP_2] = 1, + [EFFECT_DEFENSE_UP_2] = 1, + [EFFECT_SPEED_UP_2] = 1, + [EFFECT_SPECIAL_ATTACK_UP_2] = 1, + [EFFECT_SPECIAL_DEFENSE_UP_2] = 1, + [EFFECT_ACCURACY_UP_2] = 1, + [EFFECT_EVASION_UP_2] = 1, + [EFFECT_TRANSFORM] = 0, + [EFFECT_ATTACK_DOWN_2] = 1, + [EFFECT_DEFENSE_DOWN_2] = 1, + [EFFECT_SPEED_DOWN_2] = 1, + [EFFECT_SPECIAL_ATTACK_DOWN_2] = 1, + [EFFECT_SPECIAL_DEFENSE_DOWN_2] = 1, + [EFFECT_ACCURACY_DOWN_2] = 1, + [EFFECT_EVASION_DOWN_2] = 1, + [EFFECT_REFLECT] = 7, + [EFFECT_POISON] = 4, + [EFFECT_PARALYZE] = 4, + [EFFECT_ATTACK_DOWN_HIT] = 1, + [EFFECT_DEFENSE_DOWN_HIT] = 1, + [EFFECT_SPEED_DOWN_HIT] = 1, + [EFFECT_SPECIAL_ATTACK_DOWN_HIT] = 1, + [EFFECT_SPECIAL_DEFENSE_DOWN_HIT] = 1, + [EFFECT_ACCURACY_DOWN_HIT] = 1, + [EFFECT_EVASION_DOWN_HIT] = 1, +// [EFFECT_SKY_ATTACK] = 4, + [EFFECT_CONFUSE_HIT] = 1, +// [EFFECT_TWINEEDLE] = 1, + [EFFECT_VITAL_THROW] = 1, + [EFFECT_SUBSTITUTE] = 4, + [EFFECT_RECHARGE] = 5, + [EFFECT_RAGE] = 2, + [EFFECT_MIMIC] = 4, + [EFFECT_METRONOME] = 1, + [EFFECT_LEECH_SEED] = 4, + [EFFECT_DO_NOTHING] = 1, + [EFFECT_DISABLE] = 7, + [EFFECT_LEVEL_DAMAGE] = 2, + [EFFECT_PSYWAVE] = 1, + [EFFECT_COUNTER] = 5, + [EFFECT_ENCORE] = 7, + [EFFECT_PAIN_SPLIT] = 3, + [EFFECT_SNORE] = 3, + [EFFECT_CONVERSION_2] = 4, + [EFFECT_LOCK_ON] = 3, + [EFFECT_SKETCH] = 3, +// [EFFECT_UNUSED_60] = 3, + [EFFECT_SLEEP_TALK] = 3, + [EFFECT_DESTINY_BOND] = 3, + [EFFECT_FLAIL] = 2, + [EFFECT_SPITE] = 4, + [EFFECT_FALSE_SWIPE] = 1, + [EFFECT_HEAL_BELL] = 5, +// [EFFECT_QUICK_ATTACK] = 1, + [EFFECT_TRIPLE_KICK] = 1, + [EFFECT_THIEF] = 4, + [EFFECT_MEAN_LOOK] = 5, + [EFFECT_NIGHTMARE] = 3, + [EFFECT_MINIMIZE] = 1, + [EFFECT_CURSE] = 2, +// [EFFECT_UNUSED_6E] = 1, + [EFFECT_PROTECT] = 5, + [EFFECT_SPIKES] = 4, + [EFFECT_FORESIGHT] = 3, + [EFFECT_PERISH_SONG] = 6, + [EFFECT_SANDSTORM] = 4, + [EFFECT_ENDURE] = 3, + [EFFECT_ROLLOUT] = 3, + [EFFECT_SWAGGER] = 3, + [EFFECT_FURY_CUTTER] = 2, + [EFFECT_ATTRACT] = 4, + [EFFECT_RETURN] = 1, + [EFFECT_PRESENT] = 1, + [EFFECT_FRUSTRATION] = 1, + [EFFECT_SAFEGUARD] = 5, +// [EFFECT_THAW_HIT] = 1, Now unused + [EFFECT_MAGNITUDE] = 1, + [EFFECT_BATON_PASS] = 7, + [EFFECT_PURSUIT] = 2, + [EFFECT_RAPID_SPIN] = 2, + [EFFECT_SONICBOOM] = 1, +// [EFFECT_UNUSED_83] = 1, + [EFFECT_MORNING_SUN] = 4, + [EFFECT_SYNTHESIS] = 4, + [EFFECT_MOONLIGHT] = 4, + [EFFECT_HIDDEN_POWER] = 1, + [EFFECT_RAIN_DANCE] = 4, + [EFFECT_SUNNY_DAY] = 4, + [EFFECT_DEFENSE_UP_HIT] = 1, + [EFFECT_ATTACK_UP_HIT] = 1, + [EFFECT_ALL_STATS_UP_HIT] = 1, +// [EFFECT_UNUSED_8D] = 1, + [EFFECT_BELLY_DRUM] = 7, + [EFFECT_PSYCH_UP] = 7, + [EFFECT_MIRROR_COAT] = 6, + [EFFECT_SKULL_BASH] = 3, + [EFFECT_TWISTER] = 1, + [EFFECT_EARTHQUAKE] = 1, + [EFFECT_FUTURE_SIGHT] = 1, + [EFFECT_GUST] = 1, + [EFFECT_FLINCH_MINIMIZE_HIT] = 1, + [EFFECT_SOLAR_BEAM] = 1, + [EFFECT_THUNDER] = 1, + [EFFECT_TELEPORT] = 1, + [EFFECT_BEAT_UP] = 2, + [EFFECT_SEMI_INVULNERABLE] = 3, + [EFFECT_DEFENSE_CURL] = 1, + [EFFECT_SOFTBOILED] = 1, + [EFFECT_FAKE_OUT] = 4, + [EFFECT_UPROAR] = 4, + [EFFECT_STOCKPILE] = 3, + [EFFECT_SPIT_UP] = 3, + [EFFECT_SWALLOW] = 3, +// [EFFECT_UNUSED_A3] = 1, + [EFFECT_HAIL] = 4, + [EFFECT_TORMENT] = 7, + [EFFECT_FLATTER] = 7, + [EFFECT_WILL_O_WISP] = 5, + [EFFECT_MEMENTO] = 7, + [EFFECT_FACADE] = 1, + [EFFECT_FOCUS_PUNCH] = 7, + [EFFECT_SMELLINGSALT] = 1, + [EFFECT_FOLLOW_ME] = 5, + [EFFECT_NATURE_POWER] = 0, + [EFFECT_CHARGE] = 4, + [EFFECT_TAUNT] = 4, + [EFFECT_HELPING_HAND] = 4, + [EFFECT_TRICK] = 4, + [EFFECT_ROLE_PLAY] = 4, + [EFFECT_WISH] = 2, + [EFFECT_ASSIST] = 2, + [EFFECT_INGRAIN] = 6, + [EFFECT_SUPERPOWER] = 3, + [EFFECT_MAGIC_COAT] = 6, + [EFFECT_RECYCLE] = 4, + [EFFECT_REVENGE] = 4, + [EFFECT_BRICK_BREAK] = 2, + [EFFECT_YAWN] = 5, + [EFFECT_KNOCK_OFF] = 2, + [EFFECT_ENDEAVOR] = 1, + [EFFECT_ERUPTION] = 1, + [EFFECT_SKILL_SWAP] = 6, + [EFFECT_IMPRISON] = 6, + [EFFECT_REFRESH] = 6, + [EFFECT_GRUDGE] = 1, + [EFFECT_SNATCH] = 1, + [EFFECT_LOW_KICK] = 1, + [EFFECT_SECRET_POWER] = 1, + [EFFECT_RECOIL_33] = 2, + [EFFECT_TEETER_DANCE] = 6, +// [EFFECT_BLAZE_KICK] = 1, + [EFFECT_MUD_SPORT] = 4, + [EFFECT_POISON_FANG] = 1, + [EFFECT_WEATHER_BALL] = 1, + [EFFECT_OVERHEAT] = 3, + [EFFECT_TICKLE] = 1, + [EFFECT_COSMIC_POWER] = 1, + [EFFECT_SKY_UPPERCUT] = 1, + [EFFECT_BULK_UP] = 1, +// [EFFECT_POISON_TAIL] = 1, + [EFFECT_WATER_SPORT] = 4, + [EFFECT_CALM_MIND] = 1, + [EFFECT_DRAGON_DANCE] = 1, + [EFFECT_CAMOUFLAGE] = 3, + [EFFECT_PLEDGE] = 0, // TODO: Assign points + [EFFECT_FLING] = 0, // TODO: Assign points + [EFFECT_NATURAL_GIFT] = 0, // TODO: Assign points + [EFFECT_WAKE_UP_SLAP] = 0, // TODO: Assign points + [EFFECT_WRING_OUT] = 0, // TODO: Assign points + [EFFECT_HEX] = 0, // TODO: Assign points + [EFFECT_ASSURANCE] = 0, // TODO: Assign points + [EFFECT_TRUMP_CARD] = 0, // TODO: Assign points + [EFFECT_ACROBATICS] = 0, // TODO: Assign points + [EFFECT_HEAT_CRASH] = 0, // TODO: Assign points + [EFFECT_PUNISHMENT] = 0, // TODO: Assign points + [EFFECT_STORED_POWER] = 0, // TODO: Assign points + [EFFECT_ELECTRO_BALL] = 0, // TODO: Assign points + [EFFECT_GYRO_BALL] = 0, // TODO: Assign points + [EFFECT_ECHOED_VOICE] = 0, // TODO: Assign points + [EFFECT_PAYBACK] = 0, // TODO: Assign points + [EFFECT_ROUND] = 0, // TODO: Assign points + [EFFECT_BRINE] = 0, // TODO: Assign points + [EFFECT_VENOSHOCK] = 0, // TODO: Assign points + [EFFECT_RETALIATE] = 0, // TODO: Assign points + [EFFECT_BULLDOZE] = 0, // TODO: Assign points + [EFFECT_FOUL_PLAY] = 0, // TODO: Assign points + [EFFECT_PSYSHOCK] = 0, // TODO: Assign points + [EFFECT_ROOST] = 0, // TODO: Assign points + [EFFECT_GRAVITY] = 0, // TODO: Assign points + [EFFECT_MIRACLE_EYE] = 0, // TODO: Assign points + [EFFECT_TAILWIND] = 0, // TODO: Assign points + [EFFECT_EMBARGO] = 0, // TODO: Assign points + [EFFECT_AQUA_RING] = 0, // TODO: Assign points + [EFFECT_TRICK_ROOM] = 0, // TODO: Assign points + [EFFECT_WONDER_ROOM] = 0, // TODO: Assign points + [EFFECT_MAGIC_ROOM] = 0, // TODO: Assign points + [EFFECT_MAGNET_RISE] = 0, // TODO: Assign points + [EFFECT_TOXIC_SPIKES] = 0, // TODO: Assign points + [EFFECT_GASTRO_ACID] = 0, // TODO: Assign points + [EFFECT_STEALTH_ROCK] = 0, // TODO: Assign points + [EFFECT_TELEKINESIS] = 0, // TODO: Assign points + [EFFECT_POWER_SWAP] = 0, // TODO: Assign points + [EFFECT_GUARD_SWAP] = 0, // TODO: Assign points + [EFFECT_HEART_SWAP] = 0, // TODO: Assign points + [EFFECT_POWER_SPLIT] = 0, // TODO: Assign points + [EFFECT_GUARD_SPLIT] = 0, // TODO: Assign points + [EFFECT_STICKY_WEB] = 0, // TODO: Assign points + [EFFECT_METAL_BURST] = 0, // TODO: Assign points + [EFFECT_LUCKY_CHANT] = 0, // TODO: Assign points + [EFFECT_SUCKER_PUNCH] = 0, // TODO: Assign points + [EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2] = 0, // TODO: Assign points + [EFFECT_SIMPLE_BEAM] = 0, // TODO: Assign points + [EFFECT_ENTRAINMENT] = 0, // TODO: Assign points + [EFFECT_HEAL_PULSE] = 0, // TODO: Assign points + [EFFECT_QUASH] = 0, // TODO: Assign points + [EFFECT_ION_DELUGE] = 0, // TODO: Assign points + [EFFECT_FREEZE_DRY] = 0, // TODO: Assign points + [EFFECT_TOPSY_TURVY] = 0, // TODO: Assign points + [EFFECT_MISTY_TERRAIN] = 0, // TODO: Assign points + [EFFECT_GRASSY_TERRAIN] = 0, // TODO: Assign points + [EFFECT_ELECTRIC_TERRAIN] = 0, // TODO: Assign points + [EFFECT_PSYCHIC_TERRAIN] = 0, // TODO: Assign points + [EFFECT_ATTACK_ACCURACY_UP] = 0, // TODO: Assign points + [EFFECT_ATTACK_SPATK_UP] = 0, // TODO: Assign points + [EFFECT_HURRICANE] = 0, // TODO: Assign points + [EFFECT_TWO_TYPED_MOVE] = 0, // TODO: Assign points + [EFFECT_ME_FIRST] = 0, // TODO: Assign points + [EFFECT_SPEED_UP_HIT] = 0, // TODO: Assign points + [EFFECT_QUIVER_DANCE] = 0, // TODO: Assign points + [EFFECT_COIL] = 0, // TODO: Assign points + [EFFECT_ELECTRIFY] = 0, // TODO: Assign points + [EFFECT_SCALD] = 0, // TODO: Assign points + [EFFECT_REFLECT_TYPE] = 0, // TODO: Assign points + [EFFECT_SOAK] = 0, // TODO: Assign points + [EFFECT_GROWTH] = 0, // TODO: Assign points + [EFFECT_CLOSE_COMBAT] = 0, // TODO: Assign points + [EFFECT_LAST_RESORT] = 0, // TODO: Assign points + [EFFECT_RECOIL_33_STATUS] = 0, // TODO: Assign points + [EFFECT_FLINCH_STATUS] = 0, // TODO: Assign points + [EFFECT_RECOIL_50] = 0, // TODO: Assign points + [EFFECT_SHELL_SMASH] = 0, // TODO: Assign points + [EFFECT_SHIFT_GEAR] = 0, // TODO: Assign points + [EFFECT_DEFENSE_UP_3] = 0, // TODO: Assign points + [EFFECT_NOBLE_ROAR] = 0, // TODO: Assign points + [EFFECT_VENOM_DRENCH] = 0, // TODO: Assign points + [EFFECT_TOXIC_THREAD] = 0, // TODO: Assign points + [EFFECT_CLEAR_SMOG] = 0, // TODO: Assign points + [EFFECT_HIT_SWITCH_TARGET] = 0, // TODO: Assign points + [EFFECT_FINAL_GAMBIT] = 0, // TODO: Assign points + [EFFECT_CHANGE_TYPE_ON_ITEM] = 0, // TODO: Assign points + [EFFECT_AUTOTOMIZE] = 0, // TODO: Assign points + [EFFECT_COPYCAT] = 0, // TODO: Assign points + [EFFECT_DEFOG] = 0, // TODO: Assign points + [EFFECT_HIT_ENEMY_HEAL_ALLY] = 0, // TODO: Assign points + [EFFECT_SMACK_DOWN] = 0, // TODO: Assign points + [EFFECT_SYNCHRONOISE] = 0, // TODO: Assign points + [EFFECT_PSYCHO_SHIFT] = 0, // TODO: Assign points + [EFFECT_POWER_TRICK] = 0, // TODO: Assign points + [EFFECT_FLAME_BURST] = 0, // TODO: Assign points + [EFFECT_AFTER_YOU] = 0, // TODO: Assign points + [EFFECT_BESTOW] = 0, // TODO: Assign points + [EFFECT_ROTOTILLER] = 0, // TODO: Assign points + [EFFECT_FLOWER_SHIELD] = 0, // TODO: Assign points + [EFFECT_HIT_PREVENT_ESCAPE] = 0, // TODO: Assign points + [EFFECT_SPEED_SWAP] = 0, // TODO: Assign points + [EFFECT_DEFENSE_UP2_HIT] = 0, // TODO: Assign points + [EFFECT_REVELATION_DANCE] = 0, // TODO: Assign points + [EFFECT_AURORA_VEIL] = 0, // TODO: Assign points + [EFFECT_THIRD_TYPE] = 0, // TODO: Assign points + [EFFECT_FEINT] = 0, // TODO: Assign points + [EFFECT_SPARKLING_ARIA] = 0, // TODO: Assign points + [EFFECT_ACUPRESSURE] = 0, // TODO: Assign points + [EFFECT_AROMATIC_MIST] = 0, // TODO: Assign points + [EFFECT_POWDER] = 0, // TODO: Assign points + [EFFECT_SP_ATTACK_UP_HIT] = 0, // TODO: Assign points + [EFFECT_BELCH] = 0, // TODO: Assign points + [EFFECT_PARTING_SHOT] = 0, // TODO: Assign points + [EFFECT_SPECTRAL_THIEF] = 0, // TODO: Assign points + [EFFECT_V_CREATE] = 0, // TODO: Assign points + [EFFECT_MAT_BLOCK] = 0, // TODO: Assign points + [EFFECT_STOMPING_TANTRUM] = 0, // TODO: Assign points + [EFFECT_CORE_ENFORCER] = 0, // TODO: Assign points + [EFFECT_INSTRUCT] = 0, // TODO: Assign points + [EFFECT_THROAT_CHOP] = 0, // TODO: Assign points + [EFFECT_LASER_FOCUS] = 0, // TODO: Assign points + [EFFECT_MAGNETIC_FLUX] = 0, // TODO: Assign points + [EFFECT_GEAR_UP] = 0, // TODO: Assign points + [EFFECT_INCINERATE] = 0, // TODO: Assign points + [EFFECT_BUG_BITE] = 0, // TODO: Assign points + [EFFECT_STRENGTH_SAP] = 0, // TODO: Assign points + [EFFECT_MIND_BLOWN] = 0, // TODO: Assign points + [EFFECT_PURIFY] = 0, // TODO: Assign points + [EFFECT_BURN_UP] = 0, // TODO: Assign points + [EFFECT_SHORE_UP] = 0, // TODO: Assign points + [EFFECT_GEOMANCY] = 0, // TODO: Assign points + [EFFECT_FAIRY_LOCK] = 0, // TODO: Assign points + [EFFECT_ALLY_SWITCH] = 0, // TODO: Assign points + [EFFECT_RELIC_SONG] = 0, // TODO: Assign points + [EFFECT_ATTACKER_DEFENSE_DOWN_HIT] = 0, // TODO: Assign points + [EFFECT_BODY_PRESS] = 0, // TODO: Assign points + [EFFECT_EERIE_SPELL] = 0, // TODO: Assign points + [EFFECT_JUNGLE_HEALING] = 0, // TODO: Assign points + [EFFECT_COACHING] = 0, // TODO: Assign points + [EFFECT_LASH_OUT] = 0, // TODO: Assign points + [EFFECT_GRASSY_GLIDE] = 0, // TODO: Assign points + [EFFECT_REMOVE_TERRAIN] = 0, // TODO: Assign points + [EFFECT_DYNAMAX_DOUBLE_DMG] = 0, // TODO: Assign points + [EFFECT_DECORATE] = 0, // TODO: Assign points + [EFFECT_SNIPE_SHOT] = 0, // TODO: Assign points + [EFFECT_RECOIL_HP_25] = 0, // TODO: Assign points + [EFFECT_STUFF_CHEEKS] = 0, // TODO: Assign points + [EFFECT_GRAV_APPLE] = 0, // TODO: Assign points + [EFFECT_EVASION_UP_HIT] = 0, // TODO: Assign points + [EFFECT_GLITZY_GLOW] = 0, // TODO: Assign points + [EFFECT_BADDY_BAD] = 0, // TODO: Assign points + [EFFECT_SAPPY_SEED] = 0, // TODO: Assign points + [EFFECT_FREEZY_FROST] = 0, // TODO: Assign points + [EFFECT_SPARKLY_SWIRL] = 0, // TODO: Assign points + [EFFECT_PLASMA_FISTS] = 0, // TODO: Assign points + [EFFECT_HYPERSPACE_FURY] = 0, // TODO: Assign points + [EFFECT_AURA_WHEEL] = 0, // TODO: Assign points + [EFFECT_PHOTON_GEYSER] = 0, // TODO: Assign points + [EFFECT_SHELL_SIDE_ARM] = 0, // TODO: Assign points + [EFFECT_TERRAIN_PULSE] = 0, // TODO: Assign points + [EFFECT_JAW_LOCK] = 0, // TODO: Assign points + [EFFECT_NO_RETREAT] = 0, // TODO: Assign points + [EFFECT_TAR_SHOT] = 0, // TODO: Assign points + [EFFECT_POLTERGEIST] = 0, // TODO: Assign points + [EFFECT_OCTOLOCK] = 0, // TODO: Assign points + [EFFECT_CLANGOROUS_SOUL] = 0, // TODO: Assign points + [EFFECT_BOLT_BEAK] = 0, // TODO: Assign points + [EFFECT_SKY_DROP] = 0, // TODO: Assign points + [EFFECT_EXPANDING_FORCE] = 0, // TODO: Assign points + [EFFECT_SCALE_SHOT] = 0, // TODO: Assign points + [EFFECT_METEOR_BEAM] = 0, // TODO: Assign points + [EFFECT_RISING_VOLTAGE] = 0, // TODO: Assign points + [EFFECT_BEAK_BLAST] = 0, // TODO: Assign points + [EFFECT_COURT_CHANGE] = 0, // TODO: Assign points + [EFFECT_STEEL_BEAM] = 0, // TODO: Assign points + [EFFECT_EXTREME_EVOBOOST] = 0, // TODO: Assign points + [EFFECT_DAMAGE_SET_TERRAIN] = 0, // TODO: Assign points + [EFFECT_DARK_VOID] = 0, // TODO: Assign points + [EFFECT_SLEEP_HIT] = 1, + [EFFECT_DOUBLE_SHOCK] = 0, // TODO: Assign points + [EFFECT_SPECIAL_ATTACK_UP_HIT] = 1, + [EFFECT_VICTORY_DANCE] = 0, // TODO: Assign points }; static const u16 sPoints_Effectiveness[] = From 06ab4fc842a295be474aa8783015250749a9f1a5 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 4 Dec 2022 21:56:40 +0100 Subject: [PATCH 20/27] Update move flags --- src/data/battle_moves.h | 108 ++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 55 deletions(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 3ea9cd716..ef4d15039 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13286,7 +13286,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, @@ -13302,7 +13302,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, @@ -13318,7 +13318,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, + .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -13334,7 +13334,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, @@ -13354,7 +13354,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, @@ -13370,7 +13370,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, @@ -13446,7 +13446,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, @@ -13498,7 +13498,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, @@ -13518,7 +13518,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, @@ -13538,7 +13538,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, @@ -13554,7 +13554,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_USER, .priority = 0, - .flags = 0, + .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -13574,7 +13574,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -13590,7 +13590,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, @@ -13606,7 +13606,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, @@ -13627,7 +13627,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, @@ -13648,7 +13648,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, @@ -13669,7 +13669,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, @@ -13749,7 +13749,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE @@ -13781,7 +13781,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE @@ -13797,7 +13797,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, // No King's Rock I believe? I may be mistaken + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE @@ -13813,7 +13813,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST, // I assume Iron Fist is relevant here, but untested + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, @@ -13825,7 +13825,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .effect = EFFECT_PLACEHOLDER, // EFFECT_SPICY_EXTRACT .power = 0, .type = TYPE_GRASS, - .accuracy = 0, // Supposedly never misses? needs a double check? + .accuracy = 0, .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -13847,7 +13847,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE @@ -13863,7 +13863,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, // | FLAG_SLICING_MOVE, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMovePower = 40, .zMoveEffect = Z_EFFECT_NONE, @@ -13880,7 +13880,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, @@ -13897,7 +13897,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE @@ -13930,7 +13930,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 80, .zMoveEffect = Z_EFFECT_NONE, @@ -13963,7 +13963,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 60, .zMoveEffect = Z_EFFECT_NONE @@ -13977,9 +13977,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, // Supposedly unconfirmed? + .target = MOVE_TARGET_FOES_AND_ALLY, // Supposedly unconfirmed? .priority = 0, - .flags = 0, + .flags = 0, // TO VERIFY .split = SPLIT_STATUS, .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, @@ -14045,7 +14045,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, @@ -14061,7 +14061,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_DANCE, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_DANCE | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, @@ -14077,7 +14077,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, // TO VERIFY .split = SPLIT_PHYSICAL, .zMovePower = 175, .zMoveEffect = Z_EFFECT_NONE, @@ -14094,7 +14094,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE, @@ -14111,7 +14111,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -14128,7 +14128,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, @@ -14145,7 +14145,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, @@ -14167,7 +14167,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMovePower = 0, .zMoveEffect = Z_EFFECT_RESET_STATS, // Uncallable by Metronome (to be implemented) - // Supposedly unsnatchable? }, [MOVE_CHILLY_RECEPTION] = @@ -14180,7 +14179,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = 0, .split = SPLIT_STATUS, .zMovePower = 0, .zMoveEffect = Z_EFFECT_SPD_UP_1, @@ -14202,7 +14201,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMovePower = 0, .zMoveEffect = Z_EFFECT_NONE, // Supposedly uncallable by Metronome? (to be implemented) - // Supposedly unsnatchable? }, [MOVE_SNOWSCAPE] = @@ -14232,7 +14230,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -14248,7 +14246,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -14264,7 +14262,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -14280,7 +14278,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, @@ -14296,7 +14294,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TWO_STRIKES, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_TWO_STRIKES, .split = SPLIT_SPECIAL, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -14312,7 +14310,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_SHEER_FORCE_BOOST, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_IRON_FIST_BOOST | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, @@ -14360,7 +14358,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 190, .zMoveEffect = Z_EFFECT_NONE @@ -14376,7 +14374,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMovePower = 200, .zMoveEffect = Z_EFFECT_NONE, @@ -14392,7 +14390,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, }, @@ -14407,7 +14405,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, // | FLAG_SLICING_MOVE, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_HIGH_CRIT, // | FLAG_SLICING_MOVE, .split = SPLIT_PHYSICAL, .zMovePower = 140, .zMoveEffect = Z_EFFECT_NONE, @@ -14423,7 +14421,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE @@ -14439,7 +14437,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE @@ -14455,7 +14453,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE @@ -14471,7 +14469,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE @@ -14487,7 +14485,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE From 8c77ae59d6e97a0bf3017919215eaab7578b580d Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 4 Dec 2022 21:57:02 +0100 Subject: [PATCH 21/27] Use official Double Shock message --- src/battle_message.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_message.c b/src/battle_message.c index 07598d95a..416b10613 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -759,7 +759,7 @@ static const u8 sText_AttackerBrokeThroughParalysis[] = _("{B_ATK_NAME_WITH_PREF static const u8 sText_AttackerHealedItsBurn[] = _("{B_ATK_NAME_WITH_PREFIX} healed its burn with\nits sheer determination!"); static const u8 sText_AttackerMeltedTheIce[] = _("{B_ATK_NAME_WITH_PREFIX} melted the ice with\nits fiery determination!"); static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!"); -static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} discharged itself out!"); // Unofficial text until the string from the main games is known +static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { From 4d1494bf95588fe6a5a970c128443e99dd5f313b Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 4 Dec 2022 20:48:17 -0300 Subject: [PATCH 22/27] Update INSTALL.md --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 5f2a1f05f..ee4706c6c 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -358,7 +358,7 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for 1. If pokeemerald is not already downloaded (some users may prefer to download pokeemerald via a git client like GitHub Desktop), run: ```bash - git clone https://github.com/pret/pokeemerald + git clone https://github.com/rh-hideout/pokeemerald-expansion ```
From f9458117eecd04b84bc78f82c10c70e67bb0395e Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 5 Dec 2022 23:31:41 -0300 Subject: [PATCH 23/27] Updated TryChangeBattleTerrain --- 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 faf4cdb89..ae6161c29 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4238,7 +4238,7 @@ static bool32 TryChangeBattleTerrain(u32 battler, u32 statusFlag, u8 *timer) { if (!(gFieldStatuses & statusFlag)) { - gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_GRASSY_TERRAIN | EFFECT_ELECTRIC_TERRAIN | EFFECT_PSYCHIC_TERRAIN); + gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN); gFieldStatuses |= statusFlag; if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) From 07a8af5975b733e4724e886f8a6307412e07affa Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sun, 11 Dec 2022 22:09:23 +0100 Subject: [PATCH 24/27] =?UTF-8?q?Set=20FLAG=5FSYS=5FPOKEMON=5FGET=20when?= =?UTF-8?q?=20debug=20gifting=20yourself=20a=20Pok=C3=A9mon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/debug.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/debug.c b/src/debug.c index 7aa21f6a7..90081eb61 100644 --- a/src/debug.c +++ b/src/debug.c @@ -2178,6 +2178,8 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) { PlaySE(MUS_LEVEL_UP); ScriptGiveMon(sDebugMonData->mon_speciesId, gTasks[taskId].data[3], ITEM_NONE, 0,0,0); + //Set flag for user convenience + FlagSet(FLAG_SYS_POKEMON_GET); Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); } @@ -2732,6 +2734,9 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu break; } + //Set flag for user convenience + FlagSet(FLAG_SYS_POKEMON_GET); + Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); //return sentToPc; } From e6a3396b0f5e28f7e92ebf33a1fa5914d6126d68 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 11 Dec 2022 19:24:36 -0300 Subject: [PATCH 25/27] Added Adrenaline Orb check and removed silly comment --- data/battle_scripts_1.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 4514de868..c3c490712 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -8222,7 +8222,7 @@ BattleScript_IntimidateEffect: playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 printstring STRINGID_PKMNCUTSATTACKWITH waitmessage B_WAIT_TIME_LONG -@ Perform stat nerf + call BattleScript_TryAdrenalineOrb BattleScript_IntimidateLoopIncrement: addbyte gBattlerTarget, 1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_IntimidateLoop From 8eff1a13c1e51fa032900c9dcfdb872f1c0f3e49 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 11 Dec 2022 23:17:59 -0300 Subject: [PATCH 26/27] Updated BattleScript_IntimidateEffect to comply with BattleScript_TryAdrenalineOrb's demands --- data/battle_scripts_1.s | 1 + 1 file changed, 1 insertion(+) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c3c490712..f30bccaaa 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -8217,6 +8217,7 @@ BattleScript_IntimidateLoop: jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented .endif BattleScript_IntimidateEffect: + copybyte sBATTLER, gBattlerTarget statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 From 1290a9411d90d777c02fafd9ad53de6fe51798df Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Mon, 12 Dec 2022 00:37:00 -0300 Subject: [PATCH 27/27] Reorganized SpecialStatus struct to minimize padding. --- include/battle.h | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/include/battle.h b/include/battle.h index 06e07b341..658eb1264 100644 --- a/include/battle.h +++ b/include/battle.h @@ -155,6 +155,12 @@ struct ProtectStruct struct SpecialStatus { + s32 dmg; + s32 physicalDmg; + s32 specialDmg; + u8 physicalBattlerId; + u8 specialBattlerId; + u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self. u8 statLowered:1; u8 lightningRodRedirected:1; u8 restoredBattlerSprite: 1; @@ -162,33 +168,29 @@ struct SpecialStatus u8 ppNotAffectedByPressure:1; u8 faintedHasReplacement:1; u8 focusBanded:1; - // End of byte u8 focusSashed:1; + // End of byte u8 sturdied:1; u8 stormDrainRedirected:1; u8 switchInAbilityDone:1; u8 switchInItemDone:1; u8 instructedChosenTarget:3; - // End of byte u8 berryReduced:1; + // End of byte + u8 gemParam; + // End of byte u8 gemBoost:1; u8 rototillerAffected:1; // to be affected by rototiller u8 parentalBondState:2; u8 multiHitOn:1; - // End of byte, two bits unused - u8 gemParam; - u8 damagedMons:4; // Mons that have been damaged directly by using a move, includes substitute. - u8 dancerUsedMove:1; - u8 dancerOriginalTarget:3; u8 announceNeutralizingGas:1; // See Cmd_switchineffects u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS u8 affectionEndured:1; - s32 dmg; - s32 physicalDmg; - s32 specialDmg; - u8 physicalBattlerId; - u8 specialBattlerId; - u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self. + // End of byte + u8 damagedMons:4; // Mons that have been damaged directly by using a move, includes substitute. + u8 dancerUsedMove:1; + u8 dancerOriginalTarget:3; + // End of byte }; struct SideTimer