mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
add snow weather
This commit is contained in:
parent
8cce130643
commit
76721b16f8
@ -1346,6 +1346,10 @@
|
|||||||
callnative BS_ItemRestorePP
|
callnative BS_ItemRestorePP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro setsnow
|
||||||
|
callnative BS_SetSnow
|
||||||
|
.endm
|
||||||
|
|
||||||
@ various command changed to more readable macros
|
@ various command changed to more readable macros
|
||||||
.macro cancelmultiturnmoves battler:req
|
.macro cancelmultiturnmoves battler:req
|
||||||
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
||||||
|
@ -947,6 +947,7 @@ gBattleAnims_General::
|
|||||||
.4byte General_ShellTrapSetUp @ B_ANIM_SHELL_TRAP_SETUP
|
.4byte General_ShellTrapSetUp @ B_ANIM_SHELL_TRAP_SETUP
|
||||||
.4byte General_ZMoveActivate @ B_ANIM_ZMOVE_ACTIVATE
|
.4byte General_ZMoveActivate @ B_ANIM_ZMOVE_ACTIVATE
|
||||||
.4byte General_AffectionHangedOn @ B_ANIM_AFFECTION_HANGED_ON
|
.4byte General_AffectionHangedOn @ B_ANIM_AFFECTION_HANGED_ON
|
||||||
|
.4byte General_Snow @ B_ANIM_SNOW_CONTINUES
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
gBattleAnims_Special::
|
gBattleAnims_Special::
|
||||||
@ -14448,7 +14449,19 @@ Move_ELECTRO_DRIFT::
|
|||||||
Move_SHED_TAIL::
|
Move_SHED_TAIL::
|
||||||
Move_CHILLY_RECEPTION::
|
Move_CHILLY_RECEPTION::
|
||||||
Move_TIDY_UP::
|
Move_TIDY_UP::
|
||||||
Move_SNOWSCAPE::
|
|
||||||
|
@ Also used by Snow weather. Currently identical with Move_HAIL
|
||||||
|
Move_SNOWSCAPE:
|
||||||
|
loadspritegfx ANIM_TAG_HAIL
|
||||||
|
loadspritegfx ANIM_TAG_ICE_CRYSTALS
|
||||||
|
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK
|
||||||
|
waitforvisualfinish
|
||||||
|
createvisualtask AnimTask_Hail, 5
|
||||||
|
loopsewithpan SE_M_HAIL, 0, 8, 10
|
||||||
|
waitforvisualfinish
|
||||||
|
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK
|
||||||
|
end
|
||||||
|
|
||||||
Move_POUNCE::
|
Move_POUNCE::
|
||||||
Move_TRAILBLAZE::
|
Move_TRAILBLAZE::
|
||||||
Move_CHILLING_WATER::
|
Move_CHILLING_WATER::
|
||||||
@ -23924,6 +23937,7 @@ Move_WEATHER_BALL:
|
|||||||
jumpreteq ANIM_WEATHER_RAIN, WeatherBallWater
|
jumpreteq ANIM_WEATHER_RAIN, WeatherBallWater
|
||||||
jumpreteq ANIM_WEATHER_SANDSTORM, WeatherBallSandstorm
|
jumpreteq ANIM_WEATHER_SANDSTORM, WeatherBallSandstorm
|
||||||
jumpreteq ANIM_WEATHER_HAIL, WeatherBallIce
|
jumpreteq ANIM_WEATHER_HAIL, WeatherBallIce
|
||||||
|
jumpreteq ANIM_WEATHER_SNOW, WeatherBallIce
|
||||||
WeatherBallNormal:
|
WeatherBallNormal:
|
||||||
loadspritegfx ANIM_TAG_IMPACT
|
loadspritegfx ANIM_TAG_IMPACT
|
||||||
createsprite gWeatherBallNormalDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0
|
createsprite gWeatherBallNormalDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0
|
||||||
@ -24679,6 +24693,9 @@ General_Sandstorm:
|
|||||||
General_Hail:
|
General_Hail:
|
||||||
goto Move_HAIL
|
goto Move_HAIL
|
||||||
|
|
||||||
|
General_Snow:
|
||||||
|
goto Move_SNOWSCAPE
|
||||||
|
|
||||||
General_LeechSeedDrain:
|
General_LeechSeedDrain:
|
||||||
createvisualtask AnimTask_GetBattlersFromArg, 5
|
createvisualtask AnimTask_GetBattlersFromArg, 5
|
||||||
delay 0
|
delay 0
|
||||||
|
@ -429,6 +429,7 @@ gBattleScriptsForMoveEffects::
|
|||||||
.4byte BattleScript_EffectBarbBarrage @ EFFECT_BARB_BARRAGE
|
.4byte BattleScript_EffectBarbBarrage @ EFFECT_BARB_BARRAGE
|
||||||
.4byte BattleScript_EffectRevivalBlessing @ EFFECT_REVIVAL_BLESSING
|
.4byte BattleScript_EffectRevivalBlessing @ EFFECT_REVIVAL_BLESSING
|
||||||
.4byte BattleScript_EffectFrostbiteHit @ EFFECT_FROSTBITE_HIT
|
.4byte BattleScript_EffectFrostbiteHit @ EFFECT_FROSTBITE_HIT
|
||||||
|
.4byte BattleScript_EffectSnow @ EFFECT_SNOW
|
||||||
|
|
||||||
BattleScript_EffectRevivalBlessing::
|
BattleScript_EffectRevivalBlessing::
|
||||||
attackcanceler
|
attackcanceler
|
||||||
@ -6873,6 +6874,14 @@ BattleScript_DamagingWeatherContinuesEnd::
|
|||||||
bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE
|
bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE
|
||||||
end2
|
end2
|
||||||
|
|
||||||
|
BattleScript_SnowContinuesOrEnds::
|
||||||
|
printfromtable gSnowContinuesStringIds
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_SNOW_STOPPED, BattleScript_SnowContinuesOrEndsEnd
|
||||||
|
playanimation BS_ATTACKER, B_ANIM_SNOW_CONTINUES
|
||||||
|
BattleScript_SnowContinuesOrEndsEnd::
|
||||||
|
end2
|
||||||
|
|
||||||
BattleScript_SandStormHailEnds::
|
BattleScript_SandStormHailEnds::
|
||||||
printfromtable gSandStormHailEndStringIds
|
printfromtable gSandStormHailEndStringIds
|
||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
@ -8856,7 +8865,7 @@ BattleScript_MimicryActivates_End3::
|
|||||||
waitmessage B_WAIT_TIME_SHORT
|
waitmessage B_WAIT_TIME_SHORT
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_SnowWarningActivates::
|
BattleScript_SnowWarningActivatesHail::
|
||||||
pause B_WAIT_TIME_SHORT
|
pause B_WAIT_TIME_SHORT
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
printstring STRINGID_SNOWWARNINGHAIL
|
printstring STRINGID_SNOWWARNINGHAIL
|
||||||
@ -8865,6 +8874,15 @@ BattleScript_SnowWarningActivates::
|
|||||||
call BattleScript_ActivateWeatherAbilities
|
call BattleScript_ActivateWeatherAbilities
|
||||||
end3
|
end3
|
||||||
|
|
||||||
|
BattleScript_SnowWarningActivatesSnow::
|
||||||
|
pause B_WAIT_TIME_SHORT
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
printstring STRINGID_SNOWWARNINGSNOW
|
||||||
|
waitstate
|
||||||
|
playanimation BS_BATTLER_0, B_ANIM_SNOW_CONTINUES
|
||||||
|
call BattleScript_WeatherFormChanges
|
||||||
|
end3
|
||||||
|
|
||||||
BattleScript_ActivateTerrainEffects:
|
BattleScript_ActivateTerrainEffects:
|
||||||
savetarget
|
savetarget
|
||||||
setbyte gBattlerTarget, 0
|
setbyte gBattlerTarget, 0
|
||||||
@ -10450,3 +10468,13 @@ BattleScript_BerserkGeneRet_OwnTempoPrevents:
|
|||||||
BattleScript_BerserkGeneRet_End:
|
BattleScript_BerserkGeneRet_End:
|
||||||
removeitem BS_SCRIPTING
|
removeitem BS_SCRIPTING
|
||||||
end3
|
end3
|
||||||
|
|
||||||
|
BattleScript_EffectSnow::
|
||||||
|
attackcanceler
|
||||||
|
attackstring
|
||||||
|
ppreduce
|
||||||
|
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened
|
||||||
|
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain
|
||||||
|
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn
|
||||||
|
setsnow
|
||||||
|
goto BattleScript_MoveWeatherChange
|
||||||
|
@ -112,6 +112,7 @@ bool32 IsEncoreEncouragedEffect(u16 moveEffect);
|
|||||||
void ProtectChecks(u8 battlerAtk, u8 battlerDef, u16 move, u16 predictedMove, s16 *score);
|
void ProtectChecks(u8 battlerAtk, u8 battlerDef, u16 move, u16 predictedMove, s16 *score);
|
||||||
bool32 ShouldSetSandstorm(u8 battler, u16 ability, u16 holdEffect);
|
bool32 ShouldSetSandstorm(u8 battler, u16 ability, u16 holdEffect);
|
||||||
bool32 ShouldSetHail(u8 battler, u16 ability, u16 holdEffect);
|
bool32 ShouldSetHail(u8 battler, u16 ability, u16 holdEffect);
|
||||||
|
bool32 ShouldSetSnow(u8 battler, u16 ability, u16 holdEffect);
|
||||||
bool32 ShouldSetRain(u8 battlerAtk, u16 ability, u16 holdEffect);
|
bool32 ShouldSetRain(u8 battlerAtk, u16 ability, u16 holdEffect);
|
||||||
bool32 ShouldSetSun(u8 battlerAtk, u16 atkAbility, u16 holdEffect);
|
bool32 ShouldSetSun(u8 battlerAtk, u16 atkAbility, u16 holdEffect);
|
||||||
bool32 HasSleepMoveWithLowAccuracy(u8 battlerAtk, u8 battlerDef);
|
bool32 HasSleepMoveWithLowAccuracy(u8 battlerAtk, u8 battlerDef);
|
||||||
|
@ -43,6 +43,7 @@ extern const u8 BattleScript_ActionSwitch[];
|
|||||||
extern const u8 BattleScript_Pausex20[];
|
extern const u8 BattleScript_Pausex20[];
|
||||||
extern const u8 BattleScript_LevelUp[];
|
extern const u8 BattleScript_LevelUp[];
|
||||||
extern const u8 BattleScript_RainContinuesOrEnds[];
|
extern const u8 BattleScript_RainContinuesOrEnds[];
|
||||||
|
extern const u8 BattleScript_SnowContinuesOrEnds[];
|
||||||
extern const u8 BattleScript_DamagingWeatherContinues[];
|
extern const u8 BattleScript_DamagingWeatherContinues[];
|
||||||
extern const u8 BattleScript_SandStormHailEnds[];
|
extern const u8 BattleScript_SandStormHailEnds[];
|
||||||
extern const u8 BattleScript_SunlightContinues[];
|
extern const u8 BattleScript_SunlightContinues[];
|
||||||
@ -272,7 +273,8 @@ extern const u8 BattleScript_CursedBodyActivates[];
|
|||||||
extern const u8 BattleScript_MummyActivates[];
|
extern const u8 BattleScript_MummyActivates[];
|
||||||
extern const u8 BattleScript_WeakArmorActivates[];
|
extern const u8 BattleScript_WeakArmorActivates[];
|
||||||
extern const u8 BattleScript_FellStingerRaisesStat[];
|
extern const u8 BattleScript_FellStingerRaisesStat[];
|
||||||
extern const u8 BattleScript_SnowWarningActivates[];
|
extern const u8 BattleScript_SnowWarningActivatesHail[];
|
||||||
|
extern const u8 BattleScript_SnowWarningActivatesSnow[];
|
||||||
extern const u8 BattleScript_HarvestActivates[];
|
extern const u8 BattleScript_HarvestActivates[];
|
||||||
extern const u8 BattleScript_ImposterActivates[];
|
extern const u8 BattleScript_ImposterActivates[];
|
||||||
extern const u8 BattleScript_SelectingNotAllowedMoveAssaultVest[];
|
extern const u8 BattleScript_SelectingNotAllowedMoveAssaultVest[];
|
||||||
|
@ -120,6 +120,7 @@
|
|||||||
#define B_SYMBIOSIS_GEMS GEN_LATEST // In Gen7+, Symbiosis passes an item after a gem-boosted attack. Previously, items are passed before the gem-boosted attack hits, making the item effect apply.
|
#define B_SYMBIOSIS_GEMS GEN_LATEST // In Gen7+, Symbiosis passes an item after a gem-boosted attack. Previously, items are passed before the gem-boosted attack hits, making the item effect apply.
|
||||||
#define B_CHECK_IF_CHARGED_UP TRUE // If set to TRUE, certain abilities such as Electromorphosis WILL check if the STATUS3_CHARGED_UP status flag is applied.
|
#define B_CHECK_IF_CHARGED_UP TRUE // If set to TRUE, certain abilities such as Electromorphosis WILL check if the STATUS3_CHARGED_UP status flag is applied.
|
||||||
#define B_ABSORBING_ABILITY_STRING GEN_LATEST // In Gen5+, the abilities that absorb moves of a certain type use a generic string for stat increases and decreases.
|
#define B_ABSORBING_ABILITY_STRING GEN_LATEST // In Gen5+, the abilities that absorb moves of a certain type use a generic string for stat increases and decreases.
|
||||||
|
#define B_SNOW_WARNING GEN_9 // In Gen9+, Snowwarning will summon snow instead of hail.
|
||||||
|
|
||||||
// Item settings
|
// Item settings
|
||||||
#define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn.
|
#define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn.
|
||||||
|
@ -288,8 +288,11 @@
|
|||||||
#define B_WEATHER_HAIL_PERMANENT (1 << 10)
|
#define B_WEATHER_HAIL_PERMANENT (1 << 10)
|
||||||
#define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY | B_WEATHER_HAIL_PERMANENT)
|
#define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY | B_WEATHER_HAIL_PERMANENT)
|
||||||
#define B_WEATHER_STRONG_WINDS (1 << 11)
|
#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)
|
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS | B_WEATHER_SNOW)
|
||||||
#define B_WEATHER_PRIMAL_ANY (B_WEATHER_RAIN_PRIMAL | B_WEATHER_SUN_PRIMAL | B_WEATHER_STRONG_WINDS)
|
#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)
|
||||||
|
|
||||||
// Battle Weather as enum
|
// Battle Weather as enum
|
||||||
#define ENUM_WEATHER_NONE 0
|
#define ENUM_WEATHER_NONE 0
|
||||||
@ -300,6 +303,7 @@
|
|||||||
#define ENUM_WEATHER_SUN_PRIMAL 5
|
#define ENUM_WEATHER_SUN_PRIMAL 5
|
||||||
#define ENUM_WEATHER_RAIN_PRIMAL 6
|
#define ENUM_WEATHER_RAIN_PRIMAL 6
|
||||||
#define ENUM_WEATHER_STRONG_WINDS 7
|
#define ENUM_WEATHER_STRONG_WINDS 7
|
||||||
|
#define ENUM_WEATHER_SNOW 8
|
||||||
|
|
||||||
// Move Effects
|
// Move Effects
|
||||||
#define MOVE_EFFECT_SLEEP 1
|
#define MOVE_EFFECT_SLEEP 1
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define AI_WEATHER_RAIN 2
|
#define AI_WEATHER_RAIN 2
|
||||||
#define AI_WEATHER_SANDSTORM 3
|
#define AI_WEATHER_SANDSTORM 3
|
||||||
#define AI_WEATHER_HAIL 4
|
#define AI_WEATHER_HAIL 4
|
||||||
|
#define AI_WEATHER_SNOW 5
|
||||||
|
|
||||||
// get_how_powerful_move_is
|
// get_how_powerful_move_is
|
||||||
#define MOVE_POWER_OTHER 0
|
#define MOVE_POWER_OTHER 0
|
||||||
|
@ -544,6 +544,7 @@
|
|||||||
#define B_ANIM_SHELL_TRAP_SETUP 34
|
#define B_ANIM_SHELL_TRAP_SETUP 34
|
||||||
#define B_ANIM_ZMOVE_ACTIVATE 35 // Using Z Moves
|
#define B_ANIM_ZMOVE_ACTIVATE 35 // Using Z Moves
|
||||||
#define B_ANIM_AFFECTION_HANGED_ON 36
|
#define B_ANIM_AFFECTION_HANGED_ON 36
|
||||||
|
#define B_ANIM_SNOW_CONTINUES 37
|
||||||
|
|
||||||
// special animations table (gBattleAnims_Special)
|
// special animations table (gBattleAnims_Special)
|
||||||
#define B_ANIM_LVL_UP 0
|
#define B_ANIM_LVL_UP 0
|
||||||
@ -591,6 +592,7 @@
|
|||||||
#define ANIM_WEATHER_RAIN 2
|
#define ANIM_WEATHER_RAIN 2
|
||||||
#define ANIM_WEATHER_SANDSTORM 3
|
#define ANIM_WEATHER_SANDSTORM 3
|
||||||
#define ANIM_WEATHER_HAIL 4
|
#define ANIM_WEATHER_HAIL 4
|
||||||
|
#define ANIM_WEATHER_SNOW 5
|
||||||
|
|
||||||
// mon pal blend
|
// mon pal blend
|
||||||
#define ANIM_PAL_BG 0x1
|
#define ANIM_PAL_BG 0x1
|
||||||
|
@ -406,7 +406,8 @@
|
|||||||
#define EFFECT_BARB_BARRAGE 400
|
#define EFFECT_BARB_BARRAGE 400
|
||||||
#define EFFECT_REVIVAL_BLESSING 401
|
#define EFFECT_REVIVAL_BLESSING 401
|
||||||
#define EFFECT_FROSTBITE_HIT 402
|
#define EFFECT_FROSTBITE_HIT 402
|
||||||
|
#define EFFECT_SNOW 403
|
||||||
|
|
||||||
#define NUM_BATTLE_MOVE_EFFECTS 403
|
#define NUM_BATTLE_MOVE_EFFECTS 404
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
||||||
|
@ -659,8 +659,12 @@
|
|||||||
#define STRINGID_PKMNFROSTBITEHEALED 657
|
#define STRINGID_PKMNFROSTBITEHEALED 657
|
||||||
#define STRINGID_PKMNFROSTBITEHEALED2 658
|
#define STRINGID_PKMNFROSTBITEHEALED2 658
|
||||||
#define STRINGID_PKMNFROSTBITEHEALEDBY 659
|
#define STRINGID_PKMNFROSTBITEHEALEDBY 659
|
||||||
|
#define STRINGID_STARTEDSNOW 660
|
||||||
|
#define STRINGID_SNOWCONTINUES 661
|
||||||
|
#define STRINGID_SNOWSTOPPED 662
|
||||||
|
#define STRINGID_SNOWWARNINGSNOW 663
|
||||||
|
|
||||||
#define BATTLESTRINGS_COUNT 660
|
#define BATTLESTRINGS_COUNT 664
|
||||||
|
|
||||||
// This is the string id that gBattleStringsTable starts with.
|
// This is the string id that gBattleStringsTable starts with.
|
||||||
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,
|
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,
|
||||||
@ -726,12 +730,17 @@
|
|||||||
#define B_MSG_STARTED_SANDSTORM 3
|
#define B_MSG_STARTED_SANDSTORM 3
|
||||||
#define B_MSG_STARTED_SUNLIGHT 4
|
#define B_MSG_STARTED_SUNLIGHT 4
|
||||||
#define B_MSG_STARTED_HAIL 5
|
#define B_MSG_STARTED_HAIL 5
|
||||||
|
#define B_MSG_STARTED_SNOW 6
|
||||||
|
|
||||||
// gRainContinuesStringIds
|
// gRainContinuesStringIds
|
||||||
#define B_MSG_RAIN_CONTINUES 0
|
#define B_MSG_RAIN_CONTINUES 0
|
||||||
#define B_MSG_DOWNPOUR_CONTINUES 1
|
#define B_MSG_DOWNPOUR_CONTINUES 1
|
||||||
#define B_MSG_RAIN_STOPPED 2
|
#define B_MSG_RAIN_STOPPED 2
|
||||||
|
|
||||||
|
// gSnowContinuesStringIds
|
||||||
|
#define B_MSG_SNOW_CONTINUES 0
|
||||||
|
#define B_MSG_SNOW_STOPPED 1
|
||||||
|
|
||||||
// gSandStormHailContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailEndStringIds
|
// gSandStormHailContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailEndStringIds
|
||||||
#define B_MSG_SANDSTORM 0
|
#define B_MSG_SANDSTORM 0
|
||||||
#define B_MSG_HAIL 1
|
#define B_MSG_HAIL 1
|
||||||
|
@ -1372,7 +1372,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
|||||||
case EFFECT_AURORA_VEIL:
|
case EFFECT_AURORA_VEIL:
|
||||||
if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_AURORA_VEIL
|
if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_AURORA_VEIL
|
||||||
|| PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)
|
|| PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)
|
||||||
|| !(gBattleWeather & B_WEATHER_HAIL))
|
|| !(gBattleWeather & B_WEATHER_HAIL && gBattleWeather & B_WEATHER_SNOW))
|
||||||
score -= 10;
|
score -= 10;
|
||||||
break;
|
break;
|
||||||
case EFFECT_OHKO:
|
case EFFECT_OHKO:
|
||||||
@ -1578,7 +1578,12 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
|||||||
score -= 8;
|
score -= 8;
|
||||||
break;
|
break;
|
||||||
case EFFECT_HAIL:
|
case EFFECT_HAIL:
|
||||||
if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_PRIMAL_ANY)
|
if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_PRIMAL_ANY) // should hail be discouraged if snow is up?
|
||||||
|
|| PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), AI_DATA->partnerMove))
|
||||||
|
score -= 8;
|
||||||
|
break;
|
||||||
|
case EFFECT_SNOW:
|
||||||
|
if (gBattleWeather & (B_WEATHER_SNOW | B_WEATHER_PRIMAL_ANY) // should snow be discouraged if hail is up?
|
||||||
|| PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), AI_DATA->partnerMove))
|
|| PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), AI_DATA->partnerMove))
|
||||||
score -= 8;
|
score -= 8;
|
||||||
break;
|
break;
|
||||||
@ -2803,6 +2808,13 @@ static s16 AI_DoubleBattle(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
|||||||
RETURN_SCORE_PLUS(2); // our partner benefits from hail
|
RETURN_SCORE_PLUS(2); // our partner benefits from hail
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EFFECT_SNOW:
|
||||||
|
if (IsBattlerAlive(battlerAtkPartner)
|
||||||
|
&& ShouldSetSnow(battlerAtkPartner, atkPartnerAbility, atkPartnerHoldEffect))
|
||||||
|
{
|
||||||
|
RETURN_SCORE_PLUS(2); // our partner benefits from snow
|
||||||
|
}
|
||||||
|
break;
|
||||||
} // global move effect check
|
} // global move effect check
|
||||||
|
|
||||||
|
|
||||||
@ -3965,6 +3977,22 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
|||||||
score += 2;
|
score += 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EFFECT_SNOW: // any other reasons?
|
||||||
|
if (ShouldSetSnow(battlerAtk, AI_DATA->abilities[battlerAtk], AI_DATA->holdEffects[battlerAtk]))
|
||||||
|
{
|
||||||
|
if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL))
|
||||||
|
&& ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL))
|
||||||
|
score += 3;
|
||||||
|
|
||||||
|
score++;
|
||||||
|
if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK)
|
||||||
|
score++;
|
||||||
|
if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||||
|
|| HasMoveEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||||
|
|| HasMoveEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||||
|
score += 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case EFFECT_RAIN_DANCE:
|
case EFFECT_RAIN_DANCE:
|
||||||
if (ShouldSetRain(battlerAtk, AI_DATA->abilities[battlerAtk], AI_DATA->holdEffects[battlerAtk]))
|
if (ShouldSetRain(battlerAtk, AI_DATA->abilities[battlerAtk], AI_DATA->holdEffects[battlerAtk]))
|
||||||
{
|
{
|
||||||
@ -4948,6 +4976,7 @@ static s16 AI_SetupFirstTurn(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
|||||||
case EFFECT_SUNNY_DAY:
|
case EFFECT_SUNNY_DAY:
|
||||||
case EFFECT_SANDSTORM:
|
case EFFECT_SANDSTORM:
|
||||||
case EFFECT_HAIL:
|
case EFFECT_HAIL:
|
||||||
|
case EFFECT_SNOW:
|
||||||
case EFFECT_GEOMANCY:
|
case EFFECT_GEOMANCY:
|
||||||
case EFFECT_VICTORY_DANCE:
|
case EFFECT_VICTORY_DANCE:
|
||||||
case EFFECT_HIT_SET_ENTRY_HAZARD:
|
case EFFECT_HIT_SET_ENTRY_HAZARD:
|
||||||
@ -5174,6 +5203,7 @@ static s16 AI_HPAware(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
|||||||
case EFFECT_SUNNY_DAY:
|
case EFFECT_SUNNY_DAY:
|
||||||
case EFFECT_SANDSTORM:
|
case EFFECT_SANDSTORM:
|
||||||
case EFFECT_HAIL:
|
case EFFECT_HAIL:
|
||||||
|
case EFFECT_SNOW:
|
||||||
case EFFECT_RAIN_DANCE:
|
case EFFECT_RAIN_DANCE:
|
||||||
score -= 2;
|
score -= 2;
|
||||||
break;
|
break;
|
||||||
|
@ -331,6 +331,7 @@ static const u16 sEncouragedEncoreEffects[] =
|
|||||||
EFFECT_SPIT_UP,
|
EFFECT_SPIT_UP,
|
||||||
EFFECT_SWALLOW,
|
EFFECT_SWALLOW,
|
||||||
EFFECT_HAIL,
|
EFFECT_HAIL,
|
||||||
|
EFFECT_SNOW,
|
||||||
EFFECT_TORMENT,
|
EFFECT_TORMENT,
|
||||||
EFFECT_WILL_O_WISP,
|
EFFECT_WILL_O_WISP,
|
||||||
EFFECT_FOLLOW_ME,
|
EFFECT_FOLLOW_ME,
|
||||||
@ -1504,7 +1505,7 @@ bool32 IsMoveEncouragedToHit(u8 battlerAtk, u8 battlerDef, u16 move)
|
|||||||
// increased accuracy but don't always hit
|
// increased accuracy but don't always hit
|
||||||
if ((AI_WeatherHasEffect() &&
|
if ((AI_WeatherHasEffect() &&
|
||||||
(((gBattleWeather & B_WEATHER_RAIN) && (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE))
|
(((gBattleWeather & B_WEATHER_RAIN) && (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE))
|
||||||
|| (((gBattleWeather & B_WEATHER_HAIL) && move == MOVE_BLIZZARD))))
|
|| (((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && move == MOVE_BLIZZARD))))
|
||||||
|| (gBattleMoves[move].effect == EFFECT_VITAL_THROW)
|
|| (gBattleMoves[move].effect == EFFECT_VITAL_THROW)
|
||||||
#if B_MINIMIZE_DMG_ACC >= GEN_6
|
#if B_MINIMIZE_DMG_ACC >= GEN_6
|
||||||
|| ((gStatuses3[battlerDef] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE))
|
|| ((gStatuses3[battlerDef] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE))
|
||||||
@ -1579,7 +1580,7 @@ bool32 ShouldSetHail(u8 battler, u16 ability, u16 holdEffect)
|
|||||||
{
|
{
|
||||||
if (!AI_WeatherHasEffect())
|
if (!AI_WeatherHasEffect())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else if (gBattleWeather & B_WEATHER_HAIL)
|
else if (gBattleWeather & B_WEATHER_HAIL) // dont set hail if snow is up?
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (ability == ABILITY_SNOW_CLOAK
|
if (ability == ABILITY_SNOW_CLOAK
|
||||||
@ -1649,6 +1650,26 @@ bool32 ShouldSetSun(u8 battlerAtk, u16 atkAbility, u16 holdEffect)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool32 ShouldSetSnow(u8 battler, u16 ability, u16 holdEffect) // any other reasons snow should be set?
|
||||||
|
{
|
||||||
|
if (!AI_WeatherHasEffect())
|
||||||
|
return FALSE;
|
||||||
|
else if (gBattleWeather & B_WEATHER_SNOW) // dont set snow if hail is up?
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (ability == ABILITY_SNOW_CLOAK
|
||||||
|
|| ability == ABILITY_ICE_BODY
|
||||||
|
|| ability == ABILITY_FORECAST
|
||||||
|
|| ability == ABILITY_SLUSH_RUSH
|
||||||
|
|| IS_BATTLER_OF_TYPE(battler, TYPE_ICE)
|
||||||
|
|| HasMove(battler, MOVE_BLIZZARD)
|
||||||
|
|| HasMoveEffect(battler, EFFECT_AURORA_VEIL)
|
||||||
|
|| HasMoveEffect(battler, EFFECT_WEATHER_BALL))
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void ProtectChecks(u8 battlerAtk, u8 battlerDef, u16 move, u16 predictedMove, s16 *score)
|
void ProtectChecks(u8 battlerAtk, u8 battlerDef, u16 move, u16 predictedMove, s16 *score)
|
||||||
{
|
{
|
||||||
@ -3137,7 +3158,7 @@ bool32 ShouldSetScreen(u8 battlerAtk, u8 battlerDef, u16 moveEffect)
|
|||||||
{
|
{
|
||||||
case EFFECT_AURORA_VEIL:
|
case EFFECT_AURORA_VEIL:
|
||||||
// Use only in Hail and only if AI doesn't already have Reflect, Light Screen or Aurora Veil itself active.
|
// Use only in Hail and only if AI doesn't already have Reflect, Light Screen or Aurora Veil itself active.
|
||||||
if (gBattleWeather & B_WEATHER_HAIL
|
if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW))
|
||||||
&& !(gSideStatuses[atkSide] & (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL)))
|
&& !(gSideStatuses[atkSide] & (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL)))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
break;
|
break;
|
||||||
@ -3242,7 +3263,8 @@ bool32 PartnerMoveEffectIsWeather(u8 battlerAtkPartner, u16 partnerMove)
|
|||||||
&& (gBattleMoves[partnerMove].effect == EFFECT_SUNNY_DAY
|
&& (gBattleMoves[partnerMove].effect == EFFECT_SUNNY_DAY
|
||||||
|| gBattleMoves[partnerMove].effect == EFFECT_RAIN_DANCE
|
|| gBattleMoves[partnerMove].effect == EFFECT_RAIN_DANCE
|
||||||
|| gBattleMoves[partnerMove].effect == EFFECT_SANDSTORM
|
|| gBattleMoves[partnerMove].effect == EFFECT_SANDSTORM
|
||||||
|| gBattleMoves[partnerMove].effect == EFFECT_HAIL))
|
|| gBattleMoves[partnerMove].effect == EFFECT_HAIL
|
||||||
|
|| gBattleMoves[partnerMove].effect == EFFECT_SNOW))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -5603,6 +5603,8 @@ void AnimTask_GetWeather(u8 taskId)
|
|||||||
gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SANDSTORM;
|
gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SANDSTORM;
|
||||||
else if (gWeatherMoveAnim & B_WEATHER_HAIL)
|
else if (gWeatherMoveAnim & B_WEATHER_HAIL)
|
||||||
gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_HAIL;
|
gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_HAIL;
|
||||||
|
else if (gWeatherMoveAnim & B_WEATHER_SNOW)
|
||||||
|
gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SNOW;
|
||||||
|
|
||||||
DestroyAnimVisualTask(taskId);
|
DestroyAnimVisualTask(taskId);
|
||||||
}
|
}
|
||||||
|
@ -492,6 +492,7 @@ static bool8 ShouldAnimBeDoneRegardlessOfSubstitute(u8 animId)
|
|||||||
case B_ANIM_SUN_CONTINUES:
|
case B_ANIM_SUN_CONTINUES:
|
||||||
case B_ANIM_SANDSTORM_CONTINUES:
|
case B_ANIM_SANDSTORM_CONTINUES:
|
||||||
case B_ANIM_HAIL_CONTINUES:
|
case B_ANIM_HAIL_CONTINUES:
|
||||||
|
case B_ANIM_SNOW_CONTINUES:
|
||||||
case B_ANIM_SNATCH_MOVE:
|
case B_ANIM_SNATCH_MOVE:
|
||||||
return TRUE;
|
return TRUE;
|
||||||
default:
|
default:
|
||||||
|
@ -4642,7 +4642,7 @@ u32 GetBattlerTotalSpeedStat(u8 battlerId)
|
|||||||
speed *= 2;
|
speed *= 2;
|
||||||
else if (ability == ABILITY_SAND_RUSH && gBattleWeather & B_WEATHER_SANDSTORM)
|
else if (ability == ABILITY_SAND_RUSH && gBattleWeather & B_WEATHER_SANDSTORM)
|
||||||
speed *= 2;
|
speed *= 2;
|
||||||
else if (ability == ABILITY_SLUSH_RUSH && gBattleWeather & B_WEATHER_HAIL)
|
else if (ability == ABILITY_SLUSH_RUSH && (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)))
|
||||||
speed *= 2;
|
speed *= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5590,7 +5590,7 @@ void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk)
|
|||||||
gBattleStruct->dynamicMoveType = TYPE_ROCK | F_DYNAMIC_TYPE_2;
|
gBattleStruct->dynamicMoveType = TYPE_ROCK | F_DYNAMIC_TYPE_2;
|
||||||
else if (gBattleWeather & B_WEATHER_SUN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA)
|
else if (gBattleWeather & B_WEATHER_SUN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA)
|
||||||
gBattleStruct->dynamicMoveType = TYPE_FIRE | F_DYNAMIC_TYPE_2;
|
gBattleStruct->dynamicMoveType = TYPE_FIRE | F_DYNAMIC_TYPE_2;
|
||||||
else if (gBattleWeather & B_WEATHER_HAIL)
|
else if (gBattleWeather & (B_WEATHER_HAIL |B_WEATHER_SNOW))
|
||||||
gBattleStruct->dynamicMoveType = TYPE_ICE | F_DYNAMIC_TYPE_2;
|
gBattleStruct->dynamicMoveType = TYPE_ICE | F_DYNAMIC_TYPE_2;
|
||||||
else
|
else
|
||||||
gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2;
|
gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2;
|
||||||
|
@ -363,8 +363,11 @@ static const u8 sText_SunlightGotBright[] = _("The sunlight got bright!");
|
|||||||
static const u8 sText_SunlightStrong[] = _("The sunlight is strong.");
|
static const u8 sText_SunlightStrong[] = _("The sunlight is strong.");
|
||||||
static const u8 sText_SunlightFaded[] = _("The sunlight faded.");
|
static const u8 sText_SunlightFaded[] = _("The sunlight faded.");
|
||||||
static const u8 sText_StartedHail[] = _("It started to hail!");
|
static const u8 sText_StartedHail[] = _("It started to hail!");
|
||||||
|
static const u8 sText_StartedSnow[] = _("It started to snow!");
|
||||||
static const u8 sText_HailContinues[] = _("Hail continues to fall.");
|
static const u8 sText_HailContinues[] = _("Hail continues to fall.");
|
||||||
|
static const u8 sText_SnowContinues[] = _("Snow continues to fall.");
|
||||||
static const u8 sText_HailStopped[] = _("The hail stopped.");
|
static const u8 sText_HailStopped[] = _("The hail stopped.");
|
||||||
|
static const u8 sText_SnowStopped[] = _("The snow stopped.");
|
||||||
static const u8 sText_FailedToSpitUp[] = _("But it failed to spit up\na thing!");
|
static const u8 sText_FailedToSpitUp[] = _("But it failed to spit up\na thing!");
|
||||||
static const u8 sText_FailedToSwallow[] = _("But it failed to swallow\na thing!");
|
static const u8 sText_FailedToSwallow[] = _("But it failed to swallow\na thing!");
|
||||||
static const u8 sText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!");
|
static const u8 sText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!");
|
||||||
@ -614,6 +617,7 @@ static const u8 sText_AnticipationActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFI
|
|||||||
static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto the {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!");
|
static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto the {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!");
|
||||||
static const u8 sText_IceBodyHpGain[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nhealed it a little bit!");
|
static const u8 sText_IceBodyHpGain[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nhealed it a little bit!");
|
||||||
static const u8 sText_SnowWarningHail[] = _("It started to hail!");
|
static const u8 sText_SnowWarningHail[] = _("It started to hail!");
|
||||||
|
static const u8 sText_SnowWarningSnow[] = _("It started to snow!");
|
||||||
static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!");
|
static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!");
|
||||||
static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!");
|
static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!");
|
||||||
static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!");
|
static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!");
|
||||||
@ -1141,6 +1145,9 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
|||||||
[STRINGID_STARTEDHAIL - BATTLESTRINGS_TABLE_START] = sText_StartedHail,
|
[STRINGID_STARTEDHAIL - BATTLESTRINGS_TABLE_START] = sText_StartedHail,
|
||||||
[STRINGID_HAILCONTINUES - BATTLESTRINGS_TABLE_START] = sText_HailContinues,
|
[STRINGID_HAILCONTINUES - BATTLESTRINGS_TABLE_START] = sText_HailContinues,
|
||||||
[STRINGID_HAILSTOPPED - BATTLESTRINGS_TABLE_START] = sText_HailStopped,
|
[STRINGID_HAILSTOPPED - BATTLESTRINGS_TABLE_START] = sText_HailStopped,
|
||||||
|
[STRINGID_STARTEDSNOW - BATTLESTRINGS_TABLE_START] = sText_StartedSnow,
|
||||||
|
[STRINGID_SNOWCONTINUES -BATTLESTRINGS_TABLE_START] = sText_SnowContinues,
|
||||||
|
[STRINGID_SNOWSTOPPED - BATTLESTRINGS_TABLE_START] = sText_SnowStopped,
|
||||||
[STRINGID_FAILEDTOSPITUP - BATTLESTRINGS_TABLE_START] = sText_FailedToSpitUp,
|
[STRINGID_FAILEDTOSPITUP - BATTLESTRINGS_TABLE_START] = sText_FailedToSpitUp,
|
||||||
[STRINGID_FAILEDTOSWALLOW - BATTLESTRINGS_TABLE_START] = sText_FailedToSwallow,
|
[STRINGID_FAILEDTOSWALLOW - BATTLESTRINGS_TABLE_START] = sText_FailedToSwallow,
|
||||||
[STRINGID_WINDBECAMEHEATWAVE - BATTLESTRINGS_TABLE_START] = sText_WindBecameHeatWave,
|
[STRINGID_WINDBECAMEHEATWAVE - BATTLESTRINGS_TABLE_START] = sText_WindBecameHeatWave,
|
||||||
@ -1361,6 +1368,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
|||||||
[STRINGID_FOREWARNACTIVATES - BATTLESTRINGS_TABLE_START] = sText_ForewarnActivates,
|
[STRINGID_FOREWARNACTIVATES - BATTLESTRINGS_TABLE_START] = sText_ForewarnActivates,
|
||||||
[STRINGID_ICEBODYHPGAIN - BATTLESTRINGS_TABLE_START] = sText_IceBodyHpGain,
|
[STRINGID_ICEBODYHPGAIN - BATTLESTRINGS_TABLE_START] = sText_IceBodyHpGain,
|
||||||
[STRINGID_SNOWWARNINGHAIL - BATTLESTRINGS_TABLE_START] = sText_SnowWarningHail,
|
[STRINGID_SNOWWARNINGHAIL - BATTLESTRINGS_TABLE_START] = sText_SnowWarningHail,
|
||||||
|
[STRINGID_SNOWWARNINGSNOW - BATTLESTRINGS_TABLE_START] = sText_SnowWarningSnow,
|
||||||
[STRINGID_FRISKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_FriskActivates,
|
[STRINGID_FRISKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_FriskActivates,
|
||||||
[STRINGID_UNNERVEENTERS - BATTLESTRINGS_TABLE_START] = sText_UnnerveEnters,
|
[STRINGID_UNNERVEENTERS - BATTLESTRINGS_TABLE_START] = sText_UnnerveEnters,
|
||||||
[STRINGID_HARVESTBERRY - BATTLESTRINGS_TABLE_START] = sText_HarvestBerry,
|
[STRINGID_HARVESTBERRY - BATTLESTRINGS_TABLE_START] = sText_HarvestBerry,
|
||||||
@ -1557,12 +1565,13 @@ const u16 gMoveWeatherChangeStringIds[] =
|
|||||||
[B_MSG_STARTED_SANDSTORM] = STRINGID_SANDSTORMBREWED,
|
[B_MSG_STARTED_SANDSTORM] = STRINGID_SANDSTORMBREWED,
|
||||||
[B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT,
|
[B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT,
|
||||||
[B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL,
|
[B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL,
|
||||||
|
[B_MSG_STARTED_SNOW] = STRINGID_STARTEDSNOW,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gSandStormHailContinuesStringIds[] =
|
const u16 gSandStormHailContinuesStringIds[] =
|
||||||
{
|
{
|
||||||
[B_MSG_SANDSTORM] = STRINGID_SANDSTORMRAGES,
|
[B_MSG_SANDSTORM] = STRINGID_SANDSTORMRAGES,
|
||||||
[B_MSG_HAIL] = STRINGID_HAILCONTINUES
|
[B_MSG_HAIL] = STRINGID_HAILCONTINUES,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gSandStormHailDmgStringIds[] =
|
const u16 gSandStormHailDmgStringIds[] =
|
||||||
@ -1574,7 +1583,7 @@ const u16 gSandStormHailDmgStringIds[] =
|
|||||||
const u16 gSandStormHailEndStringIds[] =
|
const u16 gSandStormHailEndStringIds[] =
|
||||||
{
|
{
|
||||||
[B_MSG_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED,
|
[B_MSG_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED,
|
||||||
[B_MSG_HAIL] = STRINGID_HAILSTOPPED
|
[B_MSG_HAIL] = STRINGID_HAILSTOPPED,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gRainContinuesStringIds[] =
|
const u16 gRainContinuesStringIds[] =
|
||||||
@ -1584,6 +1593,12 @@ const u16 gRainContinuesStringIds[] =
|
|||||||
[B_MSG_RAIN_STOPPED] = STRINGID_RAINSTOPPED
|
[B_MSG_RAIN_STOPPED] = STRINGID_RAINSTOPPED
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const u16 gSnowContinuesStringIds[] =
|
||||||
|
{
|
||||||
|
[B_MSG_SNOW_CONTINUES] = STRINGID_SNOWCONTINUES,
|
||||||
|
[B_MSG_SNOW_STOPPED] = STRINGID_SNOWSTOPPED,
|
||||||
|
};
|
||||||
|
|
||||||
const u16 gProtectLikeUsedStringIds[] =
|
const u16 gProtectLikeUsedStringIds[] =
|
||||||
{
|
{
|
||||||
[B_MSG_PROTECTED_ITSELF] = STRINGID_PKMNPROTECTEDITSELF2,
|
[B_MSG_PROTECTED_ITSELF] = STRINGID_PKMNPROTECTEDITSELF2,
|
||||||
|
@ -1812,7 +1812,7 @@ static bool32 AccuracyCalcHelper(u16 move)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
#if B_BLIZZARD_HAIL >= GEN_4
|
#if B_BLIZZARD_HAIL >= GEN_4
|
||||||
else if ((gBattleWeather & B_WEATHER_HAIL) && move == MOVE_BLIZZARD)
|
else if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && move == MOVE_BLIZZARD)
|
||||||
{
|
{
|
||||||
// thunder/hurricane ignore acc checks in rain unless target is holding utility umbrella
|
// thunder/hurricane ignore acc checks in rain unless target is holding utility umbrella
|
||||||
JumpIfMoveFailed(7, move);
|
JumpIfMoveFailed(7, move);
|
||||||
@ -1892,7 +1892,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u
|
|||||||
|
|
||||||
if (defAbility == ABILITY_SAND_VEIL && WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_SANDSTORM)
|
if (defAbility == ABILITY_SAND_VEIL && WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_SANDSTORM)
|
||||||
calc = (calc * 80) / 100; // 1.2 sand veil loss
|
calc = (calc * 80) / 100; // 1.2 sand veil loss
|
||||||
else if (defAbility == ABILITY_SNOW_CLOAK && WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_HAIL)
|
else if (defAbility == ABILITY_SNOW_CLOAK && WEATHER_HAS_EFFECT && (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)))
|
||||||
calc = (calc * 80) / 100; // 1.2 snow cloak loss
|
calc = (calc * 80) / 100; // 1.2 snow cloak loss
|
||||||
else if (defAbility == ABILITY_TANGLED_FEET && gBattleMons[battlerDef].status2 & STATUS2_CONFUSION)
|
else if (defAbility == ABILITY_TANGLED_FEET && gBattleMons[battlerDef].status2 & STATUS2_CONFUSION)
|
||||||
calc = (calc * 50) / 100; // 1.5 tangled feet loss
|
calc = (calc * 50) / 100; // 1.5 tangled feet loss
|
||||||
@ -5190,7 +5190,8 @@ static void Cmd_playanimation(void)
|
|||||||
else if (animId == B_ANIM_RAIN_CONTINUES
|
else if (animId == B_ANIM_RAIN_CONTINUES
|
||||||
|| animId == B_ANIM_SUN_CONTINUES
|
|| animId == B_ANIM_SUN_CONTINUES
|
||||||
|| animId == B_ANIM_SANDSTORM_CONTINUES
|
|| animId == B_ANIM_SANDSTORM_CONTINUES
|
||||||
|| animId == B_ANIM_HAIL_CONTINUES)
|
|| animId == B_ANIM_HAIL_CONTINUES
|
||||||
|
|| animId == B_ANIM_SNOW_CONTINUES)
|
||||||
{
|
{
|
||||||
BtlController_EmitBattleAnimation(BUFFER_A, animId, *argPtr);
|
BtlController_EmitBattleAnimation(BUFFER_A, animId, *argPtr);
|
||||||
MarkBattlerForControllerExec(gActiveBattler);
|
MarkBattlerForControllerExec(gActiveBattler);
|
||||||
@ -5239,7 +5240,8 @@ static void Cmd_playanimation_var(void)
|
|||||||
else if (*animIdPtr == B_ANIM_RAIN_CONTINUES
|
else if (*animIdPtr == B_ANIM_RAIN_CONTINUES
|
||||||
|| *animIdPtr == B_ANIM_SUN_CONTINUES
|
|| *animIdPtr == B_ANIM_SUN_CONTINUES
|
||||||
|| *animIdPtr == B_ANIM_SANDSTORM_CONTINUES
|
|| *animIdPtr == B_ANIM_SANDSTORM_CONTINUES
|
||||||
|| *animIdPtr == B_ANIM_HAIL_CONTINUES)
|
|| *animIdPtr == B_ANIM_HAIL_CONTINUES
|
||||||
|
|| *animIdPtr == B_ANIM_SNOW_CONTINUES)
|
||||||
{
|
{
|
||||||
BtlController_EmitBattleAnimation(BUFFER_A, *animIdPtr, *argPtr);
|
BtlController_EmitBattleAnimation(BUFFER_A, *animIdPtr, *argPtr);
|
||||||
MarkBattlerForControllerExec(gActiveBattler);
|
MarkBattlerForControllerExec(gActiveBattler);
|
||||||
@ -10250,7 +10252,7 @@ static void Cmd_various(void)
|
|||||||
{
|
{
|
||||||
VARIOUS_ARGS();
|
VARIOUS_ARGS();
|
||||||
if (gSideStatuses[GET_BATTLER_SIDE(gActiveBattler)] & SIDE_STATUS_AURORA_VEIL
|
if (gSideStatuses[GET_BATTLER_SIDE(gActiveBattler)] & SIDE_STATUS_AURORA_VEIL
|
||||||
|| !(WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_HAIL))
|
|| !(WEATHER_HAS_EFFECT && gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)))
|
||||||
{
|
{
|
||||||
gMoveResultFlags |= MOVE_RESULT_MISSED;
|
gMoveResultFlags |= MOVE_RESULT_MISSED;
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||||
@ -16559,3 +16561,20 @@ void BS_ItemRestorePP(void) {
|
|||||||
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, GetMonData(mon, MON_DATA_SPECIES));
|
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, GetMonData(mon, MON_DATA_SPECIES));
|
||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BS_SetSnow(void)
|
||||||
|
{
|
||||||
|
NATIVE_ARGS();
|
||||||
|
|
||||||
|
if (!TryChangeBattleWeather(gBattlerAttacker, ENUM_WEATHER_SNOW, FALSE))
|
||||||
|
{
|
||||||
|
gMoveResultFlags |= MOVE_RESULT_MISSED;
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SNOW;
|
||||||
|
}
|
||||||
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
|
}
|
@ -251,6 +251,7 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] =
|
|||||||
[EFFECT_SWALLOW] = 3,
|
[EFFECT_SWALLOW] = 3,
|
||||||
// [EFFECT_UNUSED_A3] = 1,
|
// [EFFECT_UNUSED_A3] = 1,
|
||||||
[EFFECT_HAIL] = 4,
|
[EFFECT_HAIL] = 4,
|
||||||
|
[EFFECT_SNOW] = 4,
|
||||||
[EFFECT_TORMENT] = 7,
|
[EFFECT_TORMENT] = 7,
|
||||||
[EFFECT_FLATTER] = 7,
|
[EFFECT_FLATTER] = 7,
|
||||||
[EFFECT_WILL_O_WISP] = 5,
|
[EFFECT_WILL_O_WISP] = 5,
|
||||||
@ -1770,6 +1771,6 @@ static void AddPointsBasedOnWeather(u16 weatherFlags, u16 moveId, u8 moveSlot)
|
|||||||
AddMovePoints(PTS_SUN, moveId, moveSlot, 0);
|
AddMovePoints(PTS_SUN, moveId, moveSlot, 0);
|
||||||
else if (weatherFlags & B_WEATHER_SANDSTORM)
|
else if (weatherFlags & B_WEATHER_SANDSTORM)
|
||||||
AddMovePoints(PTS_SANDSTORM, moveId, moveSlot, 0);
|
AddMovePoints(PTS_SANDSTORM, moveId, moveSlot, 0);
|
||||||
else if (weatherFlags & B_WEATHER_HAIL)
|
else if (weatherFlags & (B_WEATHER_HAIL | B_WEATHER_SNOW))
|
||||||
AddMovePoints(PTS_HAIL, moveId, moveSlot, 0);
|
AddMovePoints(PTS_HAIL, moveId, moveSlot, 0);
|
||||||
}
|
}
|
||||||
|
@ -2032,6 +2032,7 @@ enum
|
|||||||
ENDTURN_SANDSTORM,
|
ENDTURN_SANDSTORM,
|
||||||
ENDTURN_SUN,
|
ENDTURN_SUN,
|
||||||
ENDTURN_HAIL,
|
ENDTURN_HAIL,
|
||||||
|
ENDTURN_SNOW,
|
||||||
ENDTURN_GRAVITY,
|
ENDTURN_GRAVITY,
|
||||||
ENDTURN_WATER_SPORT,
|
ENDTURN_WATER_SPORT,
|
||||||
ENDTURN_MUD_SPORT,
|
ENDTURN_MUD_SPORT,
|
||||||
@ -2394,6 +2395,27 @@ u8 DoFieldEndTurnEffects(void)
|
|||||||
}
|
}
|
||||||
gBattleStruct->turnCountersTracker++;
|
gBattleStruct->turnCountersTracker++;
|
||||||
break;
|
break;
|
||||||
|
case ENDTURN_SNOW:
|
||||||
|
if (gBattleWeather & B_WEATHER_SNOW)
|
||||||
|
{
|
||||||
|
if (!(gBattleWeather & B_WEATHER_SNOW_PERMANENT))
|
||||||
|
{
|
||||||
|
if (--gWishFutureKnock.weatherDuration == 0)
|
||||||
|
{
|
||||||
|
gBattleWeather &= ~B_WEATHER_SNOW_TEMPORARY;
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SNOW_STOPPED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SNOW_CONTINUES;
|
||||||
|
}
|
||||||
|
|
||||||
|
BattleScriptExecute(BattleScript_SnowContinuesOrEnds);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
gBattleStruct->turnCountersTracker++;
|
||||||
|
break;
|
||||||
case ENDTURN_TRICK_ROOM:
|
case ENDTURN_TRICK_ROOM:
|
||||||
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && --gFieldTimers.trickRoomTimer == 0)
|
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && --gFieldTimers.trickRoomTimer == 0)
|
||||||
{
|
{
|
||||||
@ -4032,7 +4054,7 @@ u8 TryWeatherFormChange(u8 battler)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (holdEffect == HOLD_EFFECT_UTILITY_UMBRELLA || (!(gBattleWeather & (B_WEATHER_RAIN | B_WEATHER_SUN | B_WEATHER_HAIL)) && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)))
|
else if (holdEffect == HOLD_EFFECT_UTILITY_UMBRELLA || (!(gBattleWeather & (B_WEATHER_RAIN | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_SNOW)) && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)))
|
||||||
{
|
{
|
||||||
SET_BATTLER_TYPE(battler, TYPE_NORMAL);
|
SET_BATTLER_TYPE(battler, TYPE_NORMAL);
|
||||||
ret = CASTFORM_NORMAL + 1;
|
ret = CASTFORM_NORMAL + 1;
|
||||||
@ -4047,7 +4069,7 @@ u8 TryWeatherFormChange(u8 battler)
|
|||||||
SET_BATTLER_TYPE(battler, TYPE_WATER);
|
SET_BATTLER_TYPE(battler, TYPE_WATER);
|
||||||
ret = CASTFORM_WATER + 1;
|
ret = CASTFORM_WATER + 1;
|
||||||
}
|
}
|
||||||
else if (gBattleWeather & B_WEATHER_HAIL && !IS_BATTLER_OF_TYPE(battler, TYPE_ICE))
|
else if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW) && !IS_BATTLER_OF_TYPE(battler, TYPE_ICE))
|
||||||
{
|
{
|
||||||
SET_BATTLER_TYPE(battler, TYPE_ICE);
|
SET_BATTLER_TYPE(battler, TYPE_ICE);
|
||||||
ret = CASTFORM_ICE + 1;
|
ret = CASTFORM_ICE + 1;
|
||||||
@ -4083,6 +4105,7 @@ static const u16 sWeatherFlagsInfo[][3] =
|
|||||||
[ENUM_WEATHER_SANDSTORM] = {B_WEATHER_SANDSTORM_TEMPORARY, B_WEATHER_SANDSTORM_PERMANENT, HOLD_EFFECT_SMOOTH_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_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_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},
|
||||||
};
|
};
|
||||||
|
|
||||||
static void ShouldChangeFormInWeather(u8 battler)
|
static void ShouldChangeFormInWeather(u8 battler)
|
||||||
@ -4103,7 +4126,6 @@ static void ShouldChangeFormInWeather(u8 battler)
|
|||||||
bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility)
|
bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility)
|
||||||
{
|
{
|
||||||
u16 battlerAbility = GetBattlerAbility(battler);
|
u16 battlerAbility = GetBattlerAbility(battler);
|
||||||
|
|
||||||
if (gBattleWeather & B_WEATHER_PRIMAL_ANY
|
if (gBattleWeather & B_WEATHER_PRIMAL_ANY
|
||||||
&& battlerAbility != ABILITY_DESOLATE_LAND
|
&& battlerAbility != ABILITY_DESOLATE_LAND
|
||||||
&& battlerAbility != ABILITY_PRIMORDIAL_SEA
|
&& battlerAbility != ABILITY_PRIMORDIAL_SEA
|
||||||
@ -4129,7 +4151,6 @@ bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility)
|
|||||||
ShouldChangeFormInWeather(battler);
|
ShouldChangeFormInWeather(battler);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4634,11 +4655,19 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ABILITY_SNOW_WARNING:
|
case ABILITY_SNOW_WARNING:
|
||||||
if (TryChangeBattleWeather(battler, ENUM_WEATHER_HAIL, TRUE))
|
#if B_SNOW_WARNING >= GEN_9
|
||||||
|
if (TryChangeBattleWeather(battler, ENUM_WEATHER_SNOW, TRUE))
|
||||||
{
|
{
|
||||||
BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivates);
|
BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesSnow);
|
||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (TryChangeBattleWeather(battler, ENUM_WEATHER_HAIL, TRUE))
|
||||||
|
{
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesHail);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else if (gBattleWeather & B_WEATHER_PRIMAL_ANY && WEATHER_HAS_EFFECT && !gSpecialStatuses[battler].switchInAbilityDone)
|
else if (gBattleWeather & B_WEATHER_PRIMAL_ANY && WEATHER_HAS_EFFECT && !gSpecialStatuses[battler].switchInAbilityDone)
|
||||||
{
|
{
|
||||||
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
|
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
|
||||||
@ -6111,7 +6140,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ABILITY_ICE_FACE:
|
case ABILITY_ICE_FACE:
|
||||||
if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL)
|
if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL | B_WEATHER_SNOW)
|
||||||
&& gBattleMons[battler].species == SPECIES_EISCUE_NOICE_FACE
|
&& gBattleMons[battler].species == SPECIES_EISCUE_NOICE_FACE
|
||||||
&& !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)
|
&& !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)
|
||||||
&& gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)])
|
&& gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)])
|
||||||
@ -9099,7 +9128,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe
|
|||||||
MulModifier(&modifier, UQ_4_12(2.0));
|
MulModifier(&modifier, UQ_4_12(2.0));
|
||||||
break;
|
break;
|
||||||
case EFFECT_SOLAR_BEAM:
|
case EFFECT_SOLAR_BEAM:
|
||||||
if (IsBattlerWeatherAffected(battlerAtk, (B_WEATHER_HAIL | B_WEATHER_SANDSTORM | B_WEATHER_RAIN)))
|
if (IsBattlerWeatherAffected(battlerAtk, (B_WEATHER_HAIL | B_WEATHER_SANDSTORM | B_WEATHER_RAIN | B_WEATHER_SNOW)))
|
||||||
MulModifier(&modifier, UQ_4_12(0.5));
|
MulModifier(&modifier, UQ_4_12(0.5));
|
||||||
break;
|
break;
|
||||||
case EFFECT_STOMPING_TANTRUM:
|
case EFFECT_STOMPING_TANTRUM:
|
||||||
@ -9504,6 +9533,12 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType,
|
|||||||
// sandstorm sp.def boost for rock types
|
// sandstorm sp.def boost for rock types
|
||||||
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ROCK) && gBattleWeather & B_WEATHER_SANDSTORM && WEATHER_HAS_EFFECT && !usesDefStat)
|
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ROCK) && gBattleWeather & B_WEATHER_SANDSTORM && WEATHER_HAS_EFFECT && !usesDefStat)
|
||||||
MulModifier(&modifier, UQ_4_12(1.5));
|
MulModifier(&modifier, UQ_4_12(1.5));
|
||||||
|
// snow def boost for ice types
|
||||||
|
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE) && gBattleWeather & B_WEATHER_SNOW && WEATHER_HAS_EFFECT && usesDefStat)
|
||||||
|
MulModifier(&modifier, UQ_4_12(1.5));
|
||||||
|
|
||||||
|
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE) && gBattleWeather & B_WEATHER_SNOW && WEATHER_HAS_EFFECT && usesDefStat)
|
||||||
|
MulModifier(&modifier, UQ_4_12(1.5));
|
||||||
|
|
||||||
// The defensive stats of a Player's Pokémon are boosted by x1.1 (+10%) if they have the 5th badge and 7th badges.
|
// The defensive stats of a Player's Pokémon are boosted by x1.1 (+10%) if they have the 5th badge and 7th badges.
|
||||||
// Having the 5th badge boosts physical defense while having the 7th badge boosts special defense.
|
// Having the 5th badge boosts physical defense while having the 7th badge boosts special defense.
|
||||||
|
@ -13356,7 +13356,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
|
|||||||
|
|
||||||
[MOVE_SNOWSCAPE] =
|
[MOVE_SNOWSCAPE] =
|
||||||
{
|
{
|
||||||
.effect = EFFECT_HAIL,
|
.effect = EFFECT_SNOW,
|
||||||
.power = 0,
|
.power = 0,
|
||||||
.type = TYPE_ICE,
|
.type = TYPE_ICE,
|
||||||
.accuracy = 0,
|
.accuracy = 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user