Tier System
The Tier System assigns rarity levels to quests based on their difficulty. Each tier has a unique color, a reward multiplier, and a weight that controls how often quests of that tier appear in daily and weekly pools. Server owners can fully customize tiers or use the built-in defaults.
Default Tiers
Out of the box, the system provides four tiers:
| Tier | Difficulty | Color | Reward Multiplier | Weight | Chance |
|---|---|---|---|---|---|
| Common | easy | Gray #A0A0A0 | 1.0x | 50 | ~50% |
| Rare | medium | Blue #4169E1 | 2.0x | 30 | ~30% |
| Epic | hard | Purple #9932CC | 3.0x | 15 | ~15% |
| Legendary | legendary | Gold #FFD700 | 5.0x | 5 | ~5% |
The reward multiplier scales all rewards for that quest. A Legendary quest with a base reward of 3 iron ore would grant 15 iron ore (3 x 5.0).
How Tiers Are Assigned
Each quest definition has a difficulty field. The tier system maps this difficulty string to a tier:
Quest difficulty: "easy" --> Tier: Common (1.0x rewards)
Quest difficulty: "medium" --> Tier: Rare (2.0x rewards)
Quest difficulty: "hard" --> Tier: Epic (3.0x rewards)
Quest difficulty: "legendary" --> Tier: Legendary (5.0x rewards)
Alternative difficulty names are also recognized:
| Input | Maps To |
|---|---|
normal, simple, basic | Common (easy) |
uncommon, moderate, challenging | Rare (medium) |
difficult, very_hard, expert | Epic (hard) |
extreme, mythic, artifact, ancient | Legendary |
If a quest has no difficulty or an unrecognized value, it defaults to Common.
Configuration
The tier system is configured in config.json under tierSystem:
{
"tierSystem": {
"enabled": true,
"tiers": [
{
"id": "common",
"difficulty": "easy",
"color": "#A0A0A0",
"multiplier": 1.0,
"weight": 50,
"name": { "en": "Common", "de": "Gewoehnlich" }
},
{
"id": "rare",
"difficulty": "medium",
"color": "#4169E1",
"multiplier": 2.0,
"weight": 30,
"name": { "en": "Rare", "de": "Selten" }
},
{
"id": "epic",
"difficulty": "hard",
"color": "#9932CC",
"multiplier": 3.0,
"weight": 15,
"name": { "en": "Epic", "de": "Episch" }
},
{
"id": "legendary",
"difficulty": "legendary",
"color": "#FFD700",
"multiplier": 5.0,
"weight": 5,
"name": { "en": "Legendary", "de": "Legendaer" }
}
]
}
}
Tier Definition Fields
| Field | Required | Description |
|---|---|---|
id | Yes | Unique identifier (e.g., "common", "rare") |
difficulty | Yes | Difficulty string that maps quests to this tier |
color | No | Hex color for UI display (default: #FFFFFF) |
multiplier | No | Reward multiplier (default: 1.0) |
weight | No | Selection weight for pool draws (default: 10) |
name | No | Localized display names by language |
The name field supports any number of languages. If no localization key (tier.<id>.name) exists in the translation files, the inline name map is used as fallback.
Tier-Based Pool Selection
When the tier system is enabled, daily quest pool selection works differently than simple random:
- For each quest slot, a tier is randomly selected based on the configured weights
- The system finds quests in the pool that match the selected tier's difficulty
- One quest is randomly picked from the matching pool entries
- If no quests are available for the selected tier, the system falls back to other tiers (lowest first)
This ensures that higher-tier quests appear at the configured frequency. A pool with many Common quests and few Legendary quests will still offer Legendary quests approximately 5% of the time when using default weights.
When the tier system is disabled, all quests in the pool have equal selection probability regardless of their difficulty.
Custom Tier Systems
You can define any number of tiers with custom names, colors, and multipliers. The tiers are ordered by their position in the array (first = lowest, last = highest).
Example: 5-Tier System
{
"tierSystem": {
"enabled": true,
"tiers": [
{ "id": "basic", "difficulty": "easy", "color": "#808080", "multiplier": 1.0, "weight": 40 },
{ "id": "uncommon", "difficulty": "normal", "color": "#2E8B57", "multiplier": 1.5, "weight": 25 },
{ "id": "rare", "difficulty": "medium", "color": "#4169E1", "multiplier": 2.0, "weight": 20 },
{ "id": "epic", "difficulty": "hard", "color": "#9932CC", "multiplier": 3.5, "weight": 10 },
{ "id": "mythic", "difficulty": "legendary", "color": "#FF4500", "multiplier": 7.0, "weight": 5 }
]
}
}
Example: Simple 3-Tier System
{
"tierSystem": {
"enabled": true,
"tiers": [
{ "id": "normal", "difficulty": "easy", "color": "#FFFFFF", "multiplier": 1.0, "weight": 60 },
{ "id": "hard", "difficulty": "hard", "color": "#FF6600", "multiplier": 2.5, "weight": 30 },
{ "id": "extreme", "difficulty": "legendary", "color": "#FF0000", "multiplier": 5.0, "weight": 10 }
]
}
}
If the tiers array is empty or not provided, the system falls back to the built-in 4-tier defaults (Common/Rare/Epic/Legendary).
Tier Display in the UI
Tiers affect how quests appear throughout the UI:
- Quest Book -- Quest names are colored with the tier color
- Quest Tracker HUD -- Active quests show their tier color
- Pool entries -- Daily/weekly quest pool entries include tier indicators
- Notifications -- Quest completion notifications reference the tier
Integration with Mod Editor
The Mod Editor admin panel includes a Tier Generator feature. This tool creates multiple difficulty variants from a single quest template:
- Create a base quest (e.g., "Mine Stone" with 50 stone)
- Use the tier generator to produce variants:
daily_mine_stone(Common) -- 50 stone, 1x rewardsdaily_mine_stone_rare(Rare) -- 100 stone, 2x rewardsdaily_mine_stone_epic(Epic) -- 200 stone, 3x rewardsdaily_mine_stone_legendary(Legendary) -- 500 stone, 5x rewards
The generator scales both objective counts and rewards based on the tier multiplier, then adds all variants to the appropriate quest pool.
When creating custom tiers, make sure your quest definitions use matching difficulty values. A quest with "difficulty": "mythic" will only map to a tier that has "difficulty": "mythic" (or a recognized fallback alias). Unmatched difficulties default to the lowest tier.