Blackfire sends structured game data over GMCP (telnet option 201) beside the
text of the game, for client scripts and panels such as Mudlet's. Every message is
Package.Name followed by JSON.
Packages
| Package | What it carries |
|---|---|
Char.Vitals | Health, mana and movement (as strings), with every prompt |
Char.Status | Name, level, class, race, alignment and position |
Char.Affects | The spells and skills affecting you, with their durations |
Room.Info | The room's number, name, area, exits and features |
Room.AddPlayer, Room.RemovePlayer | Players arriving and leaving |
Comm.Channel.Text | Channel messages: says, tells, gossip and the rest |
Char.Quests | Your quests and their objectives (ask for it, below) |
Char.Achievements | Your achievements and progress towards them (ask for it, below) |
Quests and achievements
The quest packages are sent only to clients that ask for them. Send this once GMCP is on (in Mudlet, from a script):
Core.Supports.Add ["Char.Quests 1", "Char.Achievements 1"]
In Mudlet: sendGMCP([[Core.Supports.Add ["Char.Quests 1", "Char.Achievements 1"] ]]).
Core.Supports.Remove ["Char.Quests"] stops them again.
You are then sent Char.Quests.List with every quest you have started, and again
each time you enter the game:
{"quests": [
{"id": 1, "title": "First Steps", "status": "completed",
"completed": "2026-10-17T12:00:00Z"},
{"id": 2, "title": "Finding Your Way", "status": "active",
"objective": "Type GUIDE to ask the way to the bank.",
"goals": [{"text": "Use the guide command", "done": 0, "needed": 1}]}
]}
After that, Char.Quests.Update sends one quest, in the same form, whenever it
changes: when it starts, when a goal counts, when a step is done and when it is
completed. A quest you no longer have is sent as {"id": 2, "status": "removed"}.
Keep the list by id and replace entries as updates arrive.
statusisactiveorcompleted.objectiveis what the quest asks of you now, asJOURNALshows it.goalslists what the current step needs, with how much of each is done. A step that asks for a level ends with a goal such asReach level 10, whosedoneis your level.completedis when you completed it, in UTC.descriptionandobjectiveare left out when empty, andgoalsonce a quest is completed.
Char.Achievements.List and Char.Achievements.Update work the same way, with the
list under achievements. They cover every achievement you can earn: active ones
carry their goals, and earned ones are completed.
The web client shows both in its side panel.