Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed Forecast and Flower Gift #2978

Merged
merged 8 commits into from
May 23, 2023
4 changes: 4 additions & 0 deletions asm/macros/battle_script.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1346,6 +1346,10 @@
callnative BS_ItemRestorePP
.endm

.macro tryrevertweatherform
callnative BS_TryRevertWeatherForm
.endm

.macro setsnow
callnative BS_SetSnow
.endm
Expand Down
46 changes: 30 additions & 16 deletions data/battle_scripts_1.s
Original file line number Diff line number Diff line change
Expand Up @@ -1581,6 +1581,7 @@ BattleScript_MoveEffectCoreEnforcer::
printstring STRINGID_PKMNSABILITYSUPPRESSED
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
tryrevertweatherform
printstring STRINGID_EMPTYSTRING3
waitmessage 1
BattleScript_CoreEnforcerRet:
Expand Down Expand Up @@ -2729,6 +2730,7 @@ BattleScript_EffectSimpleBeam:
printstring STRINGID_PKMNACQUIREDSIMPLE
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
tryrevertweatherform
printstring STRINGID_EMPTYSTRING3
waitmessage 1
tryendneutralizinggas BS_TARGET
Expand Down Expand Up @@ -2828,6 +2830,7 @@ BattleScript_EffectWorrySeed:
printstring STRINGID_PKMNACQUIREDABILITY
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
tryrevertweatherform
printstring STRINGID_EMPTYSTRING3
waitmessage 1
goto BattleScript_MoveEnd
Expand Down Expand Up @@ -2959,6 +2962,7 @@ BattleScript_EffectGastroAcid:
printstring STRINGID_PKMNSABILITYSUPPRESSED
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
tryrevertweatherform
printstring STRINGID_EMPTYSTRING3
waitmessage 1
tryendneutralizinggas BS_TARGET
Expand Down Expand Up @@ -6848,6 +6852,7 @@ BattleScript_RainContinuesOrEnds::
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_RAIN_STOPPED, BattleScript_RainContinuesOrEndsEnd
playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES
BattleScript_RainContinuesOrEndsEnd::
call BattleScript_ActivateWeatherAbilities
end2

BattleScript_DamagingWeatherContinues::
Expand Down Expand Up @@ -6881,22 +6886,26 @@ BattleScript_DamagingWeatherLoopIncrement::
jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamagingWeatherLoop
BattleScript_DamagingWeatherContinuesEnd::
bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE
call BattleScript_ActivateWeatherAbilities
end2

BattleScript_SandStormHailSnowEnds::
printfromtable gSandStormHailSnowEndStringIds
waitmessage B_WAIT_TIME_LONG
call BattleScript_ActivateWeatherAbilities
end2

BattleScript_SunlightContinues::
printstring STRINGID_SUNLIGHTSTRONG
waitmessage B_WAIT_TIME_LONG
playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES
call BattleScript_ActivateWeatherAbilities
end2

BattleScript_SunlightFaded::
printstring STRINGID_SUNLIGHTFADED
waitmessage B_WAIT_TIME_LONG
call BattleScript_ActivateWeatherAbilities
end2

BattleScript_OverworldWeatherStarts::
Expand Down Expand Up @@ -7995,9 +8004,7 @@ BattleScript_CudChewActivates::
setbyte sBERRY_OVERRIDE, 0
end3

BattleScript_TargetFormChange::
pause 5
call BattleScript_AbilityPopUpTarget
BattleScript_TargetFormChangeNoPopup:
printstring STRINGID_EMPTYSTRING3
waitmessage 1
handleformchange BS_TARGET, 0
Expand All @@ -8007,16 +8014,22 @@ BattleScript_TargetFormChange::
handleformchange BS_TARGET, 2
return

BattleScript_TargetFormChange::
pause 5
call BattleScript_AbilityPopUpTarget
call BattleScript_TargetFormChangeNoPopup
return

BattleScript_TargetFormChangeWithString::
pause 5
call BattleScript_AbilityPopUpTarget
printstring STRINGID_EMPTYSTRING3
waitmessage 1
handleformchange BS_TARGET, 0
handleformchange BS_TARGET, 1
playanimation BS_TARGET, B_ANIM_FORM_CHANGE, NULL
waitanimation
handleformchange BS_TARGET, 2
call BattleScript_TargetFormChangeNoPopup
printstring STRINGID_PKMNTRANSFORMED
waitmessage B_WAIT_TIME_LONG
return

BattleScript_TargetFormChangeWithStringNoPopup::
call BattleScript_TargetFormChangeNoPopup
printstring STRINGID_PKMNTRANSFORMED
waitmessage B_WAIT_TIME_LONG
return
Expand Down Expand Up @@ -8664,14 +8677,15 @@ BattleScript_ShedSkinActivates::
end3

BattleScript_ActivateWeatherAbilities:
copybyte sBATTLER, gBattlerAttacker
setbyte gBattlerAttacker, 0
savetarget
setbyte gBattlerTarget, 0
BattleScript_ActivateWeatherAbilities_Loop:
activateweatherchangeabilities BS_ATTACKER
copybyte sBATTLER, gBattlerTarget
activateweatherchangeabilities BS_TARGET
BattleScript_ActivateWeatherAbilities_Increment:
addbyte gBattlerAttacker, 1
jumpifbytenotequal gBattlerAttacker, gBattlersCount, BattleScript_ActivateWeatherAbilities_Loop
copybyte gBattlerAttacker, sBATTLER
addbyte gBattlerTarget, 1
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_ActivateWeatherAbilities_Loop
restoretarget
AgustinGDLV marked this conversation as resolved.
Show resolved Hide resolved
return

BattleScript_TryAdrenalineOrb:
Expand Down
1 change: 1 addition & 0 deletions include/battle_scripts.h
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,7 @@ extern const u8 BattleScript_MoveEffectStockpileWoreOff[];
extern const u8 BattleScript_StealthRockActivates[];
extern const u8 BattleScript_SpikesActivates[];
extern const u8 BattleScript_BerserkGeneRet[];
extern const u8 BattleScript_TargetFormChangeWithStringNoPopup[];

// zmoves
extern const u8 BattleScript_ZMoveActivateDamaging[];
Expand Down
1 change: 0 additions & 1 deletion include/battle_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,6 @@ void TryClearRageAndFuryCutter(void);
u8 AtkCanceller_UnableToUseMove(void);
u8 AtkCanceller_UnableToUseMove2(void);
bool8 HasNoMonsToSwitch(u8 battlerId, u8 r1, u8 r2);
u8 TryWeatherFormChange(u8 battlerId);
bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility);
u8 AbilityBattleEffects(u8 caseID, u8 battlerId, u16 ability, u8 special, u16 moveArg);
bool32 IsNeutralizingGasOnField(void);
Expand Down
1 change: 1 addition & 0 deletions include/config/battle.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@
#define B_STOCKPILE_RAISES_DEFS GEN_LATEST // In Gen4+, Stockpile also raises Defense and Sp. Defense stats. Once Spit Up / Swallow is used, these stat changes are lost.
#define B_TRANSFORM_SHINY GEN_LATEST // In Gen4+, Transform will copy the shiny state of the opponent instead of maintaining its own shiny state.
#define B_TRANSFORM_FORM_CHANGES GEN_LATEST // In Gen5+, Transformed Pokemon cannot change forms.
#define B_WEATHER_FORM_SUPPRESS GEN_LATEST // In Gen5+, Cherrim and Castform revert to their normal forms upon losing their ability.

// Ability settings
#define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters.
Expand Down
1 change: 1 addition & 0 deletions include/constants/form_change_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@

// Form change that activates when a specific weather is set during battle.
// param1: weather to check
// param2: (optional) revert if specified ability is lost
#define FORM_CHANGE_BATTLE_WEATHER 14

// Form change that activates automatically when the turn ends.
Expand Down
27 changes: 23 additions & 4 deletions src/battle_script_commands.c
Original file line number Diff line number Diff line change
Expand Up @@ -16448,7 +16448,8 @@ u8 GetFirstFaintedPartyIndex(u8 battlerId)
return PARTY_SIZE;
}

void BS_ItemRestoreHP(void) {
void BS_ItemRestoreHP(void)
{
NATIVE_ARGS();
u16 healAmount;
u32 battlerId = MAX_BATTLERS_COUNT;
Expand Down Expand Up @@ -16510,7 +16511,8 @@ void BS_ItemRestoreHP(void) {
gBattlescriptCurrInstr = cmd->nextInstr;
}

void BS_ItemCureStatus(void) {
void BS_ItemCureStatus(void)
{
NATIVE_ARGS();
struct Pokemon *party = GetBattlerParty(gBattlerAttacker);

Expand Down Expand Up @@ -16538,15 +16540,17 @@ void BS_ItemCureStatus(void) {
gBattlescriptCurrInstr = cmd->nextInstr;
}

void BS_ItemIncreaseStat(void) {
void BS_ItemIncreaseStat(void)
{
NATIVE_ARGS();
u16 statId = GetItemEffect(gLastUsedItem)[1];
u16 stages = ItemId_GetHoldEffectParam(gLastUsedItem);
SET_STATCHANGER(statId, stages, FALSE);
gBattlescriptCurrInstr = cmd->nextInstr;
}

void BS_ItemRestorePP(void) {
void BS_ItemRestorePP(void)
{
NATIVE_ARGS();
const u8 *effect = GetItemEffect(gLastUsedItem);
u32 i, pp, maxPP, moveId, loopEnd;
Expand Down Expand Up @@ -16598,6 +16602,21 @@ void BS_ItemRestorePP(void) {
gBattlescriptCurrInstr = cmd->nextInstr;
}

void BS_TryRevertWeatherForm(void)
{
NATIVE_ARGS();
#if B_WEATHER_FORM_SUPPRESS >= GEN_5
if (TryBattleFormChange(gBattlerTarget, FORM_CHANGE_BATTLE_WEATHER))
{
gBattleScripting.battler = gBattlerTarget;
BattleScriptPush(cmd->nextInstr);
gBattlescriptCurrInstr = BattleScript_TargetFormChangeWithStringNoPopup;
return;
}
#endif
gBattlescriptCurrInstr = cmd->nextInstr;
}

void BS_SetSnow(void)
{
NATIVE_ARGS();
Expand Down
Loading