Appearance
Soothsayer (ID: 773)
Extended In-Game Description (280-300 chars)
"First switch-in only: Take 0.5× damage from all attacks for 3 turns. Breakable by Mold Breaker. Persistent ability - states maintained through switches. After 3 turns, effect permanently ends even if switching. Countdown only happens while active on field."
Character count: 282
Detailed Mechanical Analysis
Basic Mechanics
- Ability ID: 773
- Protobuf Description: "Resists all attacks for three turns on first entry."
- Trigger:
onEntry
hook with single-use check - Effect:
onAfterTypeEffectiveness
modifier - Duration: 3 turns tracked by
GetAbilityState()/SetAbilityState()
Core Implementation
cpp
constexpr Ability Soothsayer = {
.onEntry = +[](ON_ENTRY) -> int {
CHECK(!GetSingleUseAbilityCounter(battler, ability))
SetSingleUseAbilityCounter(battler, ability, TRUE);
SetAbilityState(battler, ability, 3);
return SwitchInAnnounce(B_MSG_SWITCHIN_SOOTHSAYER);
},
.onEndTurn = +[](ON_END_TURN) -> int {
int counter = GetAbilityState(battler, ability);
if (counter) SetAbilityState(battler, ability, counter - 1);
return FALSE;
},
.onAfterTypeEffectiveness =
+[](ON_AFTER_TYPE_EFFECTIVENESS) {
if (!GetAbilityState(battler, ability)) return;
if (*mod >= UQ_4_12(1.0)) *mod = UQ_4_12(0.5);
},
.onAfterTypeEffectivenessFor = APPLY_ON_TARGET,
.breakable = TRUE,
.persistent = TRUE,
};
Switching Mechanics - ANSWER TO USER QUESTION
Does it refresh when switching, or does the count stay?
Answer: The count stays and continues to tick down even when switched out.
Here's exactly how it works:
- First Switch-In Only:
GetSingleUseAbilityCounter()
ensures it only activates once per battle per Pokemon - Persistent State:
.persistent = TRUE
means ability state is preserved when switching - Turn Counter Continues: The
onEndTurn
hook decrements the counter regardless of whether the Pokemon is currently on the field - No Reset on Re-entry: Subsequent switch-ins do nothing because the single-use counter is already set
Damage Reduction Mechanics
- Type Effectiveness Check: Only affects moves with >= 1.0× effectiveness
- Damage Reduction: All qualifying attacks become 0.5× damage (equivalent to "not very effective")
- Move Types Affected: All move types that would normally do neutral or super-effective damage
- Breakable: Can be suppressed by Mold Breaker, Teravolt, Turboblaze
Key Properties
- Single Use: Only works on the very first switch-in per battle
- 3-Turn Duration: Countdown happens every end of turn
- Persistent: State maintained when switching out
- Breakable: Mold Breaker effects can suppress it
- Universal Resistance: Affects all attacks that deal normal or super-effective damage
Discrepancy Note
The user mentioned "5 turns" but the actual implementation uses 3 turns. The protobuf description correctly states "three turns".
Competitive Usage
This ability provides significant defensive utility for sweepers or tanks that need setup time, but only works once per battle. The persistent nature means switching doesn't waste the effect, but the turn counter continues to tick down regardless of field presence.