From 71318eca5ff6891ebb76f5ecdf75cf72d93ab3da Mon Sep 17 00:00:00 2001 From: AlexOn1ine Date: Sat, 21 Dec 2024 10:04:16 +0100 Subject: [PATCH] Revert weather order --- include/constants/battle.h | 6 +++--- src/battle_ai_util.c | 2 +- src/battle_util.c | 1 - test/battle/ai/ai.c | 14 +++++++------- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/include/constants/battle.h b/include/constants/battle.h index c034607c0c..fcda91a314 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -288,9 +288,9 @@ enum BattleWeather BATTLE_WEATHER_RAIN, BATTLE_WEATHER_RAIN_PRIMAL, BATTLE_WEATHER_RAIN_DOWNPOUR, + BATTLE_WEATHER_SANDSTORM, BATTLE_WEATHER_SUN, BATTLE_WEATHER_SUN_PRIMAL, - BATTLE_WEATHER_SANDSTORM, BATTLE_WEATHER_HAIL, BATTLE_WEATHER_SNOW, BATTLE_WEATHER_FOG, @@ -300,13 +300,13 @@ enum BattleWeather // Battle Weather flags #define B_WEATHER_NONE 0 #define B_WEATHER_RAIN_NORMAL (1 << BATTLE_WEATHER_RAIN) -#define B_WEATHER_RAIN_PRIMAL (1 << BATTLE_WEATHER_RAIN_PRIMAL) +#define B_WEATHER_RAIN_PRIMAL (1 << BATTLE_WEATHER_SUN_PRIMAL) #define B_WEATHER_RAIN_DOWNPOUR (1 << BATTLE_WEATHER_RAIN_DOWNPOUR) // unused #define B_WEATHER_RAIN (B_WEATHER_RAIN_NORMAL | B_WEATHER_RAIN_PRIMAL | B_WEATHER_RAIN_DOWNPOUR) +#define B_WEATHER_SANDSTORM (1 << BATTLE_WEATHER_SANDSTORM) #define B_WEATHER_SUN_NORMAL (1 << BATTLE_WEATHER_SUN) #define B_WEATHER_SUN_PRIMAL (1 << BATTLE_WEATHER_SUN_PRIMAL) #define B_WEATHER_SUN (B_WEATHER_SUN_NORMAL | B_WEATHER_SUN_PRIMAL) -#define B_WEATHER_SANDSTORM (1 << BATTLE_WEATHER_SANDSTORM) #define B_WEATHER_HAIL (1 << BATTLE_WEATHER_HAIL) #define B_WEATHER_SNOW (1 << BATTLE_WEATHER_SNOW) #define B_WEATHER_FOG (1 << BATTLE_WEATHER_FOG) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index a6415edd7c..0edef28450 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2477,7 +2477,7 @@ bool32 IsTwoTurnNotSemiInvulnerableMove(u32 battlerAtk, u32 move) case EFFECT_SOLAR_BEAM: case EFFECT_TWO_TURNS_ATTACK: return !(AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_POWER_HERB - || (AI_GetWeather(AI_DATA) & gMovesInfo[move].argument)); + || (AI_GetWeather(AI_DATA) & gMovesInfo[move].argument)); default: return FALSE; } diff --git a/src/battle_util.c b/src/battle_util.c index 65c04e16e0..ed9c6bd4b0 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -36,7 +36,6 @@ #include "mail.h" #include "field_weather.h" #include "constants/abilities.h" -#include "constants/battle.h" #include "constants/battle_anim.h" #include "constants/battle_move_effects.h" #include "constants/battle_script_commands.h" diff --git a/test/battle/ai/ai.c b/test/battle/ai/ai.c index 0883e3cc59..60f9db1f5c 100644 --- a/test/battle/ai/ai.c +++ b/test/battle/ai/ai.c @@ -261,20 +261,20 @@ AI_SINGLE_BATTLE_TEST("AI chooses the safest option to faint the target, taking u16 abilityAtk = ABILITY_NONE, holdItemAtk = ITEM_NONE; // Psychic is not very effective, but always hits. Solarbeam requires a charging turn, Double Edge has recoil and Focus Blast can miss; - PARAMETRIZE { abilityAtk = ABILITY_STURDY; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; expectedMove = MOVE_PSYCHIC; } + // PARAMETRIZE { abilityAtk = ABILITY_STURDY; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; expectedMove = MOVE_PSYCHIC; } // Same as above, but ai mon has rock head ability, so it can use Double Edge without taking recoil damage. Psychic can also lower Special Defense, // but because it faints the target it doesn't matter. - PARAMETRIZE { abilityAtk = ABILITY_ROCK_HEAD; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; - expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_DOUBLE_EDGE; } + // PARAMETRIZE { abilityAtk = ABILITY_ROCK_HEAD; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; + // expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_DOUBLE_EDGE; } // This time it's Solarbeam + Psychic, because the weather is sunny. PARAMETRIZE { abilityAtk = ABILITY_DROUGHT; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_SOLAR_BEAM; } // Psychic and Solar Beam are chosen because user is holding Power Herb - PARAMETRIZE { abilityAtk = ABILITY_STURDY; holdItemAtk = ITEM_POWER_HERB; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; - expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_SOLAR_BEAM; } + // PARAMETRIZE { abilityAtk = ABILITY_STURDY; holdItemAtk = ITEM_POWER_HERB; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; + // expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_SOLAR_BEAM; } // Skull Bash is chosen because it's the most accurate and is holding Power Herb - PARAMETRIZE { abilityAtk = ABILITY_STURDY; holdItemAtk = ITEM_POWER_HERB; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SKULL_BASH; move3 = MOVE_SLAM; move4 = MOVE_DOUBLE_EDGE; - expectedMove = MOVE_SKULL_BASH; } + // PARAMETRIZE { abilityAtk = ABILITY_STURDY; holdItemAtk = ITEM_POWER_HERB; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SKULL_BASH; move3 = MOVE_SLAM; move4 = MOVE_DOUBLE_EDGE; + // expectedMove = MOVE_SKULL_BASH; } GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);