Fix berry activation timing for Yawn sleep and Leech Seed damage (#8776)

This commit is contained in:
moostoet 2026-01-03 08:50:17 +01:00 committed by GitHub
parent 86ab719469
commit 0e33bf916e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 45 additions and 0 deletions

View File

@ -4958,6 +4958,7 @@ BattleScript_LeechSeedTurnDrain:
healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
tryfaintmon BS_ATTACKER
tryactivateitem BS_ATTACKER, ACTIVATION_ON_HP_THRESHOLD
return
BattleScript_BideStoringEnergy::
@ -6294,6 +6295,7 @@ BattleScript_YawnMakesAsleepEnd2::
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_EFFECT_BATTLER
waitstate
tryactivateitem BS_EFFECT_BATTLER, ACTIVATION_ON_STATUS_CHANGE
jumpfifsemiinvulnerable BS_EFFECT_BATTLER, STATE_SKY_DROP, BattleScript_YawnEnd
makevisible BS_EFFECT_BATTLER
skydropyawn

View File

@ -157,6 +157,7 @@ enum ItemActivationState
ACTIVATION_ON_PICK_UP,
ACTIVATION_ON_HARVEST,
ACTIVATION_ON_HP_THRESHOLD,
ACTIVATION_ON_STATUS_CHANGE,
};
#endif // GUARD_HOLD_EFFECTS_H

View File

@ -12211,6 +12211,10 @@ static void Cmd_tryactivateitem(void)
if (ItemBattleEffects(battler, 0, GetBattlerHoldEffect(battler), IsOnHpThresholdActivation))
return;
break;
case ACTIVATION_ON_STATUS_CHANGE:
if (ItemBattleEffects(battler, 0, GetBattlerHoldEffect(battler), IsOnStatusChangeActivation))
return;
break;
}
}

View File

@ -116,6 +116,25 @@ SINGLE_BATTLE_TEST("Chesto and Lum Berries cure sleep")
}
}
SINGLE_BATTLE_TEST("Chesto Berry cures sleep when Yawn takes effect")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN);
ASSUME(gItemsInfo[ITEM_CHESTO_BERRY].holdEffect == HOLD_EFFECT_CURE_SLP);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CHESTO_BERRY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponent, MOVE_YAWN); }
TURN { MOVE(opponent, MOVE_CELEBRATE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_YAWN, opponent);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player);
STATUS_ICON(player, sleep: TRUE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
STATUS_ICON(player, sleep: FALSE);
}
}
TO_DO_BATTLE_TEST("Chesto and Lum Berries don't trigger if the holder has Comatose")
SINGLE_BATTLE_TEST("Cheri and Lum Berries cure paralysis")

View File

@ -63,3 +63,22 @@ DOUBLE_BATTLE_TEST("Restore HP Item effects do not miss timing after a recoil mo
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight);
}
}
SINGLE_BATTLE_TEST("Sitrus Berry restores HP immediately after Leech Seed damage")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_LEECH_SEED) == EFFECT_LEECH_SEED);
ASSUME(gItemsInfo[ITEM_SITRUS_BERRY].holdEffect == HOLD_EFFECT_RESTORE_PCT_HP);
PLAYER(SPECIES_WOBBUFFET) { MaxHP(80); HP(41); Item(ITEM_SITRUS_BERRY); }
OPPONENT(SPECIES_WYNAUT);
} WHEN {
TURN { MOVE(opponent, MOVE_LEECH_SEED); }
TURN { }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_LEECH_SEED, opponent);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_LEECH_SEED_DRAIN, player);
HP_BAR(player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
HP_BAR(player);
}
}