Bounty Board
Rotating shared contracts that pay Bounty Tokens plus skill XP
Overview
Bounty boards are placeable poster blocks that offer a rotating set of contracts - short jobs that pay Bounty Tokens plus skill XP. Every player on the server sees the same board each rotation, accepts the contracts they like, and finishes the task anywhere in the world. Finishing a contract does not hand out the reward on the spot: it parks the bounty as ready to collect, and you collect the reward with a Collect button back at the board. Don't like a contract? Reroll just that one for a few tokens while the rest of the board stays put.
The board and its rotation belong to the shared ZiggfreedCommon library that ships beside this mod: it owns the postings, the draw, the reroll allowance and the accept gates, and this mod contributes the theme and the reward kinds. The board content - the contracts, the Bounty Token wallet, the board schedules, and the in-world board blocks - ships in the free, standalone MMO Skill Bounty Pack. Without that pack the feature is dormant: no boards, no contracts, nothing to place. Install both and bounties appear.
Where boards and contracts live
Server/ZiggfreedCommon/Boards/<Namespace>/<Id>.jsonBoards/One file per board: how often it turns over, how many contracts it posts and at which bands, what a reroll costs, which wallets show in its header, and what each band takes to accept.
Server/ZiggfreedCommon/Bounties/<Namespace>/<Id>.jsonBounties/One file per contract: its task, its reward, and the boards it hangs on. The file name is the id.
mods/ziggfreedcommon/boards.jsonThe server owner's last word: take a board down or retune it by id, one leaf at a time, without editing a pack an update would overwrite.
{
"daily": { "Reroll": { "Cost": { "Currencies": { "bounty_token": 40 } } } },
"weekly": { "Enabled": false }
}Everything you leave out keeps reading the way the pack shipped it, and case is ignored in an id. Precedence runs bottom to top: what the library ships, then a pack, then this file.
A contract is a quest
A contract is written with the same words a quest is - its text, its objectives, its rewards, its requirements - plus the one thing only a contract has: the list of boards it hangs on, with the band and the draw weight it takes on each. So one contract can sit on two boards at different bands, everything you already know about writing a quest applies, and a contract and a quest can never drift into two spellings of "kill eight of them".
{
"Parent": "Bounty_Kill",
"Text": {
"TitleKey": "quest.bounty_boar_hunt.title",
"FlavorKey": "quest.bounty_boar_hunt.flavor"
},
"Boards": [ { "Board": "Daily", "Difficulty": "Easy", "Weight": 2 } ],
"Objectives": { "main": { "Target": "Boar", "Amount": 15 } },
"Rewards": {
"Claim": [
{ "Kind": "Currency", "Params": { "Currency": "bounty_token", "Amount": 75 } },
{ "Kind": "Mmo_Xp", "Params": { "Skill": "UNARMED", "Amount": 600 } }
]
}
}The pay sits in the same two-bucket Rewards group a quest or an achievement uses, and a contract writes it into Claim: the reward waits at the board and is handed over by the Collect button. That is what every contract in the Bounty Contracts pack authors, and it is what the stamped behaviours below hold you to: nothing on a contract pays out before the board claim.
Five behaviours are stamped on every contract and no file can author them, because each one would otherwise be a lost reward one careless line away:
- It never pays out in the field. A contract that settled where you stood would vanish with the rotation and take the reward with it.
- It is never listed as an open quest. A contract is read at its board; listing it anywhere else is a second, wrong door.
- It cannot set its own repeat clock. The board's rotation is the clock, timed from finishing, so a private cooldown can never outlive a posting and burn the next period's slot.
- It is collected at the board you took it from, while that board is up. Any board of that id answers. From ZiggfreedCommon 2.3.0, once that board is taken down or its season is over, you can collect the contract anywhere instead: your Objective Book shows Collect on it, and
/quest claimpays it too. What counts is whether the board is still on the server, never where you are standing. - It never spends a quest-log slot. It is carried beside the log, so taking three contracts costs you no room for real quests.
Contract Types
Contracts come in a few shapes. Each one renders a localized task line with the count spelled out ("Defeat 12 Zombies"), so the board reads the same in every supported language.
| Type | Task |
|---|---|
| Kill | Defeat a number of a creature - desert scorpions, cave raptors, swamp crocodiles, and on the weekly board, marquee boss hunts. |
| Gather | Break a number of blocks, or mine ore. Some mining contracts end by delivering a share of what you dug. |
| Train a skill | Earn a chunk of XP in a skill. These are the everyday jobs - steady skill XP for quick work. |
| Delivery | Hand in gathered materials (Essence of Life, ore) at the board itself using a Hand in button. |
A contract pays out in the same open reward vocabulary everything else on the server uses, so a wallet amount, a flat skill-XP grant, a Skill Lamp, an item, a loot roll or a command are all available, and the board's reward list shows each with its icon. The Bounty Pack's hunting contracts pay a Skill Lamp beside their tokens: rub it and choose the combat skill that gets the XP. Spend the tokens you earn at the Token Shop - see Currencies for how Bounty Tokens are tracked.
Boards and Rotation
A board declares how often it turns over, how it draws, and its slots - one contract per slot per period. What a board shows is worked out from its id and the clock alone, with no stored schedule anywhere, so every player sees an identical board and a restart shows what was there before. A slot marked optional posts nothing rather than reading as broken when a period is short of eligible contracts.
A repeatable contract re-offers correctly once its board rotates back to it: repeat eligibility is tied to the board's period, not a per-contract cooldown, so a contract you already completed this period will not stick on "Completed" forever once the pool cycles past it. The Bounty Pack ships these boards ready-made:
| Board | Cadence | Focus |
|---|---|---|
| Daily | Turns over at midnight UTC | The main token faucet - a weighted mix of easy, normal, and hard contracts, plus two training slots that anyone can take. While Hallow's Eve runs on a server with Seasons of Orbis, a Seasonal slot at the end posts one haunt contract a day (Ghoul Season, Pumpkin Heads or Wandering Souls), also open to anyone; the rest of the year it stays empty. |
| Weekly | Turns over every Monday | Tougher, higher-paying warrants, including marquee boss hunts that pay out bigger than a regular hard contract. |
| Bihourly | Turns over every two hours | One low-stakes contract at a time, paying skill XP rather than tokens, so the Daily and Weekly boards stay the token source. |
Running a bigger world? Stand up several boards - the daily board in the town square, the weekly board at the guild hall. Each block opens the board it belongs to.
The goblin and boss hunts
The hard hunts go after Update 7's creatures. Glutton Smash, a hard daily, sends you after 3 Goblin Gluttons, the heavy goblins out in the world, and Coffer and Deepworks Gluttons count too. Glutton Cull, a hard weekly, wants 15 of them, for 700 Bounty Tokens and a Skill Lamp. The Feastmaster, a hard weekly boss contract, asks you to win one fight against the Feastmaster, the boss deep in the goblin Deepworks, for 1,200 Bounty Tokens and a Skill Lamp. To get there, craft the Deepworks fragment at the Goblin Tinkerer's Workbench in the goblin lab beyond the Forgotten Temple, then place it in an Ancient Gateway and step through. The weekly boss hunt The Voidtaken Grizzly has you track one down in the Guttering Hollows with a spyglass, bait the bear trap there with a Voidheart and bring it down; one kill settles it. Goblin Cleanup and Goblin Purge count the Scrappers the Feastmaster calls into its fight, along with every other goblin.
Glutton Smash and Glutton Cull open once you have brought down your first Goblin Glutton, and The Feastmaster once you have earned Feastmaster Down, MMO Skill Tree's achievement for your first win against it (see Boss ladders). Until then the board shows them locked with what to do, such as "Requires beating a Goblin Glutton".
The header balance strip
A board lists the wallets worth showing while a player chooses, and each one renders in the header on a line of its own, its picture beside the amount and the wallet's name ("250 Bounty Tokens"). Prices read the same way. The daily board lists both Bounty Tokens and Essence of Life, because one of its contracts asks the player to spend essence and both balances have to be readable at that moment; the Bihourly board lists only the wallet its reroll is charged in, which keeps the header honest about what is spent there.
Rerolling one posting
A board sets what a reroll costs and how many are allowed per period. Rerolling swaps a single contract for a fresh one and leaves the rest of the board alone. The allowance comes back when the period turns over.
What a band is called
Bands are free content words: a pack invents its own ladder, and nothing in the schema enumerates them. What each band reads as is written once on the board, in its grades map, keyed by the band's own word - never on a slot, so a board that posts whatever it holds with no slots at all can still name its bands.
The library ships a word for the common bands (training, easy, normal, hard, elite) in all nine supported languages, so a board using those needs to author nothing. A band a pack invented reads as its own word until the board names it, which means an unnamed band is always a readable word on screen rather than a raw key.
Opening the Board
A board is never opened with a plain player command. Players reach it three ways:
- The board block. The pack ships placeable poster blocks; pressing use on one opens the board it belongs to.
- A Bounty Master / Trader NPC. An NPC with the board wired to its interaction opens the same board inline.
- The Adventurer's Guide hub tile. The hub NPC at world spawn has a bounty preview tile that routes into the board.
Admins (or the console) can open the board for any player with /mmobountyui <player> [board], mirroring /mmoshopui. The player-facing /mmobounty list/accept/reroll subcommands do not exist; /mmobounty is console/admin-only diagnostics.
Gates
A board can require something of a player before they accept a contract, mostly per band. The requirement is the same shared block every other piece of content on the server uses, so a band can be gated on anything a requirement can read: a combat level, a skill level, a finished quest, a permission, an earned achievement, or several of those combined. The pack's daily and weekly boards gate normal at combat level 25 and hard at 60; training and easy stay open to everyone.
From ZiggfreedCommon 2.3.0, one contract can also be gated on its own. Its entry on a board can carry a requirement that stands in place of its band's gate on that board, and an empty one opens the contract to everyone. The pack uses this to gate its gathering contracts on Mining instead of combat: Copper Cache, Iron for the Forge and Silver Consignment ask for Mining 25 in the normal band, and Adamantite Run, Adamantite Consignment, Adamantite Quota and Gold Quota ask for Mining 60 in the hard band. Drill the Pick, Dig Deep, Hold the Line and Sword Mastery are open to everyone whatever their band, as Sharpen the Axe already is. Hide Haul and Essence Consignment keep the normal band's combat level 25.
The check happens at accept time only. A contract a player is not ready for is still posted and still shown, locked, so they can see what to work towards; filtering it out of the draw would make the board read as empty for exactly the players it is meant to give a goal to. The requirements a board checks, in order, are its own gate, the contract's entry gate (or its band's, when the entry has none), the contract's own Requires and the gate on the slot the contract is posted in. A contract's own Requires applies on every board it hangs on: the five skill-training contracts ask there for level 1 in the skill they train, which every player starts with. A plain feature or mod switch at the top of a contract's Requires is not a lock: it decides whether the contract is posted at all, which is how the haunt contracts leave the board when Hallow's Eve ends.
A locked contract shows a Locked status instead of the misleading "Available", and its detail lists every unmet reason inline (the board's gate, the entry's or band's, the contract's own and the slot's) in the same wording the NPC quest page uses.

The Board UI
Interacting with a board block opens a two-panel page with a Posted / Mine tab split at the top.
Posted tab
- Ready to collect - the first section of the list, showing the posted contracts you have finished but not yet collected. Below it the list reads Hand in here, In progress, Available, Locked, Done this rotation and Completed, in that order.
- List panel - each of the rotation's contracts shows its task, a band pill, its reward icon, and a lock badge if you cannot take it yet.
- Detail panel - the selected contract's full task, flavor text, and reward breakdown, with live
X/Yprogress on each objective as you play. - Take it / Reroll - take what you want; reroll a single contract for tokens, up to the board's allowance, swapping it for a fresh one while the rest of the board stays.
- Hand in - delivery contracts surface a Hand in button bound to the contract's delivery objective, so you hand items in at the board.
- Collect - every completed contract parks and requires the Collect button; the reward never grants automatically out in the field. If a contract grants an item and your inventory happens to be full when you collect, the reward stays parked with a clear message until you have space, so an item reward is never silently lost.
Mine tab
A flat list of every bounty you are carrying from this board, finished or not, independent of the current rotation - so an accepted contract stays in reach even after it rotates off the posted list, and a completed one is never lost. From here you can Abandon an accepted bounty at any time, whether or not it is still in rotation.
Accepted contracts also appear in your quest log under their real name with a simple Bounty and band tag, but only while in progress or ready to collect - a bounty you have not accepted never shows as a permanently "Available" entry there, and a contract never occupies a quest-log slot of its own. A finished one waiting there reads Elsewhere, with the board it was taken from named under it ("Collect it at Old Jack's Board"), since it is collected at that board while the board is up. Once the board is taken down or its season is over, the same row shows Collect instead. A contract's page lists each step it asks for, and a contract can be set to go on your quest tracker when you take it; the bounty pack's own boards leave that off, and Old Jack's board in Seasons of Orbis turns it on.

Achievements and Daily Streaks
Completing contracts feeds achievement progress. The plugin jar ships board-agnostic bounty achievements that work with any board: a count ladder, a hard-difficulty chain, a server-first, and a daily streak that rewards completing bounties on consecutive days. The Bounty Pack adds per-board chains on top - a Daily Contractor ladder and a Weekly Warrant ladder - that key on the specific board id.
Each completion fires once and updates both your achievements and the Bounties_Completed statistic. See Achievements for how the chains, points, and pinning work.
Admin and Validation
The shared economy's own admin family is the full surface, and this mod's /mmobounty is an alias over the same audit.
| Command | What it does |
|---|---|
/zigcommerce boards [--board=<id>] | List the boards, their cadence, their slots and whether each is enabled. |
/zigcommerce resetrerolls | Give a player their reroll allowance back for the period; their shelf goes back to the shared draw. |
/zigcommerce validate | Audit every wallet, storefront and board at once. |
/mmobounty validate | The same audit, under this mod's spelling. |
/mmobounty reset | Says where the content comes from; boards reload with the asset stores, so there is nothing to reset by hand. |
The audit reports an empty board pool, an unfillable required slot, a missing or disabled reroll wallet, an unknown rotation or draw type, two files landing on one id, and malformed reward or icon ids - so a content pack's boards are checked before players ever open them. It also runs once by itself when the first player joins, and its findings go to the server log.
There is deliberately no "rotate this board now". A posting is a pure function of the board's id, its cadence and the clock, which is exactly what makes every player see the same board; clearing a player's rerolls is the real admin move underneath that wish.
Taking a whole board down is { "Enabled": false } for its id in mods/ziggfreedcommon/boards.json, and the admin menu's Bounties switch turns the block interaction, the page and the commands off together.
Prefer a content pack: author one file per contract under Server/ZiggfreedCommon/Bounties/ inside a pack folder, zip it, and drop the .zip into your server Mods/ folder. Building the zip.