Lootbox Manager
(define-map remaining-mints principal uint)(define-read-only (can-mint-lootbox (address principal))
(let ((remains (map-get? remaining-mints address)) )
;; map-get address not is-none
(if (is-none remains) (ok false)
;; map-get > u1
(if (< u0 (unwrap! remains err-invalid-remains)) (ok true)
(ok false)))))(define-public (claim-lootbox )
(if (is-eq (ok true) (can-mint-lootbox tx-sender))
(let ((address tx-sender))
(is-ok (set-remaining-mints address (- (unwrap! (map-get? remaining-mints address) err-invalid-remains) u1)))
(as-contract (contract-call? .lootbox-background create-lootbox address)))
(ok false)))
(define-public (set-remaining-mints (address principal) (number uint))
(begin
(asserts! (is-eq tx-sender (var-get contract-admin)) err-admin-only)
(ok (map-set remaining-mints address number))))Last updated
Was this helpful?