XPHero Fans logo XPHero Fans
Blog · Data

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.

4/4claims confirmed
13new A/B override tables
−80%codex gems
65→35gems per tower run
−90%gem step per 5 levels

The message

gem add used to give 35 gem now it gives 10
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
Thanks, TUNA [DOTA]. This post exists because you wrote down the exact numbers you were seeing instead of just saying the game feels worse. Every claim in a message like that is a testable statement, and four of four passed — which is how we found a reward layer we had missed entirely. Two details came out slightly different from your message, both covered below. Check the figures yourself on the Bestiary and Progression pages; they now read the values you're actually getting. Come argue with us on the Discord.

The four numbers

PayoutTablebefore now
Ad reward, gem slotIngameRVData 3510
Level-up, gem stepLevelUpRewardData 10010
Tower run (floor 151)ChallengeTowerStageData 6535
Codex milestoneCodexData 102

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.

Every shipped override row is group 1, and the client's remote config selects it: 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.