Games & odds5 min read

Case battles: how they work, the modes and the fairness

How CS2 case battles work: formats from 1v1 to 3v3, Classic, Crazy, Terminal and Jackpot modes, bots, the expected-value math and fairness.

Fact-checked 18 October 2026 · 4 sources

In a case battle, several players open the same cases at the same time and the best haul takes everything that was opened. The format makes case opening social and quick. It doesn't change the math: on average each seat gets back what its cases return, and the rest is value moving between players.

How a battle works

A review of skins gambling commissioned by the UK government and published in September 2025 describes battles as several players opening loot boxes at once, with the highest total value winning all the pooled items. That's the core of every version.

On cs2.casino's case battles, the creator picks a list of cases and a format. Every seat pays the total price of those cases, and the battle opens them one per round, the same case for every seat in the same round. When the last round lands, the mode decides who takes the pot: everything opened by every seat.

Formats

FormatLayoutsWho takes the pot
Solo1v1, 1v1v1, 1v1v1v1One player
Teams2v2, 2v2v2, 3v3The winning team, split between its seats
Shared2 to 4 seatsNobody wins: every seat gets an equal share

A team's total is the sum of its seats. A winning team, or every seat in a Shared battle, splits the pot equally by value, rounded down to the cent. Skins opened in the battle go first to whoever has room for them, and other skins and coins make up the rest of each share.

Modes

  • Classic: the highest total wins.
  • Crazy: the lowest total wins. It's an option on Classic and Terminal battles.
  • Terminal: only the last case counts toward the winner, though everything opened still goes into the pot.
  • Jackpot: each team's chance of winning equals its share of the pot's value. Open 30% of the value and you win 30% of the time.

Ties are settled by a random draw among the tied teams. Fast plays the rounds quicker, and Private keeps a battle out of the public lobby. Empty seats can be filled with bots. Nobody pays for a bot seat, it opens cases exactly like any other seat, and if a bot wins, its share stays with the house.

What a case returns

Every case has an expected value: each item's value times its chance, added up. Take an example case, made up for the arithmetic, that gives 500 coins with a 0.1% chance, 20 coins with 9.9% and 1 coin with 90%:

EV = 0.001 × 500 + 0.099 × 20 + 0.9 × 1 = 0.5 + 1.98 + 0.9 = 3.38 coins

A casino prices a case above its expected value. The gap, as a share of the price, is the house edge; the expected value as a share of the price is the return to player (RTP), which is 1 minus the edge. The game shows its edge before you play. House edge and RTP works through the idea for other games, and CS2 case odds covers how odds for Valve's own cases became public.

Expected value in a battle

Say n players each pay C for the same cases, and the cases return a fraction r of their price on average, where r = 1 − edge. Each seat's own openings are worth r × C on average, so the pot is worth n × r × C on average. Expected values add up even though the items themselves are random.

In Classic, Crazy and Terminal, every seat opens the same cases from the same kind of draw and ties are broken at random, so no seat is favoured. Exactly one side wins, so the expected pot divides evenly: each seat's expected payout is n × r × C ÷ n = r × C. That's what the same cases would return opened alone.

Jackpot gets there without the symmetry. Your chance of winning is your total divided by the pot, so your expected payout is the pot times that fraction, which is simply your own total: r × C on average. Teams of equal size and Shared battles split the same expected pot evenly, so they come out the same.

Run the example case through a 1v1 of three cases each. Each player's openings average 3 × 3.38 = 10.14 coins, the pot averages 20.28, and each player's expected payout is 10.14. In every battle between players, whatever the winner gains on top of their own openings is exactly what the others lose; that part is zero-sum. The house's part is the edge already in each case's price, so on average a battle costs the edge times what you paid, in every mode.

What the format changes is the spread. In a four-player Solo battle you win about one battle in four and leave with nothing the other three times. Bots don't change your expectation, because a bot seat draws exactly like yours.

The UK review warns that player-versus-player features can create an illusion of control. Nothing you do after a battle starts affects the result, and no mode or format beats the edge. A lost battle isn't a debt to win back with a bigger one; deposit, loss and wager limits let you cap spending before you start.

How a battle can be checked

A battle can't use any one player's seed, because every seat draws from the same source. Instead, the server seed is fixed when the battle is created and its SHA-256 hash is shown before anyone joins. When the last seat fills, the battle takes the first drand beacon published after that moment. Drand's quicknet network, run by the League of Entropy, publishes a new random value every 3 seconds, and nobody can know a value before it's published.

The battle hash is HMAC-SHA256(server seed, drand randomness). Seat s in round r reads its first float from HMAC-SHA256(battle hash, "seat:s:r:0") and turns it into a case ticket, floor(float × 100000) + 1. The item whose ticket range holds that number is the item opened. Ties and Jackpot draws use a separate roll from the same hash.

The order matters. The commitment stops the house from choosing a seed after seeing the beacon, and the beacon stops anyone from knowing the outcome while seats, bots and the choice to join are still open. Each finished battle's page re-runs every step in the browser, and the provably fair page lists the formulas. Drand explained covers how the beacon itself is produced.

Sources