v1.2.0 β Daily & Weekly Missions
v1.2.0 β Daily & Weekly Missions
Second post-GA content release. DealersMissions is live on Abstract mainnet β a daily/weekly objective board scored entirely by observing the counters the game modules already keep, so no existing contract changed.
π― Missions (DealersMissions)
- Snapshot-delta scoring (the BankHeist observation pattern):
checkInsnapshots a full-metric baseline for the current daily and weekly epoch, the dealer plays normally, thenclaimre-reads the live counters and pays the difference. PVE / PVP / Heists / Core are read-only β no game module was modified or called back. - 12 metrics β PVE games/wins, PVP attack/defend wins and games, heist runs/stages/cash-outs, reputation and infamy gain,
ANY_GAMES(the three attempt-spending actions summed, so heist- and PVP-leaning players aren't taxed), andMISSIONS_CLAIMEDfor capstones. - Rewards through Core β any mix of reputation, infamy, $CASH and loot drugs, paid over the existing authorization path.
- Epochs advance themselves β daily = 00:00 UTC, weekly = unix-anchored (rolls Thursday 00:00 UTC). No admin tx ever advances a board, and the active set derives deterministically per epoch from the template pool (partial Fisher-Yates over the enabled templates), so every player grinds the same missions.
- The boundary is a hard deadline β a met-but-unclaimed mission dies at the roll. Progress is measured against live counters, so honouring a stale epoch would let one play score twice.
- Guardrails β daily action targets capped to the 5 free attempts (
maxDailyTarget); one capstone per cadence with its target strictly below that board's size, enforced on add and on resize; pool bounded at 64 templates; mid-epoch template edits are safe because baselines snapshot every metric and claims are keyed by template id, so a shifted board can never double-pay. - One-call board β
getMissionStatus(tokenId)returns every active daily + weekly with live progress, check-in state and claimability.MissionClaimed/MissionsClearedcarry the full payout for indexers. - Mainnet:
0xaf461430D2e2cCd89CFE3Ee335F77a8BF3031F5bΒ· Testnet:0xDb6e3f433E9eA73FB60C2B9C3b1A24A7Fe66F8Bb
π Launch board (pinned β SetupMissions)
Enabled templates exactly equal the active counts, so the board is pinned rather than rotating; only progress resets on the epoch boundary.
- Daily (1) β
ANY_GAMES3 β 10 rep + 1 Goods. Deliberately slack at 3 of the 5 free attempts, leaving room for a wanted poster or a jail stint. - Weekly (5) β PVE games 25, PVE wins 5, heist stages 5, PVP attack wins 3, plus the capstone that pays 1 Jewel once the other four are claimed. Sized as the wall: ~35 attempts against the ~35 a free week provides.
π Ops
DeployMissionsβ deploys, authorizes on Core, ships paused with an empty pool; mainnet gated behindCONFIRM=DealersMissions.SetupMissionsβ idempotent template seeder (skips when the pool is non-empty); retune live withsetTemplate, no redeploy needed.Wiring.s.solgains_syncMissionsRefs, so every neighbouring redeploy re-points Missions, andSetupWiringcovers it in the full-graph drift check.verify-source.shgains amissionstarget.- New
/dealer-compareskill β rank wallets side by side on lifetime spend, activity and XP-eligible events.
β Testing
74 mission tests (68 unit + 6 integration flows). Full suite: 640 passing, 0 failing β forge test --zksync --skip "RendererSVG" --skip "UploadTraits".
Deploying
Build and deploy from this tag so on-chain bytecode maps to source. Game contracts: forge build --zksync --skip "RendererSVG" --skip "UploadTraits". See script/DEPLOY.md.
Full changelog: v1.1.0...v1.2.0