diff --git a/src/battle_ai_field_statuses.c b/src/battle_ai_field_statuses.c index 81d80d29c5..030d99a94e 100644 --- a/src/battle_ai_field_statuses.c +++ b/src/battle_ai_field_statuses.c @@ -398,7 +398,7 @@ static enum FieldEffectOutcome BenefitsFromPsychicTerrain(u32 battler) if (DoesAbilityBenefitFromFieldStatus(gAiLogicData->abilities[battler], STATUS_FIELD_PSYCHIC_TERRAIN)) return FIELD_EFFECT_POSITIVE; - if (HasMoveWithEffect(battler, EFFECT_EXPANDING_FORCE)) + if (HasBattlerSideMoveWithEffect(battler, EFFECT_EXPANDING_FORCE)) return FIELD_EFFECT_POSITIVE; bool32 grounded = AI_IsBattlerGrounded(battler); diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 07c98fba3a..f6a524459d 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2027,6 +2027,9 @@ bool32 ShouldRaiseAnyStat(u32 battlerAtk, u32 battlerDef) bool32 ShouldSetWeather(u32 battler, u32 weather) { + if (AI_GetWeather() & weather) + return FALSE; + return WeatherChecker(battler, weather, FIELD_EFFECT_POSITIVE); } @@ -2037,6 +2040,15 @@ bool32 ShouldClearWeather(u32 battler, u32 weather) bool32 ShouldSetFieldStatus(u32 battler, u32 fieldStatus) { + if (gFieldStatuses & fieldStatus) + { + if (!(fieldStatus & STATUS_FIELD_TRICK_ROOM)) + return FALSE; + // DOUBLE_TRICK_ROOM_ON_LAST_TURN_CHANCE + else if (gFieldTimers.trickRoomTimer != (gBattleTurnCounter + 1)) + return FALSE; + } + return FieldStatusChecker(battler, fieldStatus, FIELD_EFFECT_POSITIVE); }