Battle Weather Refactor
This commit is contained in:
parent
a60a23474b
commit
99fef0260f
@ -266,7 +266,7 @@ BattleScript_EffectChillyReception::
|
||||
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_EffectChillyReceptionBlockedByPrimalRain
|
||||
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_EffectChillyReceptionBlockedByStrongWinds
|
||||
call BattleScript_EffectChillyReceptionPlayAnimation
|
||||
setfieldweather ENUM_WEATHER_SNOW
|
||||
setfieldweather BATTLE_WEATHER_SNOW
|
||||
call BattleScript_MoveWeatherChangeRet
|
||||
goto BattleScript_MoveSwitch
|
||||
BattleScript_EffectChillyReceptionPlayAnimation:
|
||||
@ -4292,7 +4292,7 @@ BattleScript_EffectSandstorm::
|
||||
attackstring
|
||||
ppreduce
|
||||
call BattleScript_CheckPrimalWeather
|
||||
setfieldweather ENUM_WEATHER_SANDSTORM
|
||||
setfieldweather BATTLE_WEATHER_SANDSTORM
|
||||
goto BattleScript_MoveWeatherChange
|
||||
|
||||
BattleScript_EffectRollout::
|
||||
@ -4458,7 +4458,7 @@ BattleScript_EffectRainDance::
|
||||
attackstring
|
||||
ppreduce
|
||||
call BattleScript_CheckPrimalWeather
|
||||
setfieldweather ENUM_WEATHER_RAIN
|
||||
setfieldweather BATTLE_WEATHER_RAIN
|
||||
BattleScript_MoveWeatherChange::
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -4476,7 +4476,7 @@ BattleScript_EffectSunnyDay::
|
||||
attackstring
|
||||
ppreduce
|
||||
call BattleScript_CheckPrimalWeather
|
||||
setfieldweather ENUM_WEATHER_SUN
|
||||
setfieldweather BATTLE_WEATHER_SUN
|
||||
goto BattleScript_MoveWeatherChange
|
||||
|
||||
BattleScript_ExtremelyHarshSunlightWasNotLessened:
|
||||
@ -4835,7 +4835,7 @@ BattleScript_EffectHail::
|
||||
attackstring
|
||||
ppreduce
|
||||
call BattleScript_CheckPrimalWeather
|
||||
setfieldweather ENUM_WEATHER_HAIL
|
||||
setfieldweather BATTLE_WEATHER_HAIL
|
||||
goto BattleScript_MoveWeatherChange
|
||||
|
||||
BattleScript_EffectTorment::
|
||||
@ -10069,7 +10069,7 @@ BattleScript_EffectSnow::
|
||||
attackstring
|
||||
ppreduce
|
||||
call BattleScript_CheckPrimalWeather
|
||||
setfieldweather ENUM_WEATHER_SNOW
|
||||
setfieldweather BATTLE_WEATHER_SNOW
|
||||
goto BattleScript_MoveWeatherChange
|
||||
|
||||
BattleScript_SleepClauseBlocked::
|
||||
|
||||
@ -361,7 +361,7 @@
|
||||
* `setrain` -> `setfieldweather ENUM_WEATHER_RAIN`.
|
||||
* `setsandstorm` -> `setfieldweather ENUM_WEATHER_SANDSTORM`.
|
||||
* `setsunny` -> `setfieldweather ENUM_WEATHER_SUN`.
|
||||
* `sethail` -> `setfieldweather ENUM_WEATHER_HAIL`.
|
||||
* `sethail` -> `setfieldweather BATTLE_WEATHER_HAIL`.
|
||||
* `setsnow` -> `setfieldweather ENUM_WEATHER_SNOW`.
|
||||
* #### Replaced HP checks with `IsBattlerAlive` by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4429
|
||||
* #### Removed redundant `MOVE_EFFECT_SP_ATK_TWO_DOWN` by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4557
|
||||
|
||||
@ -201,7 +201,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType);
|
||||
void SetAtkCancellerForCalledMove(void);
|
||||
u8 AtkCanceller_UnableToUseMove2(void);
|
||||
bool32 HasNoMonsToSwitch(u32 battler, u8 r1, u8 r2);
|
||||
bool32 TryChangeBattleWeather(u32 battler, u32 weatherEnumId, bool32 viaAbility);
|
||||
bool32 TryChangeBattleWeather(u32 battler, u32 battleWeatherId, bool32 viaAbility);
|
||||
u32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 abilityDef);
|
||||
u32 CanPartnerAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 abilityDef);
|
||||
u32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 move, u32 moveType);
|
||||
|
||||
@ -283,44 +283,37 @@
|
||||
#define MOVE_RESULT_FOE_ENDURED_AFFECTION (1 << 9)
|
||||
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
|
||||
|
||||
// Battle Weather flags
|
||||
#define B_WEATHER_NONE 0
|
||||
#define B_WEATHER_RAIN_TEMPORARY (1 << 0)
|
||||
#define B_WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
|
||||
#define B_WEATHER_RAIN_PERMANENT (1 << 2)
|
||||
#define B_WEATHER_RAIN_PRIMAL (1 << 3)
|
||||
#define B_WEATHER_RAIN (B_WEATHER_RAIN_TEMPORARY | B_WEATHER_RAIN_DOWNPOUR | B_WEATHER_RAIN_PERMANENT | B_WEATHER_RAIN_PRIMAL)
|
||||
#define B_WEATHER_SANDSTORM_TEMPORARY (1 << 4)
|
||||
#define B_WEATHER_SANDSTORM_PERMANENT (1 << 5)
|
||||
#define B_WEATHER_SANDSTORM (B_WEATHER_SANDSTORM_TEMPORARY | B_WEATHER_SANDSTORM_PERMANENT)
|
||||
#define B_WEATHER_SUN_TEMPORARY (1 << 6)
|
||||
#define B_WEATHER_SUN_PERMANENT (1 << 7)
|
||||
#define B_WEATHER_SUN_PRIMAL (1 << 8)
|
||||
#define B_WEATHER_SUN (B_WEATHER_SUN_TEMPORARY | B_WEATHER_SUN_PERMANENT | B_WEATHER_SUN_PRIMAL)
|
||||
#define B_WEATHER_HAIL_TEMPORARY (1 << 9)
|
||||
#define B_WEATHER_HAIL_PERMANENT (1 << 10)
|
||||
#define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY | B_WEATHER_HAIL_PERMANENT)
|
||||
#define B_WEATHER_STRONG_WINDS (1 << 11)
|
||||
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS | B_WEATHER_SNOW | B_WEATHER_FOG)
|
||||
#define B_WEATHER_PRIMAL_ANY (B_WEATHER_RAIN_PRIMAL | B_WEATHER_SUN_PRIMAL | B_WEATHER_STRONG_WINDS)
|
||||
#define B_WEATHER_SNOW_TEMPORARY (1 << 12)
|
||||
#define B_WEATHER_SNOW_PERMANENT (1 << 13)
|
||||
#define B_WEATHER_SNOW (B_WEATHER_SNOW_TEMPORARY | B_WEATHER_SNOW_PERMANENT)
|
||||
#define B_WEATHER_FOG_TEMPORARY (1 << 14)
|
||||
#define B_WEATHER_FOG_PERMANENT (1 << 15)
|
||||
#define B_WEATHER_FOG (B_WEATHER_FOG_TEMPORARY | B_WEATHER_FOG_PERMANENT)
|
||||
|
||||
// Battle Weather as enum
|
||||
#define ENUM_WEATHER_NONE 0
|
||||
#define ENUM_WEATHER_RAIN 1
|
||||
#define ENUM_WEATHER_SUN 2
|
||||
#define ENUM_WEATHER_SANDSTORM 3
|
||||
#define ENUM_WEATHER_HAIL 4
|
||||
#define ENUM_WEATHER_SUN_PRIMAL 5
|
||||
#define ENUM_WEATHER_RAIN_PRIMAL 6
|
||||
#define ENUM_WEATHER_STRONG_WINDS 7
|
||||
#define ENUM_WEATHER_SNOW 8
|
||||
#define ENUM_WEATHER_FOG 9
|
||||
// Battle Weather flags
|
||||
#define B_WEATHER_NONE 0
|
||||
#define B_WEATHER_RAIN (1 << 0)
|
||||
#define B_WEATHER_RAIN_PRIMAL (1 << 1)
|
||||
#define B_WEATHER_RAIN_DOWNPOUR (1 << 2) // unused
|
||||
#define B_WEATHER_SANDSTORM (1 << 3)
|
||||
#define B_WEATHER_SUN (1 << 4)
|
||||
#define B_WEATHER_SUN_PRIMAL (1 << 5)
|
||||
#define B_WEATHER_HAIL (1 << 6)
|
||||
#define B_WEATHER_SNOW (1 << 7)
|
||||
#define B_WEATHER_FOG (1 << 8)
|
||||
#define B_WEATHER_STRONG_WINDS (1 << 9)
|
||||
|
||||
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS | B_WEATHER_SNOW | B_WEATHER_FOG)
|
||||
#define B_WEATHER_PRIMAL_ANY (B_WEATHER_RAIN_PRIMAL | B_WEATHER_SUN_PRIMAL | B_WEATHER_STRONG_WINDS)
|
||||
|
||||
|
||||
enum BattleWeather
|
||||
{
|
||||
BATTLE_WEATHER_NONE,
|
||||
BATTLE_WEATHER_RAIN,
|
||||
BATTLE_WEATHER_SUN,
|
||||
BATTLE_WEATHER_SANDSTORM,
|
||||
BATTLE_WEATHER_HAIL,
|
||||
BATTLE_WEATHER_SUN_PRIMAL,
|
||||
BATTLE_WEATHER_RAIN_PRIMAL,
|
||||
BATTLE_WEATHER_STRONG_WINDS,
|
||||
BATTLE_WEATHER_SNOW,
|
||||
BATTLE_WEATHER_FOG,
|
||||
};
|
||||
|
||||
// Move Effects
|
||||
#define MOVE_EFFECT_SLEEP 1
|
||||
|
||||
@ -587,19 +587,19 @@ void BS_SetMaxMoveEffect(void)
|
||||
switch (maxEffect)
|
||||
{
|
||||
case MAX_EFFECT_SUN:
|
||||
weather = ENUM_WEATHER_SUN;
|
||||
weather = BATTLE_WEATHER_SUN;
|
||||
msg = B_MSG_STARTED_SUNLIGHT;
|
||||
break;
|
||||
case MAX_EFFECT_RAIN:
|
||||
weather = ENUM_WEATHER_RAIN;
|
||||
weather = BATTLE_WEATHER_RAIN;
|
||||
msg = B_MSG_STARTED_RAIN;
|
||||
break;
|
||||
case MAX_EFFECT_SANDSTORM:
|
||||
weather = ENUM_WEATHER_SANDSTORM;
|
||||
weather = BATTLE_WEATHER_SANDSTORM;
|
||||
msg = B_MSG_STARTED_SANDSTORM;
|
||||
break;
|
||||
case MAX_EFFECT_HAIL:
|
||||
weather = ENUM_WEATHER_HAIL;
|
||||
weather = BATTLE_WEATHER_HAIL;
|
||||
msg = B_MSG_STARTED_HAIL;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -11577,19 +11577,19 @@ static void Cmd_setfieldweather(void)
|
||||
|
||||
switch (weather)
|
||||
{
|
||||
case ENUM_WEATHER_RAIN:
|
||||
case BATTLE_WEATHER_RAIN:
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_RAIN;
|
||||
break;
|
||||
case ENUM_WEATHER_SUN:
|
||||
case BATTLE_WEATHER_SUN:
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SUNLIGHT;
|
||||
break;
|
||||
case ENUM_WEATHER_SANDSTORM:
|
||||
case BATTLE_WEATHER_SANDSTORM:
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SANDSTORM;
|
||||
break;
|
||||
case ENUM_WEATHER_HAIL:
|
||||
case BATTLE_WEATHER_HAIL:
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_HAIL;
|
||||
break;
|
||||
case ENUM_WEATHER_SNOW:
|
||||
case BATTLE_WEATHER_SNOW:
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SNOW;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1802,28 +1802,17 @@ u8 DoFieldEndTurnEffects(void)
|
||||
case ENDTURN_RAIN:
|
||||
if (gBattleWeather & B_WEATHER_RAIN)
|
||||
{
|
||||
if (!(gBattleWeather & B_WEATHER_RAIN_PERMANENT)
|
||||
&& !(gBattleWeather & B_WEATHER_RAIN_PRIMAL))
|
||||
if (!(gBattleWeather & B_WEATHER_RAIN_PRIMAL)
|
||||
&& gWishFutureKnock.weatherDuration > 0
|
||||
&& --gWishFutureKnock.weatherDuration == 0)
|
||||
{
|
||||
if (--gWishFutureKnock.weatherDuration == 0)
|
||||
{
|
||||
gBattleWeather &= ~B_WEATHER_RAIN_TEMPORARY;
|
||||
gBattleWeather &= ~B_WEATHER_RAIN_DOWNPOUR;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_STOPPED;
|
||||
}
|
||||
else if (gBattleWeather & B_WEATHER_RAIN_DOWNPOUR)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOWNPOUR_CONTINUES;
|
||||
else
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_CONTINUES;
|
||||
gBattleWeather &= ~(B_WEATHER_RAIN | B_WEATHER_RAIN_DOWNPOUR);
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_STOPPED;
|
||||
}
|
||||
else if (gBattleWeather & B_WEATHER_RAIN_DOWNPOUR)
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOWNPOUR_CONTINUES;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_CONTINUES;
|
||||
}
|
||||
|
||||
BattleScriptExecute(BattleScript_RainContinuesOrEnds);
|
||||
effect++;
|
||||
@ -1833,9 +1822,9 @@ u8 DoFieldEndTurnEffects(void)
|
||||
case ENDTURN_SANDSTORM:
|
||||
if (gBattleWeather & B_WEATHER_SANDSTORM)
|
||||
{
|
||||
if (!(gBattleWeather & B_WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0)
|
||||
if (gWishFutureKnock.weatherDuration > 0 && --gWishFutureKnock.weatherDuration == 0)
|
||||
{
|
||||
gBattleWeather &= ~B_WEATHER_SANDSTORM_TEMPORARY;
|
||||
gBattleWeather &= ~B_WEATHER_SANDSTORM;
|
||||
gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds;
|
||||
}
|
||||
else
|
||||
@ -1853,13 +1842,13 @@ u8 DoFieldEndTurnEffects(void)
|
||||
case ENDTURN_SUN:
|
||||
if (gBattleWeather & B_WEATHER_SUN)
|
||||
{
|
||||
if (!(gBattleWeather & B_WEATHER_SUN_PERMANENT)
|
||||
&& !(gBattleWeather & B_WEATHER_SUN_PRIMAL)
|
||||
if (!(gBattleWeather & B_WEATHER_SUN_PRIMAL)
|
||||
&& gWishFutureKnock.weatherDuration > 0
|
||||
&& --gWishFutureKnock.weatherDuration == 0)
|
||||
{
|
||||
gBattleWeather &= ~B_WEATHER_SUN_TEMPORARY;
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
gDisableStructs[i].weatherAbilityDone = FALSE;
|
||||
gBattleWeather &= ~B_WEATHER_SUN;
|
||||
gBattlescriptCurrInstr = BattleScript_SunlightFaded;
|
||||
}
|
||||
else
|
||||
@ -1875,9 +1864,9 @@ u8 DoFieldEndTurnEffects(void)
|
||||
case ENDTURN_HAIL:
|
||||
if (gBattleWeather & B_WEATHER_HAIL)
|
||||
{
|
||||
if (!(gBattleWeather & B_WEATHER_HAIL_PERMANENT) && --gWishFutureKnock.weatherDuration == 0)
|
||||
if (gWishFutureKnock.weatherDuration > 0 && --gWishFutureKnock.weatherDuration == 0)
|
||||
{
|
||||
gBattleWeather &= ~B_WEATHER_HAIL_TEMPORARY;
|
||||
gBattleWeather &= ~B_WEATHER_HAIL;
|
||||
gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds;
|
||||
}
|
||||
else
|
||||
@ -1895,9 +1884,9 @@ u8 DoFieldEndTurnEffects(void)
|
||||
case ENDTURN_SNOW:
|
||||
if (gBattleWeather & B_WEATHER_SNOW)
|
||||
{
|
||||
if (!(gBattleWeather & B_WEATHER_SNOW_PERMANENT) && --gWishFutureKnock.weatherDuration == 0)
|
||||
if (gWishFutureKnock.weatherDuration > 0 && --gWishFutureKnock.weatherDuration == 0)
|
||||
{
|
||||
gBattleWeather &= ~B_WEATHER_SNOW_TEMPORARY;
|
||||
gBattleWeather &= ~B_WEATHER_SNOW;
|
||||
gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds;
|
||||
}
|
||||
else
|
||||
@ -1915,9 +1904,9 @@ u8 DoFieldEndTurnEffects(void)
|
||||
case ENDTURN_FOG:
|
||||
if (gBattleWeather & B_WEATHER_FOG)
|
||||
{
|
||||
if (!(gBattleWeather & B_WEATHER_FOG_PERMANENT) && --gWishFutureKnock.weatherDuration == 0)
|
||||
if (gWishFutureKnock.weatherDuration > 0 && --gWishFutureKnock.weatherDuration == 0)
|
||||
{
|
||||
gBattleWeather &= ~B_WEATHER_FOG_TEMPORARY;
|
||||
gBattleWeather &= ~B_WEATHER_FOG;
|
||||
gBattlescriptCurrInstr = BattleScript_FogEnded;
|
||||
}
|
||||
else
|
||||
@ -3895,20 +3884,20 @@ bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2
|
||||
}
|
||||
}
|
||||
|
||||
static const u16 sWeatherFlagsInfo[][3] =
|
||||
static const u16 sWeatherFlagsInfo[][2] =
|
||||
{
|
||||
[ENUM_WEATHER_RAIN] = {B_WEATHER_RAIN_TEMPORARY, B_WEATHER_RAIN_PERMANENT, HOLD_EFFECT_DAMP_ROCK},
|
||||
[ENUM_WEATHER_RAIN_PRIMAL] = {B_WEATHER_RAIN_PRIMAL, B_WEATHER_RAIN_PRIMAL, HOLD_EFFECT_DAMP_ROCK},
|
||||
[ENUM_WEATHER_SUN] = {B_WEATHER_SUN_TEMPORARY, B_WEATHER_SUN_PERMANENT, HOLD_EFFECT_HEAT_ROCK},
|
||||
[ENUM_WEATHER_SUN_PRIMAL] = {B_WEATHER_SUN_PRIMAL, B_WEATHER_SUN_PRIMAL, HOLD_EFFECT_HEAT_ROCK},
|
||||
[ENUM_WEATHER_SANDSTORM] = {B_WEATHER_SANDSTORM_TEMPORARY, B_WEATHER_SANDSTORM_PERMANENT, HOLD_EFFECT_SMOOTH_ROCK},
|
||||
[ENUM_WEATHER_HAIL] = {B_WEATHER_HAIL_TEMPORARY, B_WEATHER_HAIL_PERMANENT, HOLD_EFFECT_ICY_ROCK},
|
||||
[ENUM_WEATHER_STRONG_WINDS] = {B_WEATHER_STRONG_WINDS, B_WEATHER_STRONG_WINDS, HOLD_EFFECT_NONE},
|
||||
[ENUM_WEATHER_SNOW] = {B_WEATHER_SNOW_TEMPORARY, B_WEATHER_SNOW_PERMANENT, HOLD_EFFECT_ICY_ROCK},
|
||||
[ENUM_WEATHER_FOG] = {B_WEATHER_FOG_TEMPORARY, B_WEATHER_FOG_PERMANENT, HOLD_EFFECT_NONE},
|
||||
[BATTLE_WEATHER_RAIN] = {B_WEATHER_RAIN, HOLD_EFFECT_DAMP_ROCK},
|
||||
[BATTLE_WEATHER_RAIN_PRIMAL] = {B_WEATHER_RAIN_PRIMAL, HOLD_EFFECT_DAMP_ROCK},
|
||||
[BATTLE_WEATHER_SUN] = {B_WEATHER_SUN, HOLD_EFFECT_HEAT_ROCK},
|
||||
[BATTLE_WEATHER_SUN_PRIMAL] = {B_WEATHER_SUN_PRIMAL, HOLD_EFFECT_HEAT_ROCK},
|
||||
[BATTLE_WEATHER_SANDSTORM] = {B_WEATHER_SANDSTORM, HOLD_EFFECT_SMOOTH_ROCK},
|
||||
[BATTLE_WEATHER_HAIL] = {B_WEATHER_HAIL, HOLD_EFFECT_ICY_ROCK},
|
||||
[BATTLE_WEATHER_STRONG_WINDS] = {B_WEATHER_STRONG_WINDS, HOLD_EFFECT_NONE},
|
||||
[BATTLE_WEATHER_SNOW] = {B_WEATHER_SNOW, HOLD_EFFECT_ICY_ROCK},
|
||||
[BATTLE_WEATHER_FOG] = {B_WEATHER_FOG, HOLD_EFFECT_NONE},
|
||||
};
|
||||
|
||||
bool32 TryChangeBattleWeather(u32 battler, u32 weatherEnumId, bool32 viaAbility)
|
||||
bool32 TryChangeBattleWeather(u32 battler, u32 battleWeatherId, bool32 viaAbility)
|
||||
{
|
||||
u16 battlerAbility = GetBattlerAbility(battler);
|
||||
if (gBattleWeather & B_WEATHER_PRIMAL_ANY
|
||||
@ -3918,15 +3907,15 @@ bool32 TryChangeBattleWeather(u32 battler, u32 weatherEnumId, bool32 viaAbility)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else if (B_ABILITY_WEATHER < GEN_6 && viaAbility && !(gBattleWeather & sWeatherFlagsInfo[weatherEnumId][1]))
|
||||
else if (B_ABILITY_WEATHER < GEN_6 && viaAbility && !(gBattleWeather & sWeatherFlagsInfo[battleWeatherId][0]))
|
||||
{
|
||||
gBattleWeather = (sWeatherFlagsInfo[weatherEnumId][0] | sWeatherFlagsInfo[weatherEnumId][1]);
|
||||
gBattleWeather = (sWeatherFlagsInfo[battleWeatherId][0] | sWeatherFlagsInfo[battleWeatherId][0]);
|
||||
return TRUE;
|
||||
}
|
||||
else if (!(gBattleWeather & (sWeatherFlagsInfo[weatherEnumId][0] | sWeatherFlagsInfo[weatherEnumId][1])))
|
||||
else if (!(gBattleWeather & (sWeatherFlagsInfo[battleWeatherId][0] | sWeatherFlagsInfo[battleWeatherId][0])))
|
||||
{
|
||||
gBattleWeather = (sWeatherFlagsInfo[weatherEnumId][0]);
|
||||
if (GetBattlerHoldEffect(battler, TRUE) == sWeatherFlagsInfo[weatherEnumId][2])
|
||||
gBattleWeather = (sWeatherFlagsInfo[battleWeatherId][0]);
|
||||
if (GetBattlerHoldEffect(battler, TRUE) == sWeatherFlagsInfo[battleWeatherId][1])
|
||||
gWishFutureKnock.weatherDuration = 8;
|
||||
else
|
||||
gWishFutureKnock.weatherDuration = 5;
|
||||
@ -4409,7 +4398,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
case WEATHER_DOWNPOUR:
|
||||
if (!(gBattleWeather & B_WEATHER_RAIN))
|
||||
{
|
||||
gBattleWeather = (B_WEATHER_RAIN_TEMPORARY | B_WEATHER_RAIN_PERMANENT);
|
||||
gBattleWeather = B_WEATHER_RAIN;
|
||||
gBattleScripting.animArg1 = B_ANIM_RAIN_CONTINUES;
|
||||
effect++;
|
||||
}
|
||||
@ -4425,7 +4414,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
case WEATHER_DROUGHT:
|
||||
if (!(gBattleWeather & B_WEATHER_SUN))
|
||||
{
|
||||
gBattleWeather = (B_WEATHER_SUN_PERMANENT | B_WEATHER_SUN_TEMPORARY);
|
||||
gBattleWeather = B_WEATHER_SUN;
|
||||
gBattleScripting.animArg1 = B_ANIM_SUN_CONTINUES;
|
||||
effect++;
|
||||
}
|
||||
@ -4741,7 +4730,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
}
|
||||
break;
|
||||
case ABILITY_DRIZZLE:
|
||||
if (TryChangeBattleWeather(battler, ENUM_WEATHER_RAIN, TRUE))
|
||||
if (TryChangeBattleWeather(battler, BATTLE_WEATHER_RAIN, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_DrizzleActivates);
|
||||
effect++;
|
||||
@ -4754,7 +4743,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
}
|
||||
break;
|
||||
case ABILITY_SAND_STREAM:
|
||||
if (TryChangeBattleWeather(battler, ENUM_WEATHER_SANDSTORM, TRUE))
|
||||
if (TryChangeBattleWeather(battler, BATTLE_WEATHER_SANDSTORM, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_SandstreamActivates);
|
||||
effect++;
|
||||
@ -4767,7 +4756,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
}
|
||||
break;
|
||||
case ABILITY_DROUGHT:
|
||||
if (TryChangeBattleWeather(battler, ENUM_WEATHER_SUN, TRUE))
|
||||
if (TryChangeBattleWeather(battler, BATTLE_WEATHER_SUN, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates);
|
||||
effect++;
|
||||
@ -4780,12 +4769,12 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
}
|
||||
break;
|
||||
case ABILITY_SNOW_WARNING:
|
||||
if (B_SNOW_WARNING >= GEN_9 && TryChangeBattleWeather(battler, ENUM_WEATHER_SNOW, TRUE))
|
||||
if (B_SNOW_WARNING >= GEN_9 && TryChangeBattleWeather(battler, BATTLE_WEATHER_SNOW, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesSnow);
|
||||
effect++;
|
||||
}
|
||||
else if (B_SNOW_WARNING < GEN_9 && TryChangeBattleWeather(battler, ENUM_WEATHER_HAIL, TRUE))
|
||||
else if (B_SNOW_WARNING < GEN_9 && TryChangeBattleWeather(battler, BATTLE_WEATHER_HAIL, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesHail);
|
||||
effect++;
|
||||
@ -4919,21 +4908,21 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
}
|
||||
break;
|
||||
case ABILITY_DESOLATE_LAND:
|
||||
if (TryChangeBattleWeather(battler, ENUM_WEATHER_SUN_PRIMAL, TRUE))
|
||||
if (TryChangeBattleWeather(battler, BATTLE_WEATHER_SUN_PRIMAL, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_DesolateLandActivates);
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
case ABILITY_PRIMORDIAL_SEA:
|
||||
if (TryChangeBattleWeather(battler, ENUM_WEATHER_RAIN_PRIMAL, TRUE))
|
||||
if (TryChangeBattleWeather(battler, BATTLE_WEATHER_RAIN_PRIMAL, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_PrimordialSeaActivates);
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
case ABILITY_DELTA_STREAM:
|
||||
if (TryChangeBattleWeather(battler, ENUM_WEATHER_STRONG_WINDS, TRUE))
|
||||
if (TryChangeBattleWeather(battler, BATTLE_WEATHER_STRONG_WINDS, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_DeltaStreamActivates);
|
||||
effect++;
|
||||
@ -4976,7 +4965,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
}
|
||||
break;
|
||||
case ABILITY_ORICHALCUM_PULSE:
|
||||
if (TryChangeBattleWeather(battler, ENUM_WEATHER_SUN, TRUE))
|
||||
if (TryChangeBattleWeather(battler, BATTLE_WEATHER_SUN, TRUE))
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates);
|
||||
effect++;
|
||||
@ -5923,7 +5912,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
gBattlescriptCurrInstr = BattleScript_BlockedByPrimalWeatherRet;
|
||||
effect++;
|
||||
}
|
||||
else if (TryChangeBattleWeather(battler, ENUM_WEATHER_SANDSTORM, TRUE))
|
||||
else if (TryChangeBattleWeather(battler, BATTLE_WEATHER_SANDSTORM, TRUE))
|
||||
{
|
||||
gBattleScripting.battler = battler;
|
||||
BattleScriptPushCursor();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user