The gem cut, verified: what Version 27.0.0 actually pays now
On November 3 a player posted four numbers in our Discord and called the free-to-play gem economy dead. We said we'd check. We did — every payout they named really did fall, the cause is in the APK rather than a server tweak, and two of the details are worth correcting.
The message
10 levels used to give 100 gems now it gives 10
tower matches used to give 65 gem x 3 =195 with add now it gives 35
its like extremely hard to free to play earn gems now
codex gives 1-2 gem lol — TUNA [DOTA], in the XPHero Fans Discord, November 3
The four numbers
| Payout | Table | before | now |
|---|---|---|---|
| Ad reward, gem slot | IngameRVData |
35 | 10 |
| Level-up, gem step | LevelUpRewardData |
100 | 10 |
| Tower run (floor 151) | ChallengeTowerStageData |
65 | 35 |
| Codex milestone | CodexData |
10 | 2 |
All four live in one place: the _AB_ tables that arrived with
Version 27.0.0.
What an _AB_ table is
Version 27.0.0 ships 13 tables with an _AB_ suffix
— 4,561 rows between them — and none of them existed in 25.3.0 or
26.2.0. They are not copies. Each row carries a ref_id pointing
back at a base table's id, an ab_test_group, and
only the columns it overrides. The number a player sees is the base
row with the override merged over it.
So the base tables are untouched — 3 of these four are
byte-identical across 25.3.0, 26.2.0 and 27.0.0 (only
CodexData was rebuilt, and it kept its 10-gem payouts) — which is
why anything that reads only the base data still prints the old numbers.
That was us until today. The overrides are the live economy.
INGAME_RV_GROUP = 1.
No other group's rows ship in the client, so there is nothing to fall back
to — the base table is the pre-27 economy, and group 1 is what the build
serves. Supercent could
still flip individual accounts from the server, which we can't see from the
files; your own report is the proof it's live for you.Line one: the ad gem
One correction in your favour. The 35 was never a flat payout. An ad rolls one reward from a weighted list, and gems sit on a 0.10 weight — at the first level that pays them the roll is 60% gold, 30% bluestone, 10% gems. The gem slot itself held 35 gems; it now holds 10.
So the honest measure is expected value: 3.5 → 1.0 gems per ad, a 71% cut. The amount you see when it does hit is exactly the 35 → 10 you reported, on 393 level rows.
Gift chests took the same treatment through a different column: their
rv_amount is 30 on 400 rows before the override, 10 after.
Line two: it's every 5 levels, not 10
The one place your message is imprecise: a gem step lands every
5 levels, not every 10 — LEVELUP_REWARD_INTERVAL is
5. The ratio you remember is exactly right, though. Each gem row
was 20 × 5 = 100; the override drops the amount to 2, so the
step now pays 10. Over a full 10 levels that's
200 → 20, across 80 steps. The ×5
multiplier is why the game shows 10 rather than 2.
Those 80 steps are the whole ladder from level 5 to 400. There is no row in the table that escapes the override.
Line three: the tower
Floor 151 paid 65 gems in the base table and pays
35 now — 10 floors carried that exact amount, which is
why the number was recognisable. CHALLENGE_TOWER_VICTORY_RV_MULTIPLIER
is still 3, so the ad-doubled figure goes
65 × 3 = 195 →
35 × 3 = 105.
And it isn't only floor 151. All 250 floors carry an override row: the gem column drops from 65 to 35 on the floors that paid 65, from 40 to 10 at floor 1, and the total gems across the tower fall from 15,000 to 7,500 — exactly half.
Line four: the codex
You said 1–2 gems; it's 2. All 1,880 codex milestones used to pay 10 and now pay 2, so the full ladder is worth 3,760 gems instead of 18,800 — an 80% cut, and the steepest of the four.
The part you didn't mention: a new gem sink
Cutting income is only half of what 27.0.0 did to free-to-play. The same layer re-prices 12 chest slot unlocks in gems — 100 to 1000 each, 5,570 gems for the lot — where the base table charged orb currencies (201–205). Those unlocks used to cost no gems at all. Shop reward amounts came down too (20→15, 30→20, 50→30, 3 rows), while monster drops and 20 minimap rewards moved the other way — for example a drop amount of 50 where the base table had 5, across 87 enemy rows.
So "extremely hard to earn gems" is a fair reading, and the changes are coordinated rather than scattered: faucets cut 50–90%, with a 5,570-gem sink added on top.
Follow-up: the same layer did plenty the four numbers didn't cover — respawn timers (median ×5), chest reveal times (up to ×8), the chest-slot gem sink and the 7-day event's raised mission rewards. That is all in V27's other half.
What we changed here
Four pages were printing base-table rewards and were therefore wrong for anyone on 27.0.0: the Bestiary (codex milestones, 10 → 2), Progression (level-up gems, 20 → 2), the Challenge Tower (every floor's reward row) and the tracker's next-level reward. All four now read through the overrides instead of the base rows.
We also fixed the table diff browser,
which had been dropping these tables entirely. Override tables have no 26.2.0
counterpart, so its matcher skipped them and kept reporting their base tables
as unchanged — IngameRVData read 3,200 → 3,200 while 1,672 of its
rows were being overridden. The 13 now appear in the browser as new tables,
and the page's unchanged count is a real count again instead of a structural
zero.
Sources: IngameRVData,
GiftChestData, LevelUpRewardData,
ChallengeTowerStageData, CodexData,
ChestSlotUnlockCostData, ShopProductRewardData,
EnemyData, MinimapRewardData,
StackableItemData and RemoteConfig, all from the
27.0.0 extraction. Base and override rows are joined here exactly as
the site does it (ref_id → id, group 1). XP Hero is
developed by Supercent — XPHero Fans is unofficial and not affiliated with or
endorsed by them. Remote config can change between builds and regions.