An ACE (Asheron's Call Emulator) server mod branched from QuestBonus by aquafir. Loremaster extends the quest-driven XP system with account-wide tracking, level-scaled completion rewards, weighted repeat-solve loot, milestone broadcasts, and per-player notification preferences.
Every quest you solve earns Quest Points (QP). Your accumulated QP converts into a persistent multiplier applied to all XP and luminance gains:
Multiplier = 1 + (QuestPoints x BonusPerQuestPoint / 100)
Example with the default BonusPerQuestPoint of 3.0:
| Quest Points | XP Multiplier |
|---|---|
| 0 QP | 1.00x |
| 10 QP | 1.30x |
| 50 QP | 2.50x |
| 100 QP | 4.00x |
Individual quests can be weighted in Settings.json. A quest set to 0 is tracked but awards no QP — useful for suppressing timers, stipends, or other low-value quests.
When UseAccountWideQuests is true (default), Quest Points and the XP multiplier are calculated from the combined unique quests solved across all characters on the same account, not just the logged-in character.
- Progress on your main character benefits all your alts automatically.
- Each unique quest name is counted once regardless of how many characters solved it.
- Recalculated on login by scanning all online and offline characters on the account.
- Can be disabled to restore the original per-character behavior.
On a quest's first ever solve, the player receives a flat XP grant in addition to the ongoing multiplier. This does not fire on repeat solves.
- The bonus scales with the player's current level:
multiplier x (XP needed for next level). - A global default multiplier is set via
DefaultCompletionBonusXpMultiplier. - Per-quest overrides are supported via
CompletionBonusXpOverrides. - Set a quest's multiplier to
0to suppress the bonus for that specific quest. - Can be disabled entirely with
EnableCompletionBonusXp: false.
Note: the completion bonus goes through the normal GrantXP path, so it is also subject to the ongoing QP multiplier. Higher-progress players earn slightly more from each new quest.
On every repeat solve (second completion onward) of a quest, one item from a weighted loot table is delivered to the player's inventory. If the inventory is full, the item drops at their feet with a notification.
- Loot tables are defined in
RepeatSolveLoot.jsonusing weighted groups of WCIDs. - All items within a group are equally likely; the group Weight controls its frequency relative to other groups.
- Per-quest overrides are supported — a specific quest can have its own loot table that replaces the global one entirely.
- Groups with
Weight: 0are disabled but remain in the file for reference. - Can be disabled entirely with
EnableRepeatSolveLoot: false.
Default loot table:
| Group | Weight | Contents |
|---|---|---|
| Currency | 1000 | Trade Note (250,000) |
| Salvage - Common | 800 | Granite, Iron, Mahogany, Steel, Ivory, Leather, Sandstone |
| Foolproof Gems | 100 | All 13 foolproof gem types |
When a player's account reaches a configured milestone of unique quests solved, a message is broadcast server-wide and an optional bonus QP reward is granted.
- Milestones are account-wide, not per-character.
- Default thresholds: 25, 50, 100, 250, 500, 750, 1000 — then every 500 up to 10,000.
- Default bonus QP: 5 QP at the first three milestones (25, 50, 100), then 10 QP for all subsequent ones.
- The broadcast message format is configurable.
- Can be disabled entirely with
EnableMilestoneBroadcasts: false.
Default broadcast format:
[Loremaster] {0} has just completed their {1} unique quest and earned {2} bonus quest points!
All verbose notifications are opt-in and toggled per character. Preferences persist across sessions. No server-wide setting controls these — each player configures their own.
| Command | What it toggles |
|---|---|
/qb NotifyQuest |
QP gains and losses |
/qb NotifyKillXp |
XP multiplier message on kills |
/qb NotifyQuestXp |
XP multiplier message on quest completion |
/qb NotifyKillLuminance |
Luminance multiplier message on kills |
/qb NotifyQuestLuminance |
Luminance multiplier message on quest completion |
/qb NotifyAll |
Toggle all of the above on or off at once |
When a notification fires, the message format is:
Earned 426,711 XP! (300,501 * 142%)
| Command | Description |
|---|---|
/qb |
Shows your Quest Points, XP multiplier, account-wide unique quest count, and per-character quest count. |
/qb list |
Lists all quests on your character with their completion count and QP value. |
/qb help |
Shows all available subcommands. |
/qb NotifyAll |
Toggle all personal notifications on or off. |
/qb Notify<Flag> |
Toggle a specific notification. See above for the full list. |
| Command | Description |
|---|---|
/qb-inspect <name> |
Shows stored QP, XP multiplier, character quest count, and account-wide unique count for an online player. |
/qb-reset <name> |
Recalculates and re-stores QP for a specific online player. Notifies both admin and player. |
/qb-resetall |
Recalculates QP for all currently online players. Safe to run after changes to Settings.json. |
All settings live in Settings.json in the mod folder. The file is auto-generated with defaults on first run. Hot-reload is supported — run /qb-resetall after changing values to apply them to online players immediately.
| Setting | Type | Default | Description |
|---|---|---|---|
BonusPerQuestPoint |
float | 3.0 |
Percentage of XP bonus per QP. Formula: 1 + (QP x BonusPerQuestPoint / 100). |
DefaultPoints |
float | 1.0 |
QP awarded for any quest not listed in QuestBonuses. Set to 0 to only reward explicitly listed quests. |
QuestBonuses |
dict | see below | Per-quest QP overrides keyed by internal quest name. See Quests.txt for all valid names. |
| Setting | Type | Default | Description |
|---|---|---|---|
UseAccountWideQuests |
bool | true |
Count unique quests across all characters on the account. Set to false for per-character mode. |
| Setting | Type | Default | Description |
|---|---|---|---|
EnableCompletionBonusXp |
bool | true |
Master toggle for the one-time XP grant on first solve. |
DefaultCompletionBonusXpMultiplier |
float | 1.5 |
Multiplier applied to the player's XP-to-next-level cost. 1.5 = 150% of the current level-up cost. |
CompletionBonusXpOverrides |
dict | see below | Per-quest multiplier overrides. Set to 0.0 to suppress the bonus for a specific quest. |
| Setting | Type | Default | Description |
|---|---|---|---|
EnableRepeatSolveLoot |
bool | true |
Master toggle for repeat-solve item rewards. |
Loot tables are configured in RepeatSolveLoot.json. See that file for documentation on the weight system and per-quest overrides.
| Setting | Type | Default | Description |
|---|---|---|---|
EnableMilestoneBroadcasts |
bool | true |
Master toggle for server-wide milestone messages. |
MilestoneThresholds |
list | see below | Account-wide unique quest counts that trigger a broadcast. |
MilestoneBonusQP |
dict | see below | Bonus QP granted per milestone. Missing entries award no QP but still broadcast. |
MilestoneBroadcastFormat |
string | see below | Format string. {0} = character name, {1} = ordinal milestone (e.g. "50th"), {2} = bonus QP awarded. |
The loot table file supports a flexible weighted group system. Groups with Weight: 0 are disabled. The effective drop chance for a single item is:
GroupWeight / TotalPoolWeight / ItemsInGroup
Per-quest overrides are defined under QuestOverrides keyed by internal quest name. When a quest has an override, its groups replace the global groups entirely for that quest.
Suggested weight tiers:
| Tier | Weight |
|---|---|
| Common | 1000 |
| Uncommon | 100 |
| Rare | 10 |
| Ultra-Rare | 1 |
- Download the latest release zip and extract it to
C:\ACE\Mods\Loremaster\. - Start or reload your server.
Settings.jsonis auto-generated on first load. - Edit
Settings.jsonto taste, then run/qb-resetallin-game to apply changes to online players.
The .csproj pulls ACEmulator.ACE.Shared from NuGet automatically. It expects your ACE server binaries at C:\ACE\Server\. If your server lives elsewhere, update ACEPath in the .csproj.
- Open the solution in Visual Studio or run
dotnet buildfrom the project folder. - The compiled output is written directly to
C:\ACE\Mods\Loremaster\. - Hot-reload is supported via
/mod f Loremaster.
| Feature | QuestBonus | Loremaster |
|---|---|---|
| XP multiplier from Quest Points | Yes | Yes |
| Luminance multiplier from Quest Points | No | Yes |
| Per-quest QP weights | Yes | Yes |
| Account-wide unique quest tracking | No | Yes |
| One-time XP on first solve (level-scaled) | No | Yes |
| Weighted repeat-solve loot | No | Yes |
| Milestone broadcasts with bonus QP | No | Yes |
| Per-player notification toggles | No | Yes |
| Admin inspect / reset commands | No | Yes |
Built on top of the ACE modding framework by aquafir. Quest Point system and core architecture derived from QuestBonus.