What is a pity timer? Why some games guarantee your lucky drop
A pity timer is a hidden counter that tracks how long a player has gone without a rare reward and forces one when the counter hits a limit. The game "pities" bad luck. It makes sure that even the unluckiest player eventually gets the drop, so the odds never feel rigged against them.
What the game is doing
A normal card pack is a dice roll. Most packs give common cards, and a rare one shows up only by chance. A pity timer adds one simple rule on top of the dice:
- The game counts every pack that did not contain the rare reward.
- Each miss moves a hidden meter one step closer to the limit.
- When the meter reaches the limit, the next pack is forced to contain the reward.
- When the player gets the reward, by luck or by force, the counter resets.
Hearthstone is the clean public example. Blizzard wrote that you are guaranteed a Legendary card within your first 10 packs of a new set. So the worst possible streak is 9 packs with no Legendary. Pack 10 is a gift.
The player never sees the meter. They only see the result: a gold card, right when they were about to give up.
Why it works
Pure randomness is fair on average and cruel to individuals. Some players open pack after pack and get nothing, while others hit a rare card on the first try. The unlucky ones do not think "that was variance." They think "this game hates me," and they quit.
A pity timer puts a floor under bad luck. The reward still feels like a lucky moment, but the worst case is capped. Players mostly remember the big win, not the pack count that led to it. A capped streak also gives them a reason to keep opening one more pack.
Real games that use it
Hearthstone states its rule in writing. In the post Hearthstone Update: Upcoming Card Pack Changes (22 June 2017), Blizzard says players are "guaranteed to get a Legendary within your first 10 packs of a new set."
Many other gacha games have their own pity rules, and the numbers differ from game to game. Some guarantee a reward at a fixed count. Others raise the odds slowly instead. We only quote Hearthstone here because Blizzard published the rule. If you care about another game, check that game's own help page, not a fan wiki.
How to use it in your game
A pity timer is a counter and an if. Here is the idea in pseudocode:
const int PityLimit = 10;
int packsWithoutRare;
Pack OpenPack() {
packsWithoutRare++;
if (packsWithoutRare >= PityLimit || RollForRare()) {
packsWithoutRare = 0;
return PackWithRare();
}
return NormalPack();
}
Tips:
- Pick the limit from the player's pain, not from math alone. Ask how many misses in a row make a player feel cheated, then set the cap just before that.
- Save the counter on the server. If it lives only on the device, reinstalling the game or switching phones resets it, and players will notice.
- Reset on any rare reward, including natural ones. Otherwise a player can get two in a row and feel the game is wasting its guarantee.
- Be honest if money is involved. If players pay for packs, tell them the guarantee in plain words. Hearthstone published its rule. Hidden odds around paid rewards can break trust, and in some places they are regulated.
- Test the unlucky case. Run your system a million times in a script and check that nobody ever goes past the cap.
FAQ
What does pity mean in gacha games?
Pity is a counter that guarantees a rare reward after enough misses. The game "pities" a player who has been unlucky for too long and steps in.
Is a pity timer the same as guaranteed odds?
No. Your odds on any single pack stay the same. The timer only limits how long a bad streak can last, so the guarantee comes from the count, not from better luck.
Why do developers add pity timers?
They stop unlucky players from quitting. A player who sees a clear limit to bad luck is more likely to keep playing than one who feels the game is random against them.
Related: Last-HP mercy ยท Login streak