We are adding limited code support for the following MUD protocols:
We will primarily be supporting GMCP and MCCP. Support for other protocols will be more limited. If you are interested in collaborating on an HTML5 MUD client using GMCP to support touch-based devices, please get in touch with Xiphoid using board 2 or emailing xiphoid at outland.org.
This page is currently the authoritative source of information for GMCP support in Avatar. As we add support for new types of message and expand or change the functionality of existing messages, we will document that here.
We support the following messages sent from clients to the server:
Example:
Core.Hello { "client": "MyMUDClient", "version": "1.2.34" }
Example:
Char.Login { "name": "Myalt", "password": "myl0n6c0mpl3xp455w0rd" }
Example:
Core.Ping 120
Example:
Core.KeepAlive
Example:
Core.Supports.Set [ "Char 1", "Char.Skills 1", "Char.Items 1" ]
Example:
Core.Supports.Add [ "Char.Vitals 1", "Char.Status 1" ]
Example:
Core.Supports.Remove [ "Char", "Char.Skills", "Char.Items" ]
Example:
Char.Group.List
Example:
Char.Skills.Get { "group": "Arcane", "name": "fireball" }
Example:
Char.Items.Inv
Example:
Char.Items.Contents 12345678
Example:
Comm.Channel.Players
The following messages may be sent from the server to clients:
Example:
Core.Goodbye "Leaving the AVATAR System for the 'real world'...
May your stay in reality be worthwhile."
Example:
Core.Ping
Example:
Char.Group.List [
{ "leader": true, "name": "Xiphling", "level": "Lord", "position": "Stand", "hp": "10000", "maxhp": "10000",
"mp": "20000", "maxmp": "20000", "mv": "30000", "maxmv": "30000", "tnl": "1428", "align": "-1000" },
{ "leader": false, "name": "Xiphlet", "level": "Lord", "position": "Stand", "hp": "20000", "maxhp": "20000",
"mp": "10000", "maxmp": "10000", "mv": "30000", "maxmv": "30000", "tnl": "1428", "align": "-1000" }
]
Example:
Char.Items.List {
"location": "room",
"items": [
{ "id": "15442582457", "name": "a rock", "type": "trash" },
{ "id": "15442877992", "name": "a magical fountain", "type": "fountain" }
]
}
Example:
Char.Skills.Info {
"skill": "burning hands",
"group": "Arcane",
"info": "Syntax: cast 'burning hands' [Area Affect]
Burning hands allows the spellcaster to inflict damage to all mobs in a
room, by shooting jets of flames from the spellcaster's hands. The amount
of damage is determined by the level of the spellcaster.
As with all area spells, there is no need to specify a target.
This spell causes fire damage.
"
}
Example:
Char.Skills.List { "group": "Arcane", "list": [ "burning hands", "detect magic" ] }
Example:
Char.Skills.Groups [ "Channel", "Arcane", "Psionic", "Rogue", "Archer", "Ranger",
"Common", "Warrior", "Lore", "Stance", "Monk", "Ritual", "Object", "Rite" ]
Example:
Char.StatusVars {
"character_name":"Character Name",
"server_id":"Server ID",
"server_time":"Server Time",
"affects":"Affects",
"alignment":"Alignment",
"experience_tnl":"TNL",
"experience_tnl_max":"Max TNL",
"health":"HP",
"health_max":"Max HP",
"level":"Level",
"sublevel":"Sublevel",
"race":"Race",
"class":"Class",
"mana":"Mana",
"mana_max":"Max Mana",
"wimpy":"Wimpy",
"practice":"Practices",
"gold":"Gold",
"movement":"Move",
"movement_max":"Max Move",
"hitroll":"Hitroll",
"damroll":"Damroll",
"ac":"AC",
"str":"Str",
"int":"Int",
"wis":"Wis",
"dex":"Dex",
"con":"Con",
"str_perm":"Perm Str",
"int_perm":"Perm Int",
"wis_perm":"Perm Wis",
"dex_perm":"Perm Dex",
"con_perm":"Perm Con",
"opponent_health":"Opponent HP %",
"opponent_health_max":"Max Opponent HP %",
"opponent_level":"Opponent Level",
"opponent_name":"Opponent Name",
"area_name":"Area Name",
"room_exits":"Room Exits",
"room_name":"Room Name",
"world_time":"World Time",
"client_id":"Client ID",
"client_version":"Client Version",
"plugin_id":"Plugin ID",
"ansi_colors":"ANSI Color",
"utf_8":"UTF-8",
"sound":"Sound",
"mxp":"MXP"
}
Example:
Char.Status {
"character_name":"Xiphling",
"affects":{
"bless":"47",
"armor":"47",
"boost":"128"
},
"experience_tnl":"1000",
"experience_tnl_max":"1000",
"health":"1641",
"health_max":"1641",
"level":"51",
"sublevel":"101",
"race":"Human",
"class":"Warrior",
"mana":"204",
"mana_max":"204",
"practice":"669",
"gold":"64",
"movement":"954",
"movement_max":"954",
"hitroll":"22",
"damroll":"16",
"ac":"8",
"str":"29",
"int":"23",
"wis":"23",
"dex":"23",
"con":"23",
"str_perm":"14",
"int_perm":"13",
"wis_perm":"13",
"dex_perm":"13",
"con_perm":"13",
"area_name":"{ 1 4} Crom The Meadow",
"room_exits":{
"North":"O",
"East":"O",
"South":"O",
"West":"O"
},
"room_name":"West Side of Tree of Knowledge"
}
Example:
Char.Vitals {
"hp":"1641",
"maxhp":"1641",
"mp":"204",
"maxmp":"204",
"mv":"954",
"maxmv":"954",
"wgt":"31",
"tnl":"1000",
"maxtnl":"1000",
"maxwgt":"950",
"items":"4",
"maxitems":"205",
"string":"HP:1641/1641 Mana:204/204 Mv:954/954 TNL:1000/1000 Wgt:31/950 Items:4/205"
}
Example:
Comm.Channel.List [
{ "name":"ask", "caption":"Ask", "command":"ask" },
{ "name":"auction", "caption":"Auction", "command":"auction" },
{ "name":"chat", "caption":"Chat", "command":"chat" },
{ "name":"grtz", "caption":"Grtz", "command":"grtz" },
{ "name":"joke", "caption":"Joke", "command":"joke" },
{ "name":"music", "caption":"Music", "command":"music" },
{ "name":"newbie", "caption":"Newbie", "command":"newbie" },
{ "name":"quest", "caption":"Quest", "command":"quest" },
{ "name":"shout", "caption":"Shout", "command":"shout" },
{ "name":"yell", "caption":"Yell", "command":"yell" },
{ "name":"eslchat", "caption":"ESLChat", "command":"eslchat" },
{ "name":"buddy", "caption":"Buddy", "command":"buddy" },
{ "name":"hero", "caption":"Hero", "command":"hero" },
{ "name":"lord", "caption":"Lord", "command":"lord" }
]
Example:
Comm.Channel.Players [
{
"name":"Xiphling",
"channels":[
"newbie",
"yell",
"hero"
]
},
{
"name":"Xiphoid",
"channels":[
"ask",
"auction",
"chat",
"grtz",
"joke",
"music",
"newbie",
"quest",
"shout",
"yell",
"eslchat",
"buddy",
"hero",
"lord"
]
}
]
Example:
Comm.Channel.Text {
"channel":"chat",
"talker":"Xiphling",
"text":"Xiphling chats 'Hello world!'"
}
Example:
Room.Info {
"name":"Approaching Wayward Marina, Unofficial \"Bank\"",
"zone":"{23 30} Zahri Mervue",
"environment":"city",
"exits":{
"North":"O",
"South":"O"
},
"details":[
"bank"
]
}
Example:
Room.Players {
"Xiphling":{ "name":"Xiphling", "fullname":"(White Aura) Xiphling is here." },
"4525":{ "name":"4525", "fullname":"A kobold giggles then commences to fart in your direction." },
"4520":{ "name":"4520", "fullname":"A kobold drools as it takes a grab for your arm." }
}
Example:
Room.AddPlayer { "4537":{"name":"4537", "fullname":"A kobold giggles then commences to fart in your direction."} }
Example:
Room.RemovePlayer "4537"
Example:
Room.WrongDir "west"