Bugfixes Batch (#7739)

This commit is contained in:
Alex 2025-09-16 19:44:06 +02:00 committed by GitHub
parent 37e1188045
commit 74de29a921
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 77 additions and 7 deletions

View File

@ -2223,6 +2223,10 @@ BattleScript_EffectEntrainment::
setlastusedability
printstring STRINGID_PKMNACQUIREDABILITY
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
tryrevertweatherform
flushtextbox
tryendneutralizinggas
goto BattleScript_MoveEnd
BattleScript_EffectSimpleBeam::
@ -2298,6 +2302,9 @@ BattleScript_EffectHealingWishGen4:
switchindataupdate BS_ATTACKER
hpthresholds BS_ATTACKER
trytoclearprimalweather
tryrevertweatherform
flushtextbox
tryendneutralizinggas
flushtextbox
printstring STRINGID_SWITCHINMON
switchinanim BS_ATTACKER, FALSE, TRUE
@ -3319,6 +3326,9 @@ BattleScript_EffectTransform::
attackstring
ppreduce
trytoclearprimalweather
tryrevertweatherform
flushtextbox
tryendneutralizinggas
flushtextbox
transformdataexecution
attackanimation
@ -4551,6 +4561,7 @@ BattleScript_EffectNonVolatileStatus::
attackanimation
waitanimation
setnonvolatilestatus TRIGGER_ON_MOVE
clearmoveresultflags MOVE_RESULT_NOT_VERY_EFFECTIVE | MOVE_RESULT_SUPER_EFFECTIVE
resultmessage
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
@ -5075,6 +5086,9 @@ BattleScript_FaintAttacker::
dofaintanimation BS_ATTACKER
printstring STRINGID_ATTACKERFAINTED
cleareffectsonfaint BS_ATTACKER
trytoclearprimalweather
tryrevertweatherform
flushtextbox
waitanimation
tryactivatesoulheart
tryactivatereceiver BS_ATTACKER
@ -5090,6 +5104,9 @@ BattleScript_FaintTarget::
dofaintanimation BS_TARGET
printstring STRINGID_TARGETFAINTED
cleareffectsonfaint BS_TARGET
trytoclearprimalweather
tryrevertweatherform
flushtextbox
waitanimation
tryactivatesoulheart
tryactivatereceiver BS_TARGET
@ -7962,6 +7979,10 @@ BattleScript_MummyActivates::
recordability BS_ATTACKER
printstring STRINGID_ATTACKERACQUIREDABILITY
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
tryrevertweatherform
flushtextbox
tryendneutralizinggas
return
BattleScript_WanderingSpiritActivates::

View File

@ -623,7 +623,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_SOLARPOWERHPDROP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} takes its toll!"), //don't think this message is displayed anymore
[STRINGID_AFTERMATHDMG] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} was hurt!"),
[STRINGID_ANTICIPATIONACTIVATES] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} shuddered!"),
[STRINGID_FOREWARNACTIVATES] = COMPOUND_STRING("{B_SCR_ABILITY} alerted {B_SCR_NAME_WITH_PREFIX2} to {B_DEF_NAME_WITH_PREFIX2}'s {B_BUFF1}!"),
[STRINGID_FOREWARNACTIVATES] = COMPOUND_STRING("{B_SCR_ABILITY} alerted {B_SCR_NAME_WITH_PREFIX2} to {B_EFF_NAME_WITH_PREFIX2}'s {B_BUFF1}!"),
[STRINGID_ICEBODYHPGAIN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} healed it a little bit!"), //don't think this message is displayed anymore
[STRINGID_SNOWWARNINGHAIL] = COMPOUND_STRING("It started to hail!"),
[STRINGID_FRISKACTIVATES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX2} and found its {B_LAST_ITEM}!"),

View File

@ -17849,7 +17849,7 @@ void BS_GetTotemBoost(void)
void BS_ActivateItemEffects(void)
{
NATIVE_ARGS();
if (ItemBattleEffects(ITEMEFFECT_NORMAL, gBattlerTarget))
if (ItemBattleEffects(ITEMEFFECT_TRY_HEALING, gBattlerTarget))
return;
gBattlescriptCurrInstr = cmd->nextInstr;
}

View File

@ -2906,9 +2906,9 @@ static void ForewarnChooseMove(u32 battler)
bestId = i;
}
gBattlerTarget = data[bestId].battler;
gEffectBattler = data[bestId].battler;
PREPARE_MOVE_BUFFER(gBattleTextBuff1, data[bestId].moveId)
RecordKnownMove(gBattlerTarget, data[bestId].moveId);
RecordKnownMove(data[bestId].battler, data[bestId].moveId);
Free(data);
}
@ -5188,6 +5188,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
gBattleScripting.battler = gBattlerAbility = gBattlerTarget;
RecordAbilityBattle(gBattlerTarget, ABILITY_SYNCHRONIZE);
if (B_SYNCHRONIZE_TOXIC < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
if (CanSetNonVolatileStatus(
gBattlerTarget,
gBattlerAttacker,
@ -5196,9 +5199,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
gBattleStruct->synchronizeMoveEffect,
CHECK_TRIGGER))
{
if (B_SYNCHRONIZE_TOXIC < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
gEffectBattler = gBattlerAttacker;
gBattleScripting.moveEffect = gBattleStruct->synchronizeMoveEffect;
PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_SYNCHRONIZE);
@ -5218,6 +5218,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
gBattleScripting.battler = gBattlerAbility = gBattlerAttacker;
RecordAbilityBattle(gBattlerAttacker, ABILITY_SYNCHRONIZE);
if (B_SYNCHRONIZE_TOXIC < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
if (CanSetNonVolatileStatus(
gBattlerAttacker,
gBattlerTarget,

View File

@ -32096,6 +32096,7 @@ static const u16 sDipplinTeachableLearnset[] = {
static const u16 sHydrappleTeachableLearnset[] = {
MOVE_BODY_SLAM,
MOVE_BULLET_SEED,
MOVE_DEFENSE_CURL,
MOVE_DOUBLE_EDGE,
MOVE_EARTHQUAKE,
MOVE_ENDURE,
@ -32106,6 +32107,7 @@ static const u16 sHydrappleTeachableLearnset[] = {
MOVE_RAIN_DANCE,
MOVE_REFLECT,
MOVE_REST,
MOVE_ROLLOUT,
MOVE_SLEEP_TALK,
MOVE_SOLAR_BEAM,
MOVE_SUNNY_DAY,

View File

@ -83,3 +83,18 @@ SINGLE_BATTLE_TEST("Desolate Land will not create a softlock when move in semi i
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
}
}
SINGLE_BATTLE_TEST("Desolate Land is removed immediately if user faints")
{
GIVEN {
PLAYER(SPECIES_GROUDON) { HP(1); Item(ITEM_RED_ORB); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponent, MOVE_POUND); SEND_OUT(player, 1); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponent);
NOT MESSAGE("The sunlight is strong.");
MESSAGE("The extremely harsh sunlight faded!");
}
}

View File

@ -58,4 +58,19 @@ SINGLE_BATTLE_TEST("Entrainment fails if the target's ability has cantBeOverwrit
}
}
SINGLE_BATTLE_TEST("Entrainment causes primal weather to revert")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_TELEPATHY); }
OPPONENT(SPECIES_GROUDON) { Item(ITEM_RED_ORB); }
} WHEN {
TURN { MOVE(player, MOVE_ENTRAINMENT); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ENTRAINMENT, player);
MESSAGE("The extremely harsh sunlight faded!");
} THEN {
EXPECT(opponent->ability == ABILITY_TELEPATHY);
}
}
TO_DO_BATTLE_TEST("Entrainment fails on Dynamaxed Pokémon");

View File

@ -77,3 +77,17 @@ SINGLE_BATTLE_TEST("Thunder Wave doesn't affect Electric types in Gen6+")
MESSAGE("It doesn't affect the opposing Pikachu…");
}
}
SINGLE_BATTLE_TEST("Thunder Wave doesn't print an effectiveness message")
{
GIVEN {
ASSUME(gSpeciesInfo[SPECIES_PIDGEY].types[1] == TYPE_FLYING);
PLAYER(SPECIES_PIDGEY);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponent, MOVE_THUNDER_WAVE); }
} SCENE {
MESSAGE("The opposing Wobbuffet used Thunder Wave!");
NOT MESSAGE("It's super effective!");
}
}