Getting to Legendary in Hearthstone

Hearthstone

Hearthstone is a curious game. It’s an online card game that has attracted a huge following of casual and competitive players. There are over 40 million world-wide players and the World Championships this weekend had a $1 million prize pool. The game is kind of like poker and chess combined, with a lot of strategy around trading pieces and a bit of luck with card draws and other random effects. I like it because the games only lasts 5-15 minutes and there is a lot of strategy and thinking involved. Most online games require fast reaction times, but Hearthstone is turn-based and you get 75 seconds each turn to plot your moves.

There are a few game modes, but the most popular is the ranked ladder. You start the game at Rank 25 and play against other players with the same rank. As you win games, your rank improves, lose games and your rank gets worse. The ultimate goal is to progress beyond Rank 1 to Legendary status. Every month the ranks reset. I’ve never gotten beyond Rank 5 and I had to play a lot of games to get that high.

Getting to Legend status is about consistently playing well (above 50% win rate) and grinding out a lot of games. How many? That depends on the deck win rate. I wrote a script (below) to simulate how many games it would take to reach Legendary depending on your win rate.

If you’re only winning  50% of your games you play, you can make it to Legendary but be prepared to play around 1440 games. With a 55% win rate, a pretty good result in competitive Hearthstone, it would take on average 483 games to reach Legendary status (at least 15 games a day). Even if you could consistently win 60% of the games you played, an impressive feat, it would take 287 games a month to reach Legendary. I thought I played a lot of Hearthstone, but I don’t have that kind of time.

hearthstone_legendary

Code:


import random
n_runs = 100000
stars_needed_from_25_to_legendary = 10+15+20+25+25
stars_above_which_no_bonus_is_awarded = stars_needed_from_25_to_legendary25
max_games = 20000
def stars_to_rank(stars):
ranks_gained = 0
if stars <= 10:
ranks_gained = stars / 2
elif stars <= 25:
ranks_gained = 5 + (stars10) / 3
elif stars <= 45:
ranks_gained = 10 + (stars25) / 4
else:
ranks_gained = 15 + (stars45) / 5
return 25 ranks_gained
for win_rate in range(100,49,1):
win_rate = win_rate / 100.0
n_legendary_runs = 0
n_total_games = 0
n_total_max_stars = 0
for runs in range(n_runs):
legendary = False
games_played = 0
won_last_game = False
won_second_last_game = False
stars = 0
max_stars = 0
while not legendary and games_played < max_games:
win = random.random() < win_rate
if win:
if won_last_game and won_second_last_game and stars < stars_above_which_no_bonus_is_awarded:
stars += 2
else:
stars += 1
else:
stars = max(0, stars 1)
max_stars = max(stars, max_stars)
legendary = stars >= stars_needed_from_25_to_legendary
won_second_last_game = won_last_game
won_last_game = win
games_played += 1
# print ("Win rate: {}, Games played: {}, stars: {}".format(win_rate, games_played, stars))
n_legendary_runs += legendary
n_total_games += games_played
n_total_max_stars += max_stars
print ("Win rate: {:.0%}, Most Stars: {}, Higest Rank: {}, Legendary chance: {}, Games played: {}".format(win_rate, n_total_max_stars / n_runs, stars_to_rank(n_total_max_stars / n_runs), float(n_legendary_runs) / n_runs, n_total_games / n_runs))

view raw

hs_legendary.py

hosted with ❤ by GitHub


Win rate: 100%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 61
Win rate: 99%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 62
Win rate: 98%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 63
Win rate: 97%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 65
Win rate: 96%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 66
Win rate: 95%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 68
Win rate: 94%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 70
Win rate: 93%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 71
Win rate: 92%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 73
Win rate: 91%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 75
Win rate: 90%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 77
Win rate: 89%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 79
Win rate: 88%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 82
Win rate: 87%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 84
Win rate: 86%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 87
Win rate: 85%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 89
Win rate: 84%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 92
Win rate: 83%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 95
Win rate: 82%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 98
Win rate: 81%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 101
Win rate: 80%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 105
Win rate: 79%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 108
Win rate: 78%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 112
Win rate: 77%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 117
Win rate: 76%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 121
Win rate: 75%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 126
Win rate: 74%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 131
Win rate: 73%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 137
Win rate: 72%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 142
Win rate: 71%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 149
Win rate: 70%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 156
Win rate: 69%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 164
Win rate: 68%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 172
Win rate: 67%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 182
Win rate: 66%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 192
Win rate: 65%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 203
Win rate: 64%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 216
Win rate: 63%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 231
Win rate: 62%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 247
Win rate: 61%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 266
Win rate: 60%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 287
Win rate: 59%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 313
Win rate: 58%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 344
Win rate: 57%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 379
Win rate: 56%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 426
Win rate: 55%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 483
Win rate: 54%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 560
Win rate: 53%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 663
Win rate: 52%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 813
Win rate: 51%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 1048
Win rate: 50%, Most Stars: 95, Higest Rank: 0, Legendary chance: 1.0, Games played: 1440

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s