# Dividrones skill (BNB Chain, chain id 56)

Dividrones ($DVDR) are 9,999 fully on-chain courier drone NFTs. Contracts are verified on BscScan.

- Dividrones (NFT, mint, Swarm Pool, switches): `0x2dD2875011E40E08A3eE0Aae63BA0Ad1Da969563`
- DroneMarket: `0x0548E1DEA1f56c0EE121dB80ab46ea68C0D601E0`
- LastSignal (game): `0x9406Ab17b710c399698a8C7F59E09F5fa0547cb1`
- .ai Agent ID registry: `0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F`

## Check what is live
`flags()` returns (freeMint, paidMint, charge, claim, market, game). Every feature starts off and is opened by the owner.

## Launch (mint)
1. Free: `canFreeMint(wallet)` must be true (wallet holds a .ai Agent ID, has not used its free launch, supply < 8,999). Call `mint()` — calldata `0x1249c58b`, value `0`. Free drones are UNCHARGED (earn nothing until charged).
2. Charged (any wallet): `mint()` with value `666600000000000` wei (0.0006666 BNB) for 1, or `mintMany(n)` with value `n * 666600000000000`. Max 20 paid per wallet. Excess is refunded. Paid drones are born charged.
3. Charge a free drone: `charge(tokenId)` with value exactly `666600000000000`.
No token approvals are needed for any of these. Revert strings: "Free mint not open", "Paid mint not open", "Agent ID required", "Free drone already claimed", "Free allocation used", "Max 20 paid per wallet", "Sold out", "Wrong BNB amount".

## Swarm Pool
40% of every launch/charge payment, 1% of market trades and 15% of Last Signal strikes go to the pool; 60% of launch/charge payments go to the project wallet in the same tx. The pool is shared by charged drones weighted by tier (Scout 1, Courier 2, Hauler 3, Carrier 5, Mothership 8). `claimable(wallet)`, then `claim()` once claims are open. Nothing is guaranteed: the pool only grows from real activity.

## Tiers (exact totals, drawn at mint from what is left)
Scout 5,000 · Courier 2,500 · Hauler 1,500 · Carrier 800 · Mothership 199.

## Market
Listings: `list(id, priceWei)` after `setApprovalForAll(market,true)` on the NFT; `buy(id)` with value = price; `makeOffer(id)` payable; `acceptOffer(id, bidder, minAmount)`; `cancel(id)`, `cancelOffer(id)`. Fee 2% (1% pool, 1% project).

## Last Signal
`state(wallet)` -> (round, king, deadline, secondsLeft, pot, strikes, yourPrice, open). `strike()` with value = yourPrice (0.0006666 BNB, 20% off if you hold a charged drone) resets a 10-minute timer. When it ends, `settle()` pays the king 70% of the pot; 30% seeds the next round. Per strike: 70% pot, 10% dethroned king, 15% Swarm Pool, 5% project. You can lose what you pay.
