The 5 launch skills
Skill effects are executed entirely on the game server, never on-chain. On-chain, a skill is only an
effectType identifier (e.g. "WILD_DAUB"); the server maps that identifier to real game logic. See Architecture.
Skins (a separate, purely cosmetic line: board themes, daub effects, avatar frames, victory animations) carry no gameplay effect at all.

Wild Daub
Mark one cell on your own board without that number being called.Charge: 1×/match · Countered by: Nullify

Double Call
Call 2 numbers instead of 1 on your turn.Charge: 1×/match · Countered by: Nullify

Ghost Call
The number you call this turn is only marked on your own board, not on opponents’ boards.Charge: 1×/match · Countered by: Nullify

Cell Swap
Swap the numbers between 2 cells on your own board mid-match.Charge: 1×/match · Countered by: None (resolves immediately)

Nullify
Not used proactively; spent as a response to cancel one skill an opponent just used.Charge: 1×/match · Countered by: timing (must respond within the 15-second window)
One skill per turn
A player can use at most one skill on their own turn, and only while it’s their turn. Cell Swap resolves immediately; Wild Daub, Double Call, and Ghost Call each open a Nullify window (see below) before resolving, if an opponent is holding a Nullify charge.Nullify: the counterplay window
Whenever a player uses Wild Daub, Double Call, or Ghost Call, any opponent currently holding a Nullify charge gets a 15-second window to respond:- Nullify: spend their Nullify charge to cancel the skill entirely (the effect never happens; the original caster’s charge is still spent regardless).
- Pass: let it resolve normally.
- No response within 15 seconds: the window auto-resolves as a pass, so an AFK or silent opponent can never stall a match indefinitely.
Loadout: max 2, verified on-chain
Each player can equip at most 2 skills per match. Setting a loadout requires:- The room is in
standardmode (loadouts don’t exist in Casual rooms). - The player has linked a wallet (via a sign-a-nonce flow; no plaintext address is ever trusted).
- The chosen skill IDs pass on-chain verification: the server checks actual NFT ownership (
SkillCollection.balanceOfBatch), that the skill is markedactivein theSkillRegistry, and that it respects that skill’smaxPerLoadout, before the loadout is accepted.
playing phase): no swapping skills mid-match. Players who don’t set a loadout still play normally, without skills, same as a Casual room. Free players remain fully competitive, since Casual mode (no skills, no wallet required) is a complete, equal-footing way to play.
Why it isn’t pay-to-win
Two design choices keep this from becoming pay-to-win:- Effect strength is flat across rarity tiers. A common copy of a skill and a rare copy of the same skill do exactly the same thing in a match. Rarity changes flavor (visual identity, animation, cosmetic flourishes), never raw power.
- Hard caps everywhere. Max 2 skills per loadout, typically 1 charge per skill per match, and a direct counter (Nullify) to every proactive skill. Owning more NFTs does not let a player stack more advantage into a single match than these caps allow.
Premium identity per skill
Each skill is designed as its own character/mascot with dedicated visual assets: icon, card illustration, an in-match cast animation (an exploding daub, a spectral ghost-call, a spinning cell swap), and a frame/effect that gets more elaborate at higher rarity (static to animated to full effect). The NFT metadata structure reservesimage and animation_url slots plus rarity attributes for exactly this purpose from day one, so visual assets can be dropped in later without touching the contracts or server (see the GET /metadata/:id.json response shape).