Skip to content
✏️

Suggest Improvements

Help improve (ID: ) - Spot errors or suggest better descriptions

Sweet Dreams (Ability #333)

Basic Information

  • Ability ID: 333
  • Name: Sweet Dreams
  • Short Description: Heals 1/8 of max HP every turn if asleep. Immune to Bad Dreams.

Extended In-Game Description

For use in Elite Redux extended ability UI (IMPORTANT: exactly 280-300 chars counted WITH spaces) Sweet Dreams provides restorative healing while sleeping, regenerating exactly 1/8 of maximum HP at the end of each turn when the Pokémon is asleep or has the Comatose ability. Additionally, it grants complete immunity to Bad Dreams damage, making this a powerful defensive ability.

Detailed Mechanics

Healing Effect

  • Trigger: Activates at the end of each turn
  • Condition: Pokémon must be asleep (STATUS1_SLEEP) OR have the Comatose ability
  • Healing Amount: 1/8 of maximum HP (minimum 1 HP if calculation results in 0)
  • Restrictions:
    • Does not activate if Pokémon is at maximum HP
    • Requires the Pokémon to be able to heal (checked via CanBattlerHeal())

Bad Dreams Immunity

  • Complete Protection: Pokémon with Sweet Dreams are completely immune to Bad Dreams damage
  • Implementation: The trygetbaddreamstarget battle script command specifically checks for Sweet Dreams ability and skips the Pokémon if present
  • Battle Script: When Bad Dreams attempts to target this Pokémon, it jumps to the "prevented" branch

Code Implementation

Core Ability Function

cpp
constexpr Ability SweetDreams = {
    .onEndTurn = +[](ON_END_TURN) -> int {
        CHECK_NOT(BATTLER_MAX_HP(battler))
        CHECK(CanBattlerHeal(battler))
        CHECK(gBattleMons[battler].status1 & STATUS1_SLEEP || BATTLER_HAS_ABILITY(battler, ABILITY_COMATOSE))

        gBattleMoveDamage = gBattleMons[battler].maxHP / 8;
        if (gBattleMoveDamage == 0) gBattleMoveDamage = 1;
        gBattleMoveDamage *= -1;
        BattleScriptPushCursorAndCallback(BattleScript_SweetDreamsActivates);
        return TRUE;
    },
};

Bad Dreams Immunity Check

cpp
// In Cmd_trygetbaddreamstarget function
else if (BattlerHasAbility(gBattlerTarget, ABILITY_SWEET_DREAMS, TRUE))
    gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 5);

Ability Interactions

Synergistic Abilities

  • Comatose: Sweet Dreams healing triggers when Pokémon has Comatose, even if not actually asleep
  • Peaceful Slumber: Uses Sweet Dreams as a base effect and adds additional healing (1/16 HP from Self Sufficient)

Defensive Interactions

  • Bad Dreams: Complete immunity to Bad Dreams damage while asleep
  • Magic Guard: Would protect against indirect damage but Sweet Dreams already provides immunity

Strategic Applications

Offensive Use

  • Rest Strategy: Pairs excellently with Rest for sustained healing
  • Sleep Talk: Can continue attacking while benefiting from healing
  • Comatose Synergy: Always active healing when paired with Comatose

Defensive Use

  • Stall Strategy: Provides consistent healing for defensive Pokemon
  • Bad Dreams Counter: Direct counter to Bad Dreams strategies
  • Sleep Immunity: Transforms sleep from a disadvantage into an advantage

Battle Message

When Sweet Dreams activates, it displays:

  • String ID: STRINGID_SWEETDREAMSHPUP
  • Animation: Status animation with health bar update
  • Timing: Occurs during end-of-turn phase

Technical Notes

  • Healing Calculation: Uses standard 1/8 HP calculation with minimum 1 HP guarantee
  • Priority: Activates during standard end-turn ability phase
  • Substitute: Healing ignores Substitute status (uses HITMARKER_IGNORE_SUBSTITUTE)
  • Damage Flag: Uses HITMARKER_PASSIVE_DAMAGE flag for proper damage classification
  • Comatose: Provides permanent sleep status for consistent Sweet Dreams activation
  • Bad Dreams: Directly countered by Sweet Dreams immunity
  • Peaceful Slumber: Inherits Sweet Dreams functionality with additional effects
  • Self Sufficient: Used in combination with Sweet Dreams in Peaceful Slumber

Elite Redux Ability Codex