Skip to content

Feature: Server Economy System (roles, emojis, minigames, consent gating) #8

Description

@wraithfive

Summary

Design and implement a server economy system (separate from battle) that lets members earn/spend currency on custom roles/colors/emojis/stickers, single-issue vanity roles, and playful minigames (jail/hunt/break) with consent gating. Must enforce Discord resource limits (roles/emojis/stickers) and allow gifting.

Goals

  • Persistent per-user balance with transaction log; gifting/transfers allowed
  • Catalog of purchasable items (roles/colors/emoji/sticker/vanity/single-issue)
  • Enforce capacity: roles (target ~75 free), emojis (150 still/100 gif), stickers (60)
  • Consent model for minigames (jail/hunt/break): open/partners-only/off
  • Single-issue roles with unique ownership and reassign/revoke logic
  • Gifting supported for all redemptions
  • Admin tools to manage catalog, pricing, stock, and grants

Pricing (initial catalog)

  • Custom role + color (special) + emoji: 55k
  • Custom role + color + emoji: 50k
  • Custom role + emoji: 50k
  • Custom role: 40k
  • Holo: 35k
  • Custom color (gradient): 30k
  • Custom color (single): 20k
  • Custom sticker: 40k
  • Custom emoji (gif or still): 30k
  • Magical Girl + emoji: 30k
  • Vanity roles set: 10–20k (e.g., Princess, Indulgent Master/Mistress, Devoted Daddy, Magnanimous Mommy, Maneater, Well Behaved, Good Girl/Good Boy, Angelic, Devilish, Chaos Cutie, Bad Influence, Hellraiser, Disciplinarian, Pain Slut, Broken Bitch, Professor Daddy, Stoned Princess, Magical Girl, Vixen, Prime Prey, Huntmaster, Jester, Hellion, Silly Goose)
  • Vanity emoji set: 5–10k each
  • Single-issue roles (one holder): Unbreakable 50k, Seraphim 50k, Server Slut 50k, I’m Baby 50k, Breaker of Spirits 60k
  • Staff perk: 1 custom color + 1 emoji free

Minigames (consent-gated)

  • Jail: Wanted 1k, Jail 5k (tag someone), Jailbreak 2k (clear tag)
  • Break: Break 10k (adds Broken Bitch), Redeem 8k (removes)
  • Hunt: Hunted 1k, Capture (roll +1k on success to crown), Release clears role

Earning

  • “Yap” accrual per message with rate limits/caps
  • Bounty board tasks (tech/help/art/ads/writing) with set rewards
  • Events: running (couple hundred), participation (10–50)
  • Admin grants; transfers between users (optional fee)

Data Model (proposed)

  • economy_account (guildId, userId, balance, lifetimeEarned, lastEarnedAt)
  • economy_transaction (fromUserId, toUserId, type, amount, meta, createdAt)
  • economy_reward_catalog (per guild: code, type, price, stockType, stockRemaining, refs to role/emoji/sticker template)
  • economy_consent (guildId, userId, system, mode)
  • economy_bounty (optional) for bounty board
  • economy_limits cache for role/emoji/sticker capacity

Commands (slash, sketch)

  • /econ balance [user]
  • /econ transfer <user> <amount> [note]
  • /econ earn grant <user> <amount> [reason] (admin)
  • /econ catalog list|add|update|remove (admin)
  • /econ redeem <catalog-code> [target] (supports gifting)
  • /econ redeem custom-role|color|emoji|sticker … (guided inputs)
  • /econ consent set <system> <open|partners|off>
  • /econ status limits (role/emoji/sticker capacity)
  • Minigames: /econ jail wanted|jail|jailbreak, /econ break break|redeem, /econ hunt hunted|capture|release

Enforcement

  • Check capacity before creation/assignment; respect single-issue stock=1
  • Consent required for jail/hunt/break targets
  • Rate limits on earning; daily caps for message accrual
  • Append-only transactions; balance derived from sum
  • Idempotent role/emoji/sticker assignment; handle gifting safely

Open Questions

  • Exact pricing for epic colors/gradients per item?
  • Partners-only consent: do we need partner lists or keep simple open/closed?
  • Should single-issue roles auto-revoke from previous holder when reassigned? (recommended: yes)
  • Daily cap for “yap” earnings; transfer fee yes/no?

Phased Rollout

  1. Schema + base services (accounts, txns, catalog, limits)
  2. Balance/transfer/redeem with capacity + single-issue enforcement
  3. Consent + minigame commands
  4. Earning hooks (messages, bounties, events)
  5. Admin catalog mgmt + reporting
  6. Optional web admin UI tab

Battle System Integration (low coupling)

  • Keep battle logic unchanged; publish BattleCompletedEvent with {guildId, winnerIds[], loserIds[], duration, turns, mode, battleResultId, timestamp}.
  • Economy listens and awards currency per guild rules (win/participation amounts, daily caps); append-only economy_transaction keyed by battleResultId for idempotency.
  • Anti-abuse: ignore awards for battles under N turns or T seconds; cap rewards per day/user; optional streak bonus.
  • Optional: separate battle token pool with conversion rate to main currency if inflation is a concern.
  • No pay-to-win: currency cannot buy combat power; only cosmetic/profile flair if enabled later.
  • Future optional hooks: tournaments with currency buy-in and pooled rewards; cosmetic titles/badges purchasable via economy.

Battle award config (schema sketch)

  • battle_award_rule (guildId PK, winAmount, participationAmount, streakBonusAmount, minTurns, minDurationSeconds, dailyCapPerUser, enabled, updatedAt)
  • battle_award_dedupe (battleResultId PK, guildId, awardedAt) to ensure idempotency for retries.

BattleCompletedEvent payload (example)

{
  "battleResultId": "uuid-123",
  "guildId": "1234567890",
  "winnerIds": ["111", "222"],
  "loserIds": ["333"],
  "durationSeconds": 180,
  "turns": 14,
  "mode": "duel", // e.g., duel/party/pve
  "timestamp": "2025-11-15T10:15:30Z"
}

Listener uses battleResultId for dedupe, applies per-guild award rule, and writes economy_transaction with a reference to battleResultId.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions