<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nexus.ironrealms.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Justin</id>
	<title>Iron Realms Nexus Client Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://nexus.ironrealms.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Justin"/>
	<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/Special:Contributions/Justin"/>
	<updated>2026-06-15T10:34:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=1148</id>
		<title>GMCP</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=1148"/>
		<updated>2018-05-31T20:59:52Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aetolia-dwarf.jpg|right|frame|caption|Dwarf Terradrim from Aetolia.]] General MUD Telnet Protocol (GMCP) is a protocol used to send data from the game server to the player client. This data transfer happens behind the scenes and is not seen by the players. This allows the game server to send messages to the client to update basic character, room, and game information. Character health is an example of information that is continually passed to the client from the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These messages can also be accessed by the player for use in [[reflexes]]. We are working simplifying the process of capturing GMCP data for use in the client in a future version of the client.&lt;br /&gt;
&lt;br /&gt;
There is a configuration option in the Advanced Settings tab that will allow you to see GMCP messages as they happen.&lt;br /&gt;
&lt;br /&gt;
Module and message names are not case sensitive. JSON key names are case sensitive.&lt;br /&gt;
&lt;br /&gt;
=== Supported modules ===&lt;br /&gt;
&lt;br /&gt;
This documentation covers the following GMCP messages for the Iron Realms Games.&lt;br /&gt;
&lt;br /&gt;
* Core: core functionality&lt;br /&gt;
* Char: information about a character&lt;br /&gt;
* Char.Afflictions: information the characters afflictions&lt;br /&gt;
* Char.Defences- information the characters defences&lt;br /&gt;
* Char.Items: information about items in inventory and room, with live updates&lt;br /&gt;
* Char.Skills: information about skills known by the player&lt;br /&gt;
* Comm.Channel: identification of communication channels and player lists&lt;br /&gt;
* Room: various information about the current room&lt;br /&gt;
* Redirect: redirect outpot to another window&lt;br /&gt;
* IRE.Composer: IRE-specific, used to edit bigger texts client-side&lt;br /&gt;
* IRE.Display: IRE-specific display information&lt;br /&gt;
* IRE.FileStore: used internally by the Nexus client&lt;br /&gt;
* IRE.Misc: used internally by the fMUD and Nexus clients&lt;br /&gt;
* IRE.Rift: IRE-specific, transmits information about the Rift contents&lt;br /&gt;
* IRE.Sound: Yes. Sound can be sent.&lt;br /&gt;
* IRE.Target: information about the current player target.&lt;br /&gt;
* IRE.Tasks: information about tasks, quests, and achievements.&lt;br /&gt;
* IRE.Time: information about the current time and date conditions in the game.&lt;br /&gt;
* IRE.Wiz: used internally by the Nexus client&lt;br /&gt;
&lt;br /&gt;
=== Supported messages by modules ===&lt;br /&gt;
&lt;br /&gt;
==== Core ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Core.Hello&lt;br /&gt;
*** Needs to be the first message that the client sends, used to identify the client&lt;br /&gt;
*** Message body is an object with keys &amp;quot;client&amp;quot; and &amp;quot;version&amp;quot;, containing the client&#039;s name and version&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Hello {&amp;quot;Client&amp;quot;:&amp;quot;Mudlet&amp;quot;,&amp;quot;Version&amp;quot;:&amp;quot;3.0.0&amp;quot;}&lt;br /&gt;
** Core.Supports.Set&lt;br /&gt;
*** Notifies the server about packages supported by the client&lt;br /&gt;
*** If another Core.Supports.*** package has been received earlier, the list is deleted and replaced with the new one&lt;br /&gt;
*** Message body is an array of strings, each consisting of the module name and version, separated by space&lt;br /&gt;
*** Module version is a positive non-zero integer&lt;br /&gt;
*** Most client implementations will only need to send Set once and won&#039;t need Add/Remove; exceptions are module implementations provided by plug-ins&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Set [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Add&lt;br /&gt;
*** Similar to Set, but appends the supported module list to the one sent earlier&lt;br /&gt;
*** If no list was sent yet, the behaviour is identical to Set&lt;br /&gt;
*** If the list includes module names that were already included earlier, the new version number takes precedence over the previously sent one, even if the newly sent number is lower&lt;br /&gt;
*** Message body format is identical to that of Set&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Add [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Remove&lt;br /&gt;
*** Removes specified modules from the list of supported modules&lt;br /&gt;
*** Message body format is similar to Set, except that module version numbers are optional and ignored if given&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Remove [ &amp;quot;Char&amp;quot;, &amp;quot;Char.Skills&amp;quot;, &amp;quot;Char.Items&amp;quot; ]&lt;br /&gt;
** Core.KeepAlive&lt;br /&gt;
*** Causes the server to reset the timeout for the logged character, no message body&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** causes the server to send a Core.Ping back&lt;br /&gt;
*** message body is a number which indicates average ping time from previous requests, if available&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Ping 120&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** Sent in reply to Core.Ping. No body.&lt;br /&gt;
** Core.Goodbye&lt;br /&gt;
*** Sent by server immediately before terminating a connection&lt;br /&gt;
*** Message body is a string to be shown to the user - it can explain the reason for the disconnect&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Goodbye &amp;quot;Goodbye, adventurer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Char ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Login&lt;br /&gt;
*** Used to log in a character, only interpreted if no character is logged in for that connection&lt;br /&gt;
*** Message body is an object with keys &amp;quot;name&amp;quot; and &amp;quot;password&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Login { &amp;quot;name&amp;quot;: &amp;quot;somename&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;somepassword&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Name&lt;br /&gt;
*** Sends the character name and full name which includes the title. This is only sent on login.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Name { &amp;quot;name&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Neophyte Olad&amp;quot; }&lt;br /&gt;
** Char.Vitals&lt;br /&gt;
*** Basic character attributes such as health, mana, etc.&lt;br /&gt;
*** Message body is an object containing several variables&lt;br /&gt;
*** Additionally, each variable is included in a string, in the format name:cur/max&lt;br /&gt;
*** Interpretation of the variables is game specific&lt;br /&gt;
*** It is generally safe to assume that the known values are numbers (even though encoded as strings), but other datatypes can be present&lt;br /&gt;
*** The &amp;quot;charstats&amp;quot; attribute, if present, holds a list of strings that the client may choose to display to the player in a client-specific way, these hold information about the character state that the game wishes to show to the player&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Vitals { &amp;quot;hp&amp;quot;: &amp;quot;4500&amp;quot;, &amp;quot;maxhp&amp;quot;: &amp;quot;4800&amp;quot;, &amp;quot;mp&amp;quot;: &amp;quot;1200&amp;quot;, &amp;quot;maxmp&amp;quot;: &amp;quot;2500&amp;quot;, &amp;quot;ep&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;maxep&amp;quot;: &amp;quot;16000&amp;quot;, &amp;quot;wp&amp;quot;: &amp;quot;14000&amp;quot;, &amp;quot;maxwp&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;nl&amp;quot;: &amp;quot;10&amp;quot;, &amp;quot;string&amp;quot;: &amp;quot;H:4500/4800 M:1200/2500 E:15000/16000 W:14000/15000 NL:10/100&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Additional Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** All classes: Bleed, Rage&lt;br /&gt;
**** Apostates: Essence&lt;br /&gt;
**** Bard: Stance, Voice Balance&lt;br /&gt;
**** Blademaster: Stance&lt;br /&gt;
**** Druid: Current Morph, Sunlight Energy&lt;br /&gt;
**** Infernal: Essence, Weaponmastery Spec&lt;br /&gt;
**** Magi: Channels&lt;br /&gt;
**** Monk: Kai Energy, Tekura stance&lt;br /&gt;
**** Occultist: Karma, Entity Balance&lt;br /&gt;
**** Paladin: Devotion, Weaponmastery Spec&lt;br /&gt;
**** Priest: Devotion&lt;br /&gt;
**** Runewarden: Weaponmastery Spec&lt;br /&gt;
**** Sentinel: Current Morph&lt;br /&gt;
**** Serpent: Secreted Venom&lt;br /&gt;
**** Shaman: Number of spirits bound&lt;br /&gt;
**** Sylvan: Elemental Channels, Sunlight Energy&lt;br /&gt;
*** &#039;&#039;&#039;Additional Aetolia Keys&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Additional Imperian Keys&#039;&#039;&#039;&lt;br /&gt;
**** General: bleed, flying, prone, stunned, dead, blind, phased, res_weakness, vote&lt;br /&gt;
**** Balances: leftarm, rightarm, health, herb, salve, toadstool, pipe, tree, focus, purge&lt;br /&gt;
**** Resources: kai, devotion, essence, fanatism, rage, fire, ice, faith, health_reserve, mana_reserve&lt;br /&gt;
**** Items: leftwield, leftwield_name, rightwield, rightwield_name, mount&lt;br /&gt;
** Char.StatusVars&lt;br /&gt;
*** Sent by server after a successful login or after the module is enabled&lt;br /&gt;
*** Contains a list of character variables (level, race, etc)&lt;br /&gt;
*** Message body is an object&lt;br /&gt;
*** Each object element is a name-caption pair, name is the internal name and caption the user-visible one&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.StatusVars { &amp;quot;level&amp;quot;: &amp;quot;Level&amp;quot;, &amp;quot;race&amp;quot;: &amp;quot;Race&amp;quot;, &amp;quot;guild&amp;quot;: &amp;quot;Guild&amp;quot; }&lt;br /&gt;
** Char.Status&lt;br /&gt;
*** Values of character values defined by StatusVars.&lt;br /&gt;
*** A full list is sent by server right after StatusVars, and changes are sent in subsequent messages as they occur.&lt;br /&gt;
*** With the exception of the initial Status message, messages only contain changed values; if a variable is not included, it has not changed since the previous Status message.&lt;br /&gt;
*** Message body is an object.&lt;br /&gt;
*** Each object element is a name-value pair, name is the internal name defined by the StatusVars message and value is the variable value.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Status { &amp;quot;level&amp;quot;: &amp;quot;58&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;Antioch&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039; Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** name &lt;br /&gt;
**** fullname&lt;br /&gt;
**** age&lt;br /&gt;
**** race&lt;br /&gt;
**** specialisation&lt;br /&gt;
**** level&lt;br /&gt;
**** xp&lt;br /&gt;
**** xprank&lt;br /&gt;
**** class&lt;br /&gt;
**** city&lt;br /&gt;
**** house&lt;br /&gt;
**** order&lt;br /&gt;
**** boundcredits&lt;br /&gt;
**** unboundcredits&lt;br /&gt;
**** lessons&lt;br /&gt;
**** explorerrank&lt;br /&gt;
**** mayancrowns&lt;br /&gt;
**** boundmayancrowns&lt;br /&gt;
**** gold&lt;br /&gt;
**** bank&lt;br /&gt;
**** unread_msgs&lt;br /&gt;
**** unread_news&lt;br /&gt;
**** target&lt;br /&gt;
**** gender&lt;br /&gt;
&lt;br /&gt;
===== Char.Afflictions =====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Afflictions.List&lt;br /&gt;
*** Sends an array of current character afflictions.&lt;br /&gt;
**** name: The name of the affliction&lt;br /&gt;
**** cure: The basic cure of the affliction. This is used for links to cure even though other options may exist to cure the affliction.&lt;br /&gt;
**** desc: A description of what this affliction does.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.List [ { &amp;quot;name&amp;quot;: &amp;quot;weariness&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Decreases cutting and blunt damage that you inflict by 30%.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;slow herbs&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;apply epidermal&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Increases the time needed to regain herb balance by 1.25 seconds.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nausea&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat nightshade&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Causes periodic vomiting, which does damage and increases hunger.&amp;quot; } ]&lt;br /&gt;
** Char.Afflictions.Add&lt;br /&gt;
*** Add an affliction to the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Add { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }&lt;br /&gt;
** Char.Afflictions.Remove&lt;br /&gt;
*** Removes an affliction from the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Remove [ &amp;quot;asthma&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
===== Char.Defences=====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Defences.List&lt;br /&gt;
*** Send an array of all the defences a character currently has.&lt;br /&gt;
**** name: The name of the defence.&lt;br /&gt;
**** desc: The description of the defence.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.List [ { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;blind&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;blind&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nightsight&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;nightsight&amp;quot; } ]&lt;br /&gt;
** Char.Defences.Add&lt;br /&gt;
*** Sent when a defence is added to a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Add { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }&lt;br /&gt;
** Char.Defences.Remove&lt;br /&gt;
*** Sent when a defence is removed from a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Remove [ &amp;quot;blind&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
===== Char.Items =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Items.Contents&lt;br /&gt;
*** Request for the server to send the list of items located inside another item.&lt;br /&gt;
*** Message body is a number identifying the item.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Item.Contents 12345&lt;br /&gt;
** Char.Items.Inv&lt;br /&gt;
*** Request for the server to send the list of items in player&#039;s inventory.&lt;br /&gt;
*** Message body is empty.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Inv &amp;quot;&amp;quot;&lt;br /&gt;
** Char.Items.Room&lt;br /&gt;
*** Sent by the client to refresh the items in a room.&lt;br /&gt;
*** Message body is empty&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Room &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Items.List&lt;br /&gt;
*** List of items at a specified location (room, inv, held container)&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;items&amp;quot;&lt;br /&gt;
*** Location value is a string, &amp;quot;inv&amp;quot;, &amp;quot;room&amp;quot;, or &amp;quot;repNUMBER&amp;quot; - the last one is container identification&lt;br /&gt;
*** Items value is an array, whose each item is an object with keys &amp;quot;id&amp;quot;, &amp;quot;name&amp;quot; and optionally &amp;quot;attrib&amp;quot;&lt;br /&gt;
*** ID is a number identifying the item, name is a string containing a short player-visible item description&lt;br /&gt;
*** Icon is the image the item is associated with in the client.&lt;br /&gt;
*** Attrib is a string consisting of characters describing item properties:&lt;br /&gt;
**** &amp;quot;w&amp;quot; = worn, &lt;br /&gt;
**** &amp;quot;W&amp;quot; = wearable but not worn &lt;br /&gt;
**** &amp;quot;l&amp;quot; = wielded &lt;br /&gt;
**** &amp;quot;g&amp;quot; = groupable&lt;br /&gt;
**** &amp;quot;c&amp;quot; = container&lt;br /&gt;
**** &amp;quot;t&amp;quot; = takeable&lt;br /&gt;
**** &amp;quot;m&amp;quot; = monster&lt;br /&gt;
**** &amp;quot;d&amp;quot; = dead monster&lt;br /&gt;
**** &amp;quot;x&amp;quot; = should not be targeted (guards, ...)&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.List { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;items&amp;quot;: [ { &amp;quot;id&amp;quot;: &amp;quot;12807&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a personal journal&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;scroll&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;l&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } ] }&lt;br /&gt;
** Char.Items.Add&lt;br /&gt;
*** Informs the client about an item being added to the specified location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an object with the same structure as one item from the items array of List&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;c&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
** Char.Items.Remove&lt;br /&gt;
*** Informs the client about an item being removed from the location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an integer value identifying the item&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
** Char.Items.Update&lt;br /&gt;
*** Informs the client about an item&#039;s attributes being changed - only sent for inventory items&lt;br /&gt;
*** Message body syntax the same as with Add&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Update { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;60572&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an ornate steel rapier&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
===== Char.Skills =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Skills.Get&lt;br /&gt;
*** Sent by client to request skill information&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot; and &amp;quot;name&amp;quot;&lt;br /&gt;
*** If both group and name is provided, the server will send Char.Skills.Info for the specified skill&lt;br /&gt;
*** If group is provided but name is not, the server will send Char.Skills.List for that group&lt;br /&gt;
*** Otherwise the server will send Char.Skills.Groups&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;Perception&amp;quot;}&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;perception&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Deathsight&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Skills.Groups&lt;br /&gt;
*** Groups of skills available to the character&lt;br /&gt;
*** Sent by server on request or at any time (usually if the list changes)&lt;br /&gt;
*** For IRE games, groups are skills like Survival or Elemancy&lt;br /&gt;
*** Message body is an array including the name and current rank of each skill the character has.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Groups [ { &amp;quot;name&amp;quot;: &amp;quot;Perception&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Transcendent (100%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Survival&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Weaponry&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Tattoos&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evasion&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Engineering&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Taming&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Concoctions&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Toxins&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Smithing&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Malignosis&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (1%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Necromancy&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evileye&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (40%)&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.List&lt;br /&gt;
*** List of skills in a group available to the character&lt;br /&gt;
*** Sent by server on request only&lt;br /&gt;
*** For IRE games, this is the list visible on AB &amp;lt;skillname&amp;gt;&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot;, &amp;quot;list&amp;quot;, and &amp;quot;desc&amp;quot;.&lt;br /&gt;
*** The list value is an array of strings, each being the name of one skill&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.List { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;list&amp;quot;: [ &amp;quot;Looking&amp;quot;, &amp;quot;Glancing&amp;quot;, &amp;quot;Secrets&amp;quot;, &amp;quot;Decaylist&amp;quot;, &amp;quot;Squinting&amp;quot;, &amp;quot;Flyers&amp;quot;, &amp;quot;Observe&amp;quot;, &amp;quot;Farsight&amp;quot;, &amp;quot;Containerlist&amp;quot;, &amp;quot;Vigilance&amp;quot;, &amp;quot;Treewatch&amp;quot;, &amp;quot;Deathsight&amp;quot;, &amp;quot;Pipelist&amp;quot;, &amp;quot;Elixlist&amp;quot;, &amp;quot;Search&amp;quot;, &amp;quot;Letterlist&amp;quot;, &amp;quot;Booklist&amp;quot;, &amp;quot;Skywatch&amp;quot;, &amp;quot;PowerNodes&amp;quot;, &amp;quot;Keylist&amp;quot;, &amp;quot;Alertness&amp;quot;, &amp;quot;Rites&amp;quot;, &amp;quot;Traps&amp;quot;, &amp;quot;Magicklist&amp;quot;, &amp;quot;Nightsight&amp;quot;, &amp;quot;Hypersight&amp;quot;, &amp;quot;Thirdeye&amp;quot;, &amp;quot;Tattoos&amp;quot;, &amp;quot;Discernment&amp;quot;, &amp;quot;Wormholes&amp;quot;, &amp;quot;Rivensense&amp;quot;, &amp;quot;Contemplation&amp;quot;, &amp;quot;Scan&amp;quot;, &amp;quot;Telesense&amp;quot;, &amp;quot;Appraise&amp;quot;, &amp;quot;Trueassess&amp;quot;, &amp;quot;Artifactlist&amp;quot;, &amp;quot;Warning&amp;quot;, &amp;quot;Viewshrine&amp;quot;, &amp;quot;Landsense&amp;quot; ], &amp;quot;descs&amp;quot;: [ &amp;quot;Gain knowledge of your immediate surroundings.&amp;quot;, &amp;quot;See summarized information about your surroundings.&amp;quot;, &amp;quot;Discover hidden exits.&amp;quot;, &amp;quot;How much more time do those items have?&amp;quot;, &amp;quot;See extended distances in your line of sight.&amp;quot;, &amp;quot;Take notice of those in the skies.&amp;quot;, &amp;quot;Gain information about your extended surroundings.&amp;quot;, &amp;quot;Attempt to locate another player from afar.&amp;quot;, &amp;quot;What do you have in your containers?&amp;quot;, &amp;quot;Increase your resistance to hypnosis.&amp;quot;, &amp;quot;Watch the forest canopies for movement.&amp;quot;, &amp;quot;Attune yourself to the Underworld.&amp;quot;, &amp;quot;Scan your pipes with utmost speed.&amp;quot;, &amp;quot;Quickly discover what elixirs and salves you are holding.&amp;quot;, &amp;quot;Search your location for hidden beings.&amp;quot;, &amp;quot;Quick glance of all your letters.&amp;quot;, &amp;quot;Scan the titles of books you own.&amp;quot;, &amp;quot;Watch the skies for movement.&amp;quot;, &amp;quot;Detect the nodes of power in your area.&amp;quot;, &amp;quot;See a list of your keys and which doors they open.&amp;quot;, &amp;quot;Heightened awareness of your surroundings.&amp;quot;, &amp;quot;View the holy rites operating in your location.&amp;quot;, &amp;quot;The ability to search for traps in your location.&amp;quot;, &amp;quot;Check the status of your magickal items.&amp;quot;, &amp;quot;Use infravision to see in the dark.&amp;quot;, &amp;quot;See the actions of cloaked players.&amp;quot;, &amp;quot;Give yourself the power of the third eye.&amp;quot;, &amp;quot;Discover what tattoos are on another player.&amp;quot;, &amp;quot;Discover what defences are protecting an individual.&amp;quot;, &amp;quot;The ability to sense wormholes in your location.&amp;quot;, &amp;quot;Sense the bodies of the recently slain.&amp;quot;, &amp;quot;Perceive the state of another&#039;s mental strength.&amp;quot;, &amp;quot;Seekout the locations of your allies and enemies.&amp;quot;, &amp;quot;Heighten your awareness to telepathic attempts.&amp;quot;, &amp;quot;Quickly take note of someone&#039;s carried possessions.&amp;quot;, &amp;quot;Gain more detailed information concerning your foe.&amp;quot;, &amp;quot;See what artifact powers surround an individual.&amp;quot;, &amp;quot;Watch for the prying eyes of the enemy.&amp;quot;, &amp;quot;Gain a detailed understanding of a shrine.&amp;quot;, &amp;quot;The ability to recognize mortals entering the realm.&amp;quot; ] }&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.Info&lt;br /&gt;
*** Information about a single skill, only sent upon request&lt;br /&gt;
*** Message body is an object, keys are &amp;quot;group&amp;quot;, &amp;quot;skill&amp;quot;, and &amp;quot;info&amp;quot;, values are strings&lt;br /&gt;
*** Group and skill identify the request, info is a description (usually multi-line) of the skill&#039;s functionality and usage&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Info { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;skill&amp;quot;: &amp;quot;deathsight&amp;quot;, &amp;quot;info&amp;quot;: &amp;quot;Syntax: DEATHSIGHT\n        RELAX DEATHSIGHT\n\nUsing this ability, your mind is now capable of attuning itself to the realm of the dead. While doing so, you will be alerted whenever anyone dies.&amp;quot; }&lt;br /&gt;
==== Comm.Channel ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** Request for the server to send Comm.Channel.Players&lt;br /&gt;
*** No message body.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players &amp;quot;&amp;quot;&lt;br /&gt;
** Comm.Channel.Enable&lt;br /&gt;
*** Used to tell the game to turn on a character channel without typing in a command line command.&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;newbie&amp;quot;&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;clt Consortium&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** List of players and organizations (city, guild, ...) that they share with this player&lt;br /&gt;
*** Message body is an array with each element describing one player&lt;br /&gt;
*** Each element is an object with keys &amp;quot;name&amp;quot; and &amp;quot;channels&amp;quot;, name is a string, channels is an array&lt;br /&gt;
*** The channels array may be omitted if empty; if given, it is a list of organization names&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [{&amp;quot;name&amp;quot;: &amp;quot;Player1&amp;quot;, &amp;quot;channels: [&amp;quot;Some city&amp;quot;, &amp;quot;Some guild&amp;quot;]}, {&amp;quot;name&amp;quot;: &amp;quot;Player2&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [ { &amp;quot;name&amp;quot;: &amp;quot;Ahkan&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot; ] }, { &amp;quot;name&amp;quot;: &amp;quot;Sharatar&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot;, &amp;quot;The Revenants&amp;quot; ] } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.List&lt;br /&gt;
*** List of communication channels available to the player, sent on login/negotiation and if changed&lt;br /&gt;
*** Message body is an array of objects, each object representing one channel&lt;br /&gt;
*** Each object has keys &amp;quot;name&amp;quot;, &amp;quot;caption&amp;quot; and &amp;quot;command&amp;quot; - name is internal name, caption is player-visible name, command is command used to communicate over this channel&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [{&amp;quot;name&amp;quot;:&amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some city&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;ct&amp;quot;}, {&amp;quot;name&amp;quot;:&amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some guild&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;gt&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [ { &amp;quot;name&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Newbie&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;newbie&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;market&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Market&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;market&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Stavenn&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;ct&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Revenants&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;gt&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Start&lt;br /&gt;
*** Informs the client that text that follows is something said over a communication channel&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** For tells from/to another player, the channel name is &amp;quot;tell Name&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Start &amp;quot;ct&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039; :Comm.Channel.Start &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
** Comm.Channel.End&lt;br /&gt;
*** Ends a channel text started by Comm.Channel.Start&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.End &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Text&lt;br /&gt;
*** The text of the communication that you heard, who spoke, and which channel it was on &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text   {   &amp;quot;channel&amp;quot;:   &amp;quot;says&amp;quot;,   &amp;quot;talker&amp;quot;:   &amp;quot;Tecton&amp;quot;,   &amp;quot;text&amp;quot;: &amp;quot;(Tecton the Terraformer says, \&amp;quot;Are we releasing dragon lairs or the phase artefact first?\&amp;quot;&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;tell Jeremy&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;33mYou tell Jeremy, \&amp;quot;Hi.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;32m(Newbie): You say, \&amp;quot;Hello.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
==== Room ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Room.Info&lt;br /&gt;
*** Contains information about the room that the player is in. Some of these may be IRE-specific&lt;br /&gt;
*** Message body is an object with the following keys&lt;br /&gt;
**** &amp;quot;num&amp;quot; - number identifying the room&lt;br /&gt;
**** &amp;quot;name&amp;quot; - string containing the brief description&lt;br /&gt;
**** &amp;quot;area&amp;quot; - string containing area name&lt;br /&gt;
**** &amp;quot;environment&amp;quot; - string containing environment type (&amp;quot;Hills&amp;quot;, &amp;quot;Ocean&amp;quot;, ...)&lt;br /&gt;
**** &amp;quot;coords&amp;quot; - room coordinates (string of numbers separated by commas - area,X,Y,X,building, building is optional&lt;br /&gt;
**** &amp;quot;map&amp;quot; - map information - URL pointing to a map image, followed by X and Y room (not pixel) coordinates on the map&lt;br /&gt;
**** &amp;quot;details&amp;quot; - array holding further information about a room - shop,bank,...&lt;br /&gt;
**** &amp;quot;exits&amp;quot; - object containing exits, each key is a direction and each value is the number identifying the target room&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Info {&amp;quot;num&amp;quot;: 12345, &amp;quot;name&amp;quot;: &amp;quot;On a hill&amp;quot;, &amp;quot;area&amp;quot;: &amp;quot;Barren hills&amp;quot;, &amp;quot;environment&amp;quot;: &amp;quot;Hills&amp;quot;, &amp;quot;coords&amp;quot;: &amp;quot;45,5,4,3&amp;quot;, &amp;quot;map&amp;quot;: &amp;quot;www.imperian.com/itex/maps/clientmap.php?map=45&amp;amp;level=3 5 4&amp;quot;, &amp;quot;exits&amp;quot;: { &amp;quot;n&amp;quot;: 12344, &amp;quot;se&amp;quot;: 12336 }, &amp;quot;details&amp;quot;: [ &amp;quot;shop&amp;quot;, &amp;quot;bank&amp;quot; ] }&lt;br /&gt;
** Room.WrongDir&lt;br /&gt;
*** Sent if the player attempts to move in a non-existant direction using the standard movement commands&lt;br /&gt;
*** Upon receiving this message, the client can safely assume that the specified direction does not lead anywhere at this time&lt;br /&gt;
*** Message body is a string with the name if the non-existant exit&lt;br /&gt;
*** Example: Room.WrongDir &amp;quot;ne&amp;quot;&lt;br /&gt;
** Room.Players&lt;br /&gt;
*** Object containing player details, each key is the short name of the player and each value is the full name including titles for the player &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Players [{ &amp;quot;name&amp;quot;: &amp;quot;Tecton&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Tecton the Terraformer&amp;quot; }, {&amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Cardan, the Curious&amp;quot; }]&lt;br /&gt;
** Room.AddPlayer&lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being added to the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.AddPlayer { &amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;(Cardan, the Curious)&amp;quot; }&lt;br /&gt;
** Room.RemovePlayer &lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being removed from the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.RemovePlayer &amp;quot;Cardan&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Redirect ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Redirect.Window&lt;br /&gt;
*** Specifies a window to redirect further input to&lt;br /&gt;
*** Message body is a string specifying the window to redirect to&lt;br /&gt;
*** The main window is referred to as &amp;quot;main&amp;quot;, and is the default if the message body is omitted or empty&lt;br /&gt;
*** Example: Redirect.Window &amp;quot;map&amp;quot;&lt;br /&gt;
==== IRE ====&lt;br /&gt;
===== IRE.Composer =====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Composer.Edit&lt;br /&gt;
*** Sent by the server when the player enters an in-game editor. Body is an object, with keys &amp;quot;title&amp;quot; and &amp;quot;text&amp;quot;. Text contains the current buffer, title is a title that can be shown to the user.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.Edit { &amp;quot;title&amp;quot;: &amp;quot;Composer&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Composer.SetBuffer&lt;br /&gt;
*** Sent by the client upon successfully editing a text which was sent to the client in an IRE.Composer.Edit message earlier&lt;br /&gt;
*** Sending this message only changes the edit buffer, but does not end the editing session&lt;br /&gt;
*** On IRE games, the client may send the command ***save to save a text, or command ***quit to abort editing (IRE.Composer.SetBuffer is not sent in this case) - this behaviour is IRE-specific and is one of the reasons why the Composer module is in the IRE namespace&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.SetBuffer  &amp;quot;This is a bunch of text.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== IRE.Display =====&lt;br /&gt;
* Send by server:&lt;br /&gt;
** IRE.Display.FixedFont &amp;quot;start&amp;quot; | &amp;quot;stop&amp;quot;&lt;br /&gt;
*** Sent by the server to indicate between the start and stop messages should be displayed in a fixed-width font.&lt;br /&gt;
** IRE.Display.Ohmap &amp;quot;start&amp;quot; | &amp;quot;stop&amp;quot;&lt;br /&gt;
*** Sent by the server to indicated that an overhead map is being sent to the client.&lt;br /&gt;
&lt;br /&gt;
===== IRE.Misc =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Misc.Voted&lt;br /&gt;
*** Informs the game a vote button was clicked.&lt;br /&gt;
*** Example: IRE.Misc.Voted &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Misc.RemindVote&lt;br /&gt;
*** Message sent to remind the player to vote.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.RemindVote &amp;quot;http://www.imperian.com/vote&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.Achievement&lt;br /&gt;
*** Used to send basic achievement data to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Achievement [{&amp;quot;name&amp;quot;: &amp;quot;HighestLevelAchieved&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;89&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.URL&lt;br /&gt;
*** Sends a url to the client to open in a window when clicked.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.URL[{&amp;quot;url&amp;quot;: &amp;quot;http://www.imperian.com/tos&amp;quot;, &amp;quot;window&amp;quot;: &amp;quot;ire_game_tos&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.MISC.Tip&lt;br /&gt;
*** Sends a line of text to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Tip &amp;quot;This is a tip!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== IRE.Rift =====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Rift.List&lt;br /&gt;
*** contents of a Rift storage&lt;br /&gt;
*** sent upon receiving the IRE.Rift.Request message&lt;br /&gt;
*** message body is an array, with each element being an object containing three keys - &amp;quot;name&amp;quot; is item name, &amp;quot;amount&amp;quot; is a number holding the item&#039;s amount, and &amp;quot;desc&amp;quot; is user-visible description&lt;br /&gt;
** IRE.Rift.Change&lt;br /&gt;
*** sent whenever the item amount in a Rift changes&lt;br /&gt;
*** message body is an object with the same structure as one element of an array sent with the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Rift.Request&lt;br /&gt;
*** asks the server to send the Rift contents using the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
===== IRE.Sound =====&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Sound.Play&lt;br /&gt;
** IRE.Sound.Stop&lt;br /&gt;
** IRE.Sound.Stopall&lt;br /&gt;
** IRE.Sound.Preload&lt;br /&gt;
&lt;br /&gt;
===== IRE.Target =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Target.Set&lt;br /&gt;
*** Sends the currently set target to the server to be used by the internal alias system. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
* Sent by server&lt;br /&gt;
&lt;br /&gt;
** IRE.Target.Set &lt;br /&gt;
*** Sends the target the client is trying to set. This is called from cycling targets with tab targeting.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
** IRE.Target.Info &lt;br /&gt;
*** Sends an array with the current target information.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Info { &amp;quot;id&amp;quot;: &amp;quot;1101&amp;quot;, &amp;quot;short_desc&amp;quot;: &amp;quot;a brawny goblin smith&amp;quot;, &amp;quot;hpperc&amp;quot;: &amp;quot;100%&amp;quot; }&lt;br /&gt;
** IRE.Target.Request&lt;br /&gt;
&lt;br /&gt;
===== IRE.Tasks =====&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Tasks.Request &lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Tasks.List&lt;br /&gt;
*** This is used to send a list of quest, tasks, and achievements, depending on what the game supports.&lt;br /&gt;
*** Sends an array of items with the following keys:&lt;br /&gt;
**** id: A numeric identifier&lt;br /&gt;
**** name: The name of the quest, task, or achievement.&lt;br /&gt;
**** type: Is this a quest, task, or achievement.&lt;br /&gt;
**** cmd: The command to get more information for the quest. Good for MXP links.&lt;br /&gt;
**** desc: The description of the event.&lt;br /&gt;
**** status: 0 or 1 based on if it is completed or not.&lt;br /&gt;
**** group: What group should this be assigned to. This is mainly for client display purposes.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Tasks.List [ { &amp;quot;id&amp;quot;: &amp;quot;184&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;For the sake of the village&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;The herbs in Maeven&#039;s garden are painstakingly cared for so that her fellow villagers can stay healthy. She won&#039;t object to borrowing a bit of the magick power the bakuls have, if it can help with her work.\n\nThe bakul herbalist might have something Maeven wants.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;quests&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;quest For the sake of the village&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Current Quests&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;313&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Apostate&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Destroy a Shrine.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;achievements&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;achievement apostate&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Sects&amp;quot; } ]&lt;br /&gt;
** IRE.Tasks.Update &lt;br /&gt;
** IRE.Tasks.Completed&lt;br /&gt;
&lt;br /&gt;
===== IRE.Time =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Time.Request&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Time.List&lt;br /&gt;
*** A list of the current time condition in the game world. &lt;br /&gt;
*** Used in the client to display the the day/night indicator.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.List { &amp;quot;day&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;mon&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;month&amp;quot;: &amp;quot;Letum&amp;quot;, &amp;quot;year&amp;quot;: &amp;quot;98&amp;quot;, &amp;quot;hour&amp;quot;: &amp;quot;41&amp;quot;, &amp;quot;daynight&amp;quot;: &amp;quot;80&amp;quot; }&lt;br /&gt;
** IRE.Time.Update&lt;br /&gt;
*** Used to update time conditions.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.Update { &amp;quot;daynight&amp;quot;: &amp;quot;112&amp;quot; }&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=1147</id>
		<title>GMCP</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=1147"/>
		<updated>2018-05-31T20:59:25Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aetolia-dwarf.jpg|right|frame|caption|Dwarf Terradrim from Aetolia.]] General MUD Telnet Protocol (GMCP) is a protocol used to send data from the game server to the player client. This data transfer happens behind the scenes and is not seen by the players. This allows the game server to send messages to the client to update basic character, room, and game information. Character health is an example of information that is continually passed to the client from the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These messages can also be accessed by the player for use in [[reflexes]]. We are working simplifying the process of capturing GMCP data for use in the client in a future version of the client.&lt;br /&gt;
&lt;br /&gt;
There is a configuration option in the Advanced Settings tab that will allow you to see GMCP messages as they happen.&lt;br /&gt;
&lt;br /&gt;
Module and message names are not case sensitive. JSON key names are case sensitive.&lt;br /&gt;
&lt;br /&gt;
=== Supported modules ===&lt;br /&gt;
&lt;br /&gt;
This documentation covers the following GMCP messages for the Iron Realms Games.&lt;br /&gt;
&lt;br /&gt;
* Core: core functionality&lt;br /&gt;
* Char: information about a character&lt;br /&gt;
* Char.Afflictions: information the characters afflictions&lt;br /&gt;
* Char.Defences- information the characters defences&lt;br /&gt;
* Char.Items: information about items in inventory and room, with live updates&lt;br /&gt;
* Char.Skills: information about skills known by the player&lt;br /&gt;
* Comm.Channel: identification of communication channels and player lists&lt;br /&gt;
* Room: various information about the current room&lt;br /&gt;
* Redirect: redirect outpot to another window&lt;br /&gt;
* IRE.Composer: IRE-specific, used to edit bigger texts client-side&lt;br /&gt;
* IRE.Display: IRE-specific display information&lt;br /&gt;
* IRE.FileStore: used internally by the Nexus client&lt;br /&gt;
* IRE.Misc: used internally by the fMUD and Nexus clients&lt;br /&gt;
* IRE.Rift: IRE-specific, transmits information about the Rift contents&lt;br /&gt;
* IRE.Sound: Yes. Sound can be sent.&lt;br /&gt;
* IRE.Target: information about the current player target.&lt;br /&gt;
* IRE.Tasks: information about tasks, quests, and achievements.&lt;br /&gt;
* IRE.Time: information about the current time and date conditions in the game.&lt;br /&gt;
* IRE.Wiz: used internally by the Nexus client&lt;br /&gt;
&lt;br /&gt;
=== Supported messages by modules ===&lt;br /&gt;
&lt;br /&gt;
==== Core ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Core.Hello&lt;br /&gt;
*** Needs to be the first message that the client sends, used to identify the client&lt;br /&gt;
*** Message body is an object with keys &amp;quot;client&amp;quot; and &amp;quot;version&amp;quot;, containing the client&#039;s name and version&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Hello {&amp;quot;Client&amp;quot;:&amp;quot;Mudlet&amp;quot;,&amp;quot;Version&amp;quot;:&amp;quot;3.0.0&amp;quot;}&lt;br /&gt;
** Core.Supports.Set&lt;br /&gt;
*** Notifies the server about packages supported by the client&lt;br /&gt;
*** If another Core.Supports.*** package has been received earlier, the list is deleted and replaced with the new one&lt;br /&gt;
*** Message body is an array of strings, each consisting of the module name and version, separated by space&lt;br /&gt;
*** Module version is a positive non-zero integer&lt;br /&gt;
*** Most client implementations will only need to send Set once and won&#039;t need Add/Remove; exceptions are module implementations provided by plug-ins&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Set [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Add&lt;br /&gt;
*** Similar to Set, but appends the supported module list to the one sent earlier&lt;br /&gt;
*** If no list was sent yet, the behaviour is identical to Set&lt;br /&gt;
*** If the list includes module names that were already included earlier, the new version number takes precedence over the previously sent one, even if the newly sent number is lower&lt;br /&gt;
*** Message body format is identical to that of Set&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Add [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Remove&lt;br /&gt;
*** Removes specified modules from the list of supported modules&lt;br /&gt;
*** Message body format is similar to Set, except that module version numbers are optional and ignored if given&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Remove [ &amp;quot;Char&amp;quot;, &amp;quot;Char.Skills&amp;quot;, &amp;quot;Char.Items&amp;quot; ]&lt;br /&gt;
** Core.KeepAlive&lt;br /&gt;
*** Causes the server to reset the timeout for the logged character, no message body&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** causes the server to send a Core.Ping back&lt;br /&gt;
*** message body is a number which indicates average ping time from previous requests, if available&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Ping 120&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** Sent in reply to Core.Ping. No body.&lt;br /&gt;
** Core.Goodbye&lt;br /&gt;
*** Sent by server immediately before terminating a connection&lt;br /&gt;
*** Message body is a string to be shown to the user - it can explain the reason for the disconnect&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Goodbye &amp;quot;Goodbye, adventurer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Char ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Login&lt;br /&gt;
*** Used to log in a character, only interpreted if no character is logged in for that connection&lt;br /&gt;
*** Message body is an object with keys &amp;quot;name&amp;quot; and &amp;quot;password&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Login { &amp;quot;name&amp;quot;: &amp;quot;somename&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;somepassword&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Name&lt;br /&gt;
*** Sends the character name and full name which includes the title. This is only sent on login.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Name { &amp;quot;name&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Neophyte Olad&amp;quot; }&lt;br /&gt;
** Char.Vitals&lt;br /&gt;
*** Basic character attributes such as health, mana, etc.&lt;br /&gt;
*** Message body is an object containing several variables&lt;br /&gt;
*** Additionally, each variable is included in a string, in the format name:cur/max&lt;br /&gt;
*** Interpretation of the variables is game specific&lt;br /&gt;
*** It is generally safe to assume that the known values are numbers (even though encoded as strings), but other datatypes can be present&lt;br /&gt;
*** The &amp;quot;charstats&amp;quot; attribute, if present, holds a list of strings that the client may choose to display to the player in a client-specific way, these hold information about the character state that the game wishes to show to the player&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Vitals { &amp;quot;hp&amp;quot;: &amp;quot;4500&amp;quot;, &amp;quot;maxhp&amp;quot;: &amp;quot;4800&amp;quot;, &amp;quot;mp&amp;quot;: &amp;quot;1200&amp;quot;, &amp;quot;maxmp&amp;quot;: &amp;quot;2500&amp;quot;, &amp;quot;ep&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;maxep&amp;quot;: &amp;quot;16000&amp;quot;, &amp;quot;wp&amp;quot;: &amp;quot;14000&amp;quot;, &amp;quot;maxwp&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;nl&amp;quot;: &amp;quot;10&amp;quot;, &amp;quot;string&amp;quot;: &amp;quot;H:4500/4800 M:1200/2500 E:15000/16000 W:14000/15000 NL:10/100&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Additional Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** All classes: Bleed, Rage&lt;br /&gt;
**** Apostates: Essence&lt;br /&gt;
**** Bard: Stance, Voice Balance&lt;br /&gt;
**** Blademaster: Stance&lt;br /&gt;
**** Druid: Current Morph, Sunlight Energy&lt;br /&gt;
**** Infernal: Essence, Weaponmastery Spec&lt;br /&gt;
**** Magi: Channels&lt;br /&gt;
**** Monk: Kai Energy, Tekura stance&lt;br /&gt;
**** Occultist: Karma, Entity Balance&lt;br /&gt;
**** Paladin: Devotion, Weaponmastery Spec&lt;br /&gt;
**** Priest: Devotion&lt;br /&gt;
**** Runewarden: Weaponmastery Spec&lt;br /&gt;
**** Sentinel: Current Morph&lt;br /&gt;
**** Serpent: Secreted Venom&lt;br /&gt;
**** Shaman: Number of spirits bound&lt;br /&gt;
**** Sylvan: Elemental Channels, Sunlight Energy&lt;br /&gt;
*** &#039;&#039;&#039;Additional Aetolia Keys&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Additional Imperian Keys&#039;&#039;&#039;&lt;br /&gt;
**** General: bleed, flying, prone, stunned, dead, blind, phased, res_weakness, vote&lt;br /&gt;
**** Balances: leftarm, rightarm, health, herb, salve, toadstool, pipe, tree, focus, purge&lt;br /&gt;
**** Resources: kai, devotion, essence, fanatism, rage, fire, ice, faith, health_reserve, mana_reserve&lt;br /&gt;
**** Items: leftwield, leftwield_name, rightwield, rightwield_name, mount&lt;br /&gt;
** Char.StatusVars&lt;br /&gt;
*** Sent by server after a successful login or after the module is enabled&lt;br /&gt;
*** Contains a list of character variables (level, race, etc)&lt;br /&gt;
*** Message body is an object&lt;br /&gt;
*** Each object element is a name-caption pair, name is the internal name and caption the user-visible one&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.StatusVars { &amp;quot;level&amp;quot;: &amp;quot;Level&amp;quot;, &amp;quot;race&amp;quot;: &amp;quot;Race&amp;quot;, &amp;quot;guild&amp;quot;: &amp;quot;Guild&amp;quot; }&lt;br /&gt;
** Char.Status&lt;br /&gt;
*** Values of character values defined by StatusVars.&lt;br /&gt;
*** A full list is sent by server right after StatusVars, and changes are sent in subsequent messages as they occur.&lt;br /&gt;
*** With the exception of the initial Status message, messages only contain changed values; if a variable is not included, it has not changed since the previous Status message.&lt;br /&gt;
*** Message body is an object.&lt;br /&gt;
*** Each object element is a name-value pair, name is the internal name defined by the StatusVars message and value is the variable value.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Status { &amp;quot;level&amp;quot;: &amp;quot;58&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;Antioch&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039; Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** name &lt;br /&gt;
**** fullname&lt;br /&gt;
**** age&lt;br /&gt;
**** race&lt;br /&gt;
**** specialisation&lt;br /&gt;
**** level&lt;br /&gt;
**** xp&lt;br /&gt;
**** xprank&lt;br /&gt;
**** class&lt;br /&gt;
**** city&lt;br /&gt;
**** house&lt;br /&gt;
**** order&lt;br /&gt;
**** boundcredits&lt;br /&gt;
**** unboundcredits&lt;br /&gt;
**** lessons&lt;br /&gt;
**** explorerrank&lt;br /&gt;
**** mayancrowns&lt;br /&gt;
**** boundmayancrowns&lt;br /&gt;
**** gold&lt;br /&gt;
**** bank&lt;br /&gt;
**** unread_msgs&lt;br /&gt;
**** unread_news&lt;br /&gt;
**** target&lt;br /&gt;
**** gender&lt;br /&gt;
&lt;br /&gt;
===== Char.Afflictions =====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Afflictions.List&lt;br /&gt;
*** Sends an array of current character afflictions.&lt;br /&gt;
**** name: The name of the affliction&lt;br /&gt;
**** cure: The basic cure of the affliction. This is used for links to cure even though other options may exist to cure the affliction.&lt;br /&gt;
**** desc: A description of what this affliction does.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.List [ { &amp;quot;name&amp;quot;: &amp;quot;weariness&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Decreases cutting and blunt damage that you inflict by 30%.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;slow herbs&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;apply epidermal&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Increases the time needed to regain herb balance by 1.25 seconds.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nausea&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat nightshade&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Causes periodic vomiting, which does damage and increases hunger.&amp;quot; } ]&lt;br /&gt;
** Char.Afflictions.Add&lt;br /&gt;
*** Add an affliction to the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Add { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }&lt;br /&gt;
** Char.Afflictions.Remove&lt;br /&gt;
*** Removes an affliction from the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Remove [ &amp;quot;asthma&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
===== Char.Defences=====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Defences.List&lt;br /&gt;
*** Send an array of all the defences a character currently has.&lt;br /&gt;
**** name: The name of the defence.&lt;br /&gt;
**** desc: The description of the defence.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.List [ { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;blind&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;blind&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nightsight&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;nightsight&amp;quot; } ]&lt;br /&gt;
** Char.Defences.Add&lt;br /&gt;
*** Sent when a defence is added to a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Add { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }&lt;br /&gt;
** Char.Defences.Remove&lt;br /&gt;
*** Sent when a defence is removed from a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Remove [ &amp;quot;blind&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
===== Char.Items =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Items.Contents&lt;br /&gt;
*** Request for the server to send the list of items located inside another item.&lt;br /&gt;
*** Message body is a number identifying the item.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Item.Contents 12345&lt;br /&gt;
** Char.Items.Inv&lt;br /&gt;
*** Request for the server to send the list of items in player&#039;s inventory.&lt;br /&gt;
*** Message body is empty.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Inv &amp;quot;&amp;quot;&lt;br /&gt;
** Char.Items.Room&lt;br /&gt;
*** Sent by the client to refresh the items in a room.&lt;br /&gt;
*** Message body is empty&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Room &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Items.List&lt;br /&gt;
*** List of items at a specified location (room, inv, held container)&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;items&amp;quot;&lt;br /&gt;
*** Location value is a string, &amp;quot;inv&amp;quot;, &amp;quot;room&amp;quot;, or &amp;quot;repNUMBER&amp;quot; - the last one is container identification&lt;br /&gt;
*** Items value is an array, whose each item is an object with keys &amp;quot;id&amp;quot;, &amp;quot;name&amp;quot; and optionally &amp;quot;attrib&amp;quot;&lt;br /&gt;
*** ID is a number identifying the item, name is a string containing a short player-visible item description&lt;br /&gt;
*** Icon is the image the item is associated with in the client.&lt;br /&gt;
*** Attrib is a string consisting of characters describing item properties:&lt;br /&gt;
**** &amp;quot;w&amp;quot; = worn, &lt;br /&gt;
**** &amp;quot;W&amp;quot; = wearable but not worn &lt;br /&gt;
**** &amp;quot;l&amp;quot; = wielded &lt;br /&gt;
**** &amp;quot;g&amp;quot; = groupable&lt;br /&gt;
**** &amp;quot;c&amp;quot; = container&lt;br /&gt;
**** &amp;quot;t&amp;quot; = takeable&lt;br /&gt;
**** &amp;quot;m&amp;quot; = monster&lt;br /&gt;
**** &amp;quot;d&amp;quot; = dead monster&lt;br /&gt;
**** &amp;quot;x&amp;quot; = should not be targeted (guards, ...)&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.List { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;items&amp;quot;: [ { &amp;quot;id&amp;quot;: &amp;quot;12807&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a personal journal&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;scroll&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;l&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } ] }&lt;br /&gt;
** Char.Items.Add&lt;br /&gt;
*** Informs the client about an item being added to the specified location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an object with the same structure as one item from the items array of List&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;c&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
** Char.Items.Remove&lt;br /&gt;
*** Informs the client about an item being removed from the location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an integer value identifying the item&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
** Char.Items.Update&lt;br /&gt;
*** Informs the client about an item&#039;s attributes being changed - only sent for inventory items&lt;br /&gt;
*** Message body syntax the same as with Add&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Update { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;60572&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an ornate steel rapier&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
===== Char.Skills =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Skills.Get&lt;br /&gt;
*** Sent by client to request skill information&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot; and &amp;quot;name&amp;quot;&lt;br /&gt;
*** If both group and name is provided, the server will send Char.Skills.Info for the specified skill&lt;br /&gt;
*** If group is provided but name is not, the server will send Char.Skills.List for that group&lt;br /&gt;
*** Otherwise the server will send Char.Skills.Groups&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;Perception&amp;quot;}&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;perception&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Deathsight&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Skills.Groups&lt;br /&gt;
*** Groups of skills available to the character&lt;br /&gt;
*** Sent by server on request or at any time (usually if the list changes)&lt;br /&gt;
*** For IRE games, groups are skills like Survival or Elemancy&lt;br /&gt;
*** Message body is an array including the name and current rank of each skill the character has.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Groups [ { &amp;quot;name&amp;quot;: &amp;quot;Perception&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Transcendent (100%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Survival&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Weaponry&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Tattoos&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evasion&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Engineering&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Taming&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Concoctions&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Toxins&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Smithing&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Malignosis&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (1%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Necromancy&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evileye&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (40%)&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.List&lt;br /&gt;
*** List of skills in a group available to the character&lt;br /&gt;
*** Sent by server on request only&lt;br /&gt;
*** For IRE games, this is the list visible on AB &amp;lt;skillname&amp;gt;&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot;, &amp;quot;list&amp;quot;, and &amp;quot;desc&amp;quot;.&lt;br /&gt;
*** The list value is an array of strings, each being the name of one skill&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.List { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;list&amp;quot;: [ &amp;quot;Looking&amp;quot;, &amp;quot;Glancing&amp;quot;, &amp;quot;Secrets&amp;quot;, &amp;quot;Decaylist&amp;quot;, &amp;quot;Squinting&amp;quot;, &amp;quot;Flyers&amp;quot;, &amp;quot;Observe&amp;quot;, &amp;quot;Farsight&amp;quot;, &amp;quot;Containerlist&amp;quot;, &amp;quot;Vigilance&amp;quot;, &amp;quot;Treewatch&amp;quot;, &amp;quot;Deathsight&amp;quot;, &amp;quot;Pipelist&amp;quot;, &amp;quot;Elixlist&amp;quot;, &amp;quot;Search&amp;quot;, &amp;quot;Letterlist&amp;quot;, &amp;quot;Booklist&amp;quot;, &amp;quot;Skywatch&amp;quot;, &amp;quot;PowerNodes&amp;quot;, &amp;quot;Keylist&amp;quot;, &amp;quot;Alertness&amp;quot;, &amp;quot;Rites&amp;quot;, &amp;quot;Traps&amp;quot;, &amp;quot;Magicklist&amp;quot;, &amp;quot;Nightsight&amp;quot;, &amp;quot;Hypersight&amp;quot;, &amp;quot;Thirdeye&amp;quot;, &amp;quot;Tattoos&amp;quot;, &amp;quot;Discernment&amp;quot;, &amp;quot;Wormholes&amp;quot;, &amp;quot;Rivensense&amp;quot;, &amp;quot;Contemplation&amp;quot;, &amp;quot;Scan&amp;quot;, &amp;quot;Telesense&amp;quot;, &amp;quot;Appraise&amp;quot;, &amp;quot;Trueassess&amp;quot;, &amp;quot;Artifactlist&amp;quot;, &amp;quot;Warning&amp;quot;, &amp;quot;Viewshrine&amp;quot;, &amp;quot;Landsense&amp;quot; ], &amp;quot;descs&amp;quot;: [ &amp;quot;Gain knowledge of your immediate surroundings.&amp;quot;, &amp;quot;See summarized information about your surroundings.&amp;quot;, &amp;quot;Discover hidden exits.&amp;quot;, &amp;quot;How much more time do those items have?&amp;quot;, &amp;quot;See extended distances in your line of sight.&amp;quot;, &amp;quot;Take notice of those in the skies.&amp;quot;, &amp;quot;Gain information about your extended surroundings.&amp;quot;, &amp;quot;Attempt to locate another player from afar.&amp;quot;, &amp;quot;What do you have in your containers?&amp;quot;, &amp;quot;Increase your resistance to hypnosis.&amp;quot;, &amp;quot;Watch the forest canopies for movement.&amp;quot;, &amp;quot;Attune yourself to the Underworld.&amp;quot;, &amp;quot;Scan your pipes with utmost speed.&amp;quot;, &amp;quot;Quickly discover what elixirs and salves you are holding.&amp;quot;, &amp;quot;Search your location for hidden beings.&amp;quot;, &amp;quot;Quick glance of all your letters.&amp;quot;, &amp;quot;Scan the titles of books you own.&amp;quot;, &amp;quot;Watch the skies for movement.&amp;quot;, &amp;quot;Detect the nodes of power in your area.&amp;quot;, &amp;quot;See a list of your keys and which doors they open.&amp;quot;, &amp;quot;Heightened awareness of your surroundings.&amp;quot;, &amp;quot;View the holy rites operating in your location.&amp;quot;, &amp;quot;The ability to search for traps in your location.&amp;quot;, &amp;quot;Check the status of your magickal items.&amp;quot;, &amp;quot;Use infravision to see in the dark.&amp;quot;, &amp;quot;See the actions of cloaked players.&amp;quot;, &amp;quot;Give yourself the power of the third eye.&amp;quot;, &amp;quot;Discover what tattoos are on another player.&amp;quot;, &amp;quot;Discover what defences are protecting an individual.&amp;quot;, &amp;quot;The ability to sense wormholes in your location.&amp;quot;, &amp;quot;Sense the bodies of the recently slain.&amp;quot;, &amp;quot;Perceive the state of another&#039;s mental strength.&amp;quot;, &amp;quot;Seekout the locations of your allies and enemies.&amp;quot;, &amp;quot;Heighten your awareness to telepathic attempts.&amp;quot;, &amp;quot;Quickly take note of someone&#039;s carried possessions.&amp;quot;, &amp;quot;Gain more detailed information concerning your foe.&amp;quot;, &amp;quot;See what artifact powers surround an individual.&amp;quot;, &amp;quot;Watch for the prying eyes of the enemy.&amp;quot;, &amp;quot;Gain a detailed understanding of a shrine.&amp;quot;, &amp;quot;The ability to recognize mortals entering the realm.&amp;quot; ] }&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.Info&lt;br /&gt;
*** Information about a single skill, only sent upon request&lt;br /&gt;
*** Message body is an object, keys are &amp;quot;group&amp;quot;, &amp;quot;skill&amp;quot;, and &amp;quot;info&amp;quot;, values are strings&lt;br /&gt;
*** Group and skill identify the request, info is a description (usually multi-line) of the skill&#039;s functionality and usage&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Info { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;skill&amp;quot;: &amp;quot;deathsight&amp;quot;, &amp;quot;info&amp;quot;: &amp;quot;Syntax: DEATHSIGHT\n        RELAX DEATHSIGHT\n\nUsing this ability, your mind is now capable of attuning itself to the realm of the dead. While doing so, you will be alerted whenever anyone dies.&amp;quot; }&lt;br /&gt;
==== Comm.Channel ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** Request for the server to send Comm.Channel.Players&lt;br /&gt;
*** No message body.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players &amp;quot;&amp;quot;&lt;br /&gt;
** Comm.Channel.Enable&lt;br /&gt;
*** Used to tell the game to turn on a character channel without typing in a command line command.&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;newbie&amp;quot;&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;clt Consortium&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** List of players and organizations (city, guild, ...) that they share with this player&lt;br /&gt;
*** Message body is an array with each element describing one player&lt;br /&gt;
*** Each element is an object with keys &amp;quot;name&amp;quot; and &amp;quot;channels&amp;quot;, name is a string, channels is an array&lt;br /&gt;
*** The channels array may be omitted if empty; if given, it is a list of organization names&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [{&amp;quot;name&amp;quot;: &amp;quot;Player1&amp;quot;, &amp;quot;channels: [&amp;quot;Some city&amp;quot;, &amp;quot;Some guild&amp;quot;]}, {&amp;quot;name&amp;quot;: &amp;quot;Player2&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [ { &amp;quot;name&amp;quot;: &amp;quot;Ahkan&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot; ] }, { &amp;quot;name&amp;quot;: &amp;quot;Sharatar&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot;, &amp;quot;The Revenants&amp;quot; ] } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.List&lt;br /&gt;
*** List of communication channels available to the player, sent on login/negotiation and if changed&lt;br /&gt;
*** Message body is an array of objects, each object representing one channel&lt;br /&gt;
*** Each object has keys &amp;quot;name&amp;quot;, &amp;quot;caption&amp;quot; and &amp;quot;command&amp;quot; - name is internal name, caption is player-visible name, command is command used to communicate over this channel&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [{&amp;quot;name&amp;quot;:&amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some city&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;ct&amp;quot;}, {&amp;quot;name&amp;quot;:&amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some guild&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;gt&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [ { &amp;quot;name&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Newbie&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;newbie&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;market&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Market&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;market&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Stavenn&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;ct&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Revenants&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;gt&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Start&lt;br /&gt;
*** Informs the client that text that follows is something said over a communication channel&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** For tells from/to another player, the channel name is &amp;quot;tell Name&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Start &amp;quot;ct&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039; :Comm.Channel.Start &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
** Comm.Channel.End&lt;br /&gt;
*** Ends a channel text started by Comm.Channel.Start&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.End &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Text&lt;br /&gt;
*** The text of the communication that you heard, who spoke, and which channel it was on &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text   {   &amp;quot;channel&amp;quot;:   &amp;quot;says&amp;quot;,   &amp;quot;talker&amp;quot;:   &amp;quot;Tecton&amp;quot;,   &amp;quot;text&amp;quot;: &amp;quot;(Tecton the Terraformer says, \&amp;quot;Are we releasing dragon lairs or the phase artefact first?\&amp;quot;&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;tell Jeremy&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;33mYou tell Jeremy, \&amp;quot;Hi.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;32m(Newbie): You say, \&amp;quot;Hello.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
==== Room ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Room.Info&lt;br /&gt;
*** Contains information about the room that the player is in. Some of these may be IRE-specific&lt;br /&gt;
*** Message body is an object with the following keys&lt;br /&gt;
**** &amp;quot;num&amp;quot; - number identifying the room&lt;br /&gt;
**** &amp;quot;name&amp;quot; - string containing the brief description&lt;br /&gt;
**** &amp;quot;area&amp;quot; - string containing area name&lt;br /&gt;
**** &amp;quot;environment&amp;quot; - string containing environment type (&amp;quot;Hills&amp;quot;, &amp;quot;Ocean&amp;quot;, ...)&lt;br /&gt;
**** &amp;quot;coords&amp;quot; - room coordinates (string of numbers separated by commas - area,X,Y,X,building, building is optional&lt;br /&gt;
**** &amp;quot;map&amp;quot; - map information - URL pointing to a map image, followed by X and Y room (not pixel) coordinates on the map&lt;br /&gt;
**** &amp;quot;details&amp;quot; - array holding further information about a room - shop,bank,...&lt;br /&gt;
**** &amp;quot;exits&amp;quot; - object containing exits, each key is a direction and each value is the number identifying the target room&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Info {&amp;quot;num&amp;quot;: 12345, &amp;quot;name&amp;quot;: &amp;quot;On a hill&amp;quot;, &amp;quot;area&amp;quot;: &amp;quot;Barren hills&amp;quot;, &amp;quot;environment&amp;quot;: &amp;quot;Hills&amp;quot;, &amp;quot;coords&amp;quot;: &amp;quot;45,5,4,3&amp;quot;, &amp;quot;map&amp;quot;: &amp;quot;www.imperian.com/itex/maps/clientmap.php?map=45&amp;amp;level=3 5 4&amp;quot;, &amp;quot;exits&amp;quot;: { &amp;quot;n&amp;quot;: 12344, &amp;quot;se&amp;quot;: 12336 }, &amp;quot;details&amp;quot;: [ &amp;quot;shop&amp;quot;, &amp;quot;bank&amp;quot; ] }&lt;br /&gt;
** Room.WrongDir&lt;br /&gt;
*** Sent if the player attempts to move in a non-existant direction using the standard movement commands&lt;br /&gt;
*** Upon receiving this message, the client can safely assume that the specified direction does not lead anywhere at this time&lt;br /&gt;
*** Message body is a string with the name if the non-existant exit&lt;br /&gt;
*** Example: Room.WrongDir &amp;quot;ne&amp;quot;&lt;br /&gt;
** Room.Players&lt;br /&gt;
*** Object containing player details, each key is the short name of the player and each value is the full name including titles for the player &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Players [{ &amp;quot;name&amp;quot;: &amp;quot;Tecton&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Tecton the Terraformer&amp;quot; }, {&amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Cardan, the Curious&amp;quot; }]&lt;br /&gt;
** Room.AddPlayer&lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being added to the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.AddPlayer { &amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;(Cardan, the Curious)&amp;quot; }&lt;br /&gt;
** Room.RemovePlayer &lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being removed from the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.RemovePlayer &amp;quot;Cardan&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Redirect ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Redirect.Window&lt;br /&gt;
*** Specifies a window to redirect further input to&lt;br /&gt;
*** Message body is a string specifying the window to redirect to&lt;br /&gt;
*** The main window is referred to as &amp;quot;main&amp;quot;, and is the default if the message body is omitted or empty&lt;br /&gt;
*** Example: Redirect.Window &amp;quot;map&amp;quot;&lt;br /&gt;
==== IRE ====&lt;br /&gt;
===== IRE.Composer =====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Composer.Edit&lt;br /&gt;
*** Sent by the server when the player enters an in-game editor. Body is an object, with keys &amp;quot;title&amp;quot; and &amp;quot;text&amp;quot;. Text contains the current buffer, title is a title that can be shown to the user.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.Edit { &amp;quot;title&amp;quot;: &amp;quot;Composer&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Composer.SetBuffer&lt;br /&gt;
*** Sent by the client upon successfully editing a text which was sent to the client in an IRE.Composer.Edit message earlier&lt;br /&gt;
*** Sending this message only changes the edit buffer, but does not end the editing session&lt;br /&gt;
*** On IRE games, the client may send the command ***save to save a text, or command ***quit to abort editing (IRE.Composer.SetBuffer is not sent in this case) - this behaviour is IRE-specific and is one of the reasons why the Composer module is in the IRE namespace&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.SetBuffer  &amp;quot;This is a bunch of text.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== IRE.Display =====&lt;br /&gt;
* Send by server:&lt;br /&gt;
** IRE.Display.FixedFont &amp;quot;start&amp;quot; | &amp;quot;stop&amp;quot;&lt;br /&gt;
*** Sent by the server to indicate between the start and stop messages should be displayed in a fixed-width font.&lt;br /&gt;
** IRE.Display.Ohmap &amp;quot;start&amp;quot; | &amp;quot;stop&amp;quot;&lt;br /&gt;
*** Sent by the server to indicated that an overhead map is being sent to the client.&lt;br /&gt;
&lt;br /&gt;
===== IRE.Misc =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Misc.Voted&lt;br /&gt;
*** Informs the game a vote button was clicked.&lt;br /&gt;
*** Example: IRE.Misc.Voted &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Misc.RemindVote&lt;br /&gt;
*** Message sent to remind the player to vote.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.RemindVote &amp;quot;http://www.imperian.com/vote&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.Achievement&lt;br /&gt;
*** Used to send basic achievement data to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Achievement [{&amp;quot;name&amp;quot;: &amp;quot;HighestLevelAchieved&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;89&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.URL&lt;br /&gt;
*** Sends a url to the client to open in a window when clicked.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.URL[{&amp;quot;url&amp;quot;: &amp;quot;http://www.imperian.com/tos&amp;quot;, &amp;quot;window&amp;quot;: &amp;quot;ire_game_tos&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.MISC.Tip&lt;br /&gt;
*** Sends a line of text to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Tip &amp;quot;This is a tip!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== IRE.Rift =====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Rift.List&lt;br /&gt;
*** contents of a Rift storage&lt;br /&gt;
*** sent upon receiving the IRE.Rift.Request message&lt;br /&gt;
*** message body is an array, with each element being an object containing three keys - &amp;quot;name&amp;quot; is item name, &amp;quot;amount&amp;quot; is a number holding the item&#039;s amount, and &amp;quot;desc&amp;quot; is user-visible description&lt;br /&gt;
** IRE.Rift.Change&lt;br /&gt;
*** sent whenever the item amount in a Rift changes&lt;br /&gt;
*** message body is an object with the same structure as one element of an array sent with the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Rift.Request&lt;br /&gt;
*** asks the server to send the Rift contents using the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
===== IRE.Sound =====&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Sound.Play&lt;br /&gt;
** IRE.Sound.Stop&lt;br /&gt;
** IRE.Sound.Stopall&lt;br /&gt;
** IRE.Sound.Preload&lt;br /&gt;
&lt;br /&gt;
==== IRE.Target ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Target.Set&lt;br /&gt;
*** Sends the currently set target to the server to be used by the internal alias system. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
* Sent by server&lt;br /&gt;
&lt;br /&gt;
** IRE.Target.Set &lt;br /&gt;
*** Sends the target the client is trying to set. This is called from cycling targets with tab targeting.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
** IRE.Target.Info &lt;br /&gt;
*** Sends an array with the current target information.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Info { &amp;quot;id&amp;quot;: &amp;quot;1101&amp;quot;, &amp;quot;short_desc&amp;quot;: &amp;quot;a brawny goblin smith&amp;quot;, &amp;quot;hpperc&amp;quot;: &amp;quot;100%&amp;quot; }&lt;br /&gt;
** IRE.Target.Request&lt;br /&gt;
&lt;br /&gt;
===== IRE.Tasks =====&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Tasks.Request &lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Tasks.List&lt;br /&gt;
*** This is used to send a list of quest, tasks, and achievements, depending on what the game supports.&lt;br /&gt;
*** Sends an array of items with the following keys:&lt;br /&gt;
**** id: A numeric identifier&lt;br /&gt;
**** name: The name of the quest, task, or achievement.&lt;br /&gt;
**** type: Is this a quest, task, or achievement.&lt;br /&gt;
**** cmd: The command to get more information for the quest. Good for MXP links.&lt;br /&gt;
**** desc: The description of the event.&lt;br /&gt;
**** status: 0 or 1 based on if it is completed or not.&lt;br /&gt;
**** group: What group should this be assigned to. This is mainly for client display purposes.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Tasks.List [ { &amp;quot;id&amp;quot;: &amp;quot;184&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;For the sake of the village&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;The herbs in Maeven&#039;s garden are painstakingly cared for so that her fellow villagers can stay healthy. She won&#039;t object to borrowing a bit of the magick power the bakuls have, if it can help with her work.\n\nThe bakul herbalist might have something Maeven wants.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;quests&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;quest For the sake of the village&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Current Quests&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;313&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Apostate&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Destroy a Shrine.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;achievements&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;achievement apostate&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Sects&amp;quot; } ]&lt;br /&gt;
** IRE.Tasks.Update &lt;br /&gt;
** IRE.Tasks.Completed&lt;br /&gt;
&lt;br /&gt;
===== IRE.Time =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Time.Request&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Time.List&lt;br /&gt;
*** A list of the current time condition in the game world. &lt;br /&gt;
*** Used in the client to display the the day/night indicator.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.List { &amp;quot;day&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;mon&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;month&amp;quot;: &amp;quot;Letum&amp;quot;, &amp;quot;year&amp;quot;: &amp;quot;98&amp;quot;, &amp;quot;hour&amp;quot;: &amp;quot;41&amp;quot;, &amp;quot;daynight&amp;quot;: &amp;quot;80&amp;quot; }&lt;br /&gt;
** IRE.Time.Update&lt;br /&gt;
*** Used to update time conditions.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.Update { &amp;quot;daynight&amp;quot;: &amp;quot;112&amp;quot; }&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=1146</id>
		<title>GMCP</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=1146"/>
		<updated>2018-05-31T20:57:52Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aetolia-dwarf.jpg|right|frame|caption|Dwarf Terradrim from Aetolia.]] General MUD Telnet Protocol (GMCP) is a protocol used to send data from the game server to the player client. This data transfer happens behind the scenes and is not seen by the players. This allows the game server to send messages to the client to update basic character, room, and game information. Character health is an example of information that is continually passed to the client from the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These messages can also be accessed by the player for use in [[reflexes]]. We are working simplifying the process of capturing GMCP data for use in the client in a future version of the client.&lt;br /&gt;
&lt;br /&gt;
There is a configuration option in the Advanced Settings tab that will allow you to see GMCP messages as they happen.&lt;br /&gt;
&lt;br /&gt;
Module and message names are not case sensitive. JSON key names are case sensitive.&lt;br /&gt;
&lt;br /&gt;
=== Supported modules ===&lt;br /&gt;
&lt;br /&gt;
This documentation covers the following GMCP messages for the Iron Realms Games.&lt;br /&gt;
&lt;br /&gt;
* Core: core functionality&lt;br /&gt;
* Char: information about a character&lt;br /&gt;
* Char.Afflictions: information the characters afflictions&lt;br /&gt;
* Char.Defences- information the characters defences&lt;br /&gt;
* Char.Items: information about items in inventory and room, with live updates&lt;br /&gt;
* Char.Skills: information about skills known by the player&lt;br /&gt;
* Comm.Channel: identification of communication channels and player lists&lt;br /&gt;
* Room: various information about the current room&lt;br /&gt;
* Redirect: redirect outpot to another window&lt;br /&gt;
* IRE.Composer: IRE-specific, used to edit bigger texts client-side&lt;br /&gt;
* IRE.Display: IRE-specific display information&lt;br /&gt;
* IRE.FileStore: used internally by the Nexus client&lt;br /&gt;
* IRE.Misc: used internally by the fMUD and Nexus clients&lt;br /&gt;
* IRE.Rift: IRE-specific, transmits information about the Rift contents&lt;br /&gt;
* IRE.Sound: Yes. Sound can be sent.&lt;br /&gt;
* IRE.Target: information about the current player target.&lt;br /&gt;
* IRE.Tasks: information about tasks, quests, and achievements.&lt;br /&gt;
* IRE.Time: information about the current time and date conditions in the game.&lt;br /&gt;
* IRE.Wiz: used internally by the Nexus client&lt;br /&gt;
&lt;br /&gt;
=== Supported messages by modules ===&lt;br /&gt;
&lt;br /&gt;
==== Core ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Core.Hello&lt;br /&gt;
*** Needs to be the first message that the client sends, used to identify the client&lt;br /&gt;
*** Message body is an object with keys &amp;quot;client&amp;quot; and &amp;quot;version&amp;quot;, containing the client&#039;s name and version&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Hello {&amp;quot;Client&amp;quot;:&amp;quot;Mudlet&amp;quot;,&amp;quot;Version&amp;quot;:&amp;quot;3.0.0&amp;quot;}&lt;br /&gt;
** Core.Supports.Set&lt;br /&gt;
*** Notifies the server about packages supported by the client&lt;br /&gt;
*** If another Core.Supports.*** package has been received earlier, the list is deleted and replaced with the new one&lt;br /&gt;
*** Message body is an array of strings, each consisting of the module name and version, separated by space&lt;br /&gt;
*** Module version is a positive non-zero integer&lt;br /&gt;
*** Most client implementations will only need to send Set once and won&#039;t need Add/Remove; exceptions are module implementations provided by plug-ins&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Set [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Add&lt;br /&gt;
*** Similar to Set, but appends the supported module list to the one sent earlier&lt;br /&gt;
*** If no list was sent yet, the behaviour is identical to Set&lt;br /&gt;
*** If the list includes module names that were already included earlier, the new version number takes precedence over the previously sent one, even if the newly sent number is lower&lt;br /&gt;
*** Message body format is identical to that of Set&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Add [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Remove&lt;br /&gt;
*** Removes specified modules from the list of supported modules&lt;br /&gt;
*** Message body format is similar to Set, except that module version numbers are optional and ignored if given&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Remove [ &amp;quot;Char&amp;quot;, &amp;quot;Char.Skills&amp;quot;, &amp;quot;Char.Items&amp;quot; ]&lt;br /&gt;
** Core.KeepAlive&lt;br /&gt;
*** Causes the server to reset the timeout for the logged character, no message body&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** causes the server to send a Core.Ping back&lt;br /&gt;
*** message body is a number which indicates average ping time from previous requests, if available&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Ping 120&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** Sent in reply to Core.Ping. No body.&lt;br /&gt;
** Core.Goodbye&lt;br /&gt;
*** Sent by server immediately before terminating a connection&lt;br /&gt;
*** Message body is a string to be shown to the user - it can explain the reason for the disconnect&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Goodbye &amp;quot;Goodbye, adventurer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Char ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Login&lt;br /&gt;
*** Used to log in a character, only interpreted if no character is logged in for that connection&lt;br /&gt;
*** Message body is an object with keys &amp;quot;name&amp;quot; and &amp;quot;password&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Login { &amp;quot;name&amp;quot;: &amp;quot;somename&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;somepassword&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Name&lt;br /&gt;
*** Sends the character name and full name which includes the title. This is only sent on login.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Name { &amp;quot;name&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Neophyte Olad&amp;quot; }&lt;br /&gt;
** Char.Vitals&lt;br /&gt;
*** Basic character attributes such as health, mana, etc.&lt;br /&gt;
*** Message body is an object containing several variables&lt;br /&gt;
*** Additionally, each variable is included in a string, in the format name:cur/max&lt;br /&gt;
*** Interpretation of the variables is game specific&lt;br /&gt;
*** It is generally safe to assume that the known values are numbers (even though encoded as strings), but other datatypes can be present&lt;br /&gt;
*** The &amp;quot;charstats&amp;quot; attribute, if present, holds a list of strings that the client may choose to display to the player in a client-specific way, these hold information about the character state that the game wishes to show to the player&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Vitals { &amp;quot;hp&amp;quot;: &amp;quot;4500&amp;quot;, &amp;quot;maxhp&amp;quot;: &amp;quot;4800&amp;quot;, &amp;quot;mp&amp;quot;: &amp;quot;1200&amp;quot;, &amp;quot;maxmp&amp;quot;: &amp;quot;2500&amp;quot;, &amp;quot;ep&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;maxep&amp;quot;: &amp;quot;16000&amp;quot;, &amp;quot;wp&amp;quot;: &amp;quot;14000&amp;quot;, &amp;quot;maxwp&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;nl&amp;quot;: &amp;quot;10&amp;quot;, &amp;quot;string&amp;quot;: &amp;quot;H:4500/4800 M:1200/2500 E:15000/16000 W:14000/15000 NL:10/100&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Additional Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** All classes: Bleed, Rage&lt;br /&gt;
**** Apostates: Essence&lt;br /&gt;
**** Bard: Stance, Voice Balance&lt;br /&gt;
**** Blademaster: Stance&lt;br /&gt;
**** Druid: Current Morph, Sunlight Energy&lt;br /&gt;
**** Infernal: Essence, Weaponmastery Spec&lt;br /&gt;
**** Magi: Channels&lt;br /&gt;
**** Monk: Kai Energy, Tekura stance&lt;br /&gt;
**** Occultist: Karma, Entity Balance&lt;br /&gt;
**** Paladin: Devotion, Weaponmastery Spec&lt;br /&gt;
**** Priest: Devotion&lt;br /&gt;
**** Runewarden: Weaponmastery Spec&lt;br /&gt;
**** Sentinel: Current Morph&lt;br /&gt;
**** Serpent: Secreted Venom&lt;br /&gt;
**** Shaman: Number of spirits bound&lt;br /&gt;
**** Sylvan: Elemental Channels, Sunlight Energy&lt;br /&gt;
*** &#039;&#039;&#039;Additional Aetolia Keys&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Additional Imperian Keys&#039;&#039;&#039;&lt;br /&gt;
**** General: bleed, flying, prone, stunned, dead, blind, phased, res_weakness, vote&lt;br /&gt;
**** Balances: leftarm, rightarm, health, herb, salve, toadstool, pipe, tree, focus, purge&lt;br /&gt;
**** Resources: kai, devotion, essence, fanatism, rage, fire, ice, faith, health_reserve, mana_reserve&lt;br /&gt;
**** Items: leftwield, leftwield_name, rightwield, rightwield_name, mount&lt;br /&gt;
** Char.StatusVars&lt;br /&gt;
*** Sent by server after a successful login or after the module is enabled&lt;br /&gt;
*** Contains a list of character variables (level, race, etc)&lt;br /&gt;
*** Message body is an object&lt;br /&gt;
*** Each object element is a name-caption pair, name is the internal name and caption the user-visible one&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.StatusVars { &amp;quot;level&amp;quot;: &amp;quot;Level&amp;quot;, &amp;quot;race&amp;quot;: &amp;quot;Race&amp;quot;, &amp;quot;guild&amp;quot;: &amp;quot;Guild&amp;quot; }&lt;br /&gt;
** Char.Status&lt;br /&gt;
*** Values of character values defined by StatusVars.&lt;br /&gt;
*** A full list is sent by server right after StatusVars, and changes are sent in subsequent messages as they occur.&lt;br /&gt;
*** With the exception of the initial Status message, messages only contain changed values; if a variable is not included, it has not changed since the previous Status message.&lt;br /&gt;
*** Message body is an object.&lt;br /&gt;
*** Each object element is a name-value pair, name is the internal name defined by the StatusVars message and value is the variable value.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Status { &amp;quot;level&amp;quot;: &amp;quot;58&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;Antioch&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039; Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** name &lt;br /&gt;
**** fullname&lt;br /&gt;
**** age&lt;br /&gt;
**** race&lt;br /&gt;
**** specialisation&lt;br /&gt;
**** level&lt;br /&gt;
**** xp&lt;br /&gt;
**** xprank&lt;br /&gt;
**** class&lt;br /&gt;
**** city&lt;br /&gt;
**** house&lt;br /&gt;
**** order&lt;br /&gt;
**** boundcredits&lt;br /&gt;
**** unboundcredits&lt;br /&gt;
**** lessons&lt;br /&gt;
**** explorerrank&lt;br /&gt;
**** mayancrowns&lt;br /&gt;
**** boundmayancrowns&lt;br /&gt;
**** gold&lt;br /&gt;
**** bank&lt;br /&gt;
**** unread_msgs&lt;br /&gt;
**** unread_news&lt;br /&gt;
**** target&lt;br /&gt;
**** gender&lt;br /&gt;
&lt;br /&gt;
===== Char.Afflictions =====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Afflictions.List&lt;br /&gt;
*** Sends an array of current character afflictions.&lt;br /&gt;
**** name: The name of the affliction&lt;br /&gt;
**** cure: The basic cure of the affliction. This is used for links to cure even though other options may exist to cure the affliction.&lt;br /&gt;
**** desc: A description of what this affliction does.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.List [ { &amp;quot;name&amp;quot;: &amp;quot;weariness&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Decreases cutting and blunt damage that you inflict by 30%.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;slow herbs&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;apply epidermal&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Increases the time needed to regain herb balance by 1.25 seconds.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nausea&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat nightshade&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Causes periodic vomiting, which does damage and increases hunger.&amp;quot; } ]&lt;br /&gt;
** Char.Afflictions.Add&lt;br /&gt;
*** Add an affliction to the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Add { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }&lt;br /&gt;
** Char.Afflictions.Remove&lt;br /&gt;
*** Removes an affliction from the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Remove [ &amp;quot;asthma&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
===== Char.Defences=====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Defences.List&lt;br /&gt;
*** Send an array of all the defences a character currently has.&lt;br /&gt;
**** name: The name of the defence.&lt;br /&gt;
**** desc: The description of the defence.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.List [ { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;blind&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;blind&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nightsight&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;nightsight&amp;quot; } ]&lt;br /&gt;
** Char.Defences.Add&lt;br /&gt;
*** Sent when a defence is added to a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Add { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }&lt;br /&gt;
** Char.Defences.Remove&lt;br /&gt;
*** Sent when a defence is removed from a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Remove [ &amp;quot;blind&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
===== Char.Items =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Items.Contents&lt;br /&gt;
*** Request for the server to send the list of items located inside another item.&lt;br /&gt;
*** Message body is a number identifying the item.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Item.Contents 12345&lt;br /&gt;
** Char.Items.Inv&lt;br /&gt;
*** Request for the server to send the list of items in player&#039;s inventory.&lt;br /&gt;
*** Message body is empty.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Inv &amp;quot;&amp;quot;&lt;br /&gt;
** Char.Items.Room&lt;br /&gt;
*** Sent by the client to refresh the items in a room.&lt;br /&gt;
*** Message body is empty&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Room &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Items.List&lt;br /&gt;
*** List of items at a specified location (room, inv, held container)&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;items&amp;quot;&lt;br /&gt;
*** Location value is a string, &amp;quot;inv&amp;quot;, &amp;quot;room&amp;quot;, or &amp;quot;repNUMBER&amp;quot; - the last one is container identification&lt;br /&gt;
*** Items value is an array, whose each item is an object with keys &amp;quot;id&amp;quot;, &amp;quot;name&amp;quot; and optionally &amp;quot;attrib&amp;quot;&lt;br /&gt;
*** ID is a number identifying the item, name is a string containing a short player-visible item description&lt;br /&gt;
*** Icon is the image the item is associated with in the client.&lt;br /&gt;
*** Attrib is a string consisting of characters describing item properties:&lt;br /&gt;
**** &amp;quot;w&amp;quot; = worn, &lt;br /&gt;
**** &amp;quot;W&amp;quot; = wearable but not worn &lt;br /&gt;
**** &amp;quot;l&amp;quot; = wielded &lt;br /&gt;
**** &amp;quot;g&amp;quot; = groupable&lt;br /&gt;
**** &amp;quot;c&amp;quot; = container&lt;br /&gt;
**** &amp;quot;t&amp;quot; = takeable&lt;br /&gt;
**** &amp;quot;m&amp;quot; = monster&lt;br /&gt;
**** &amp;quot;d&amp;quot; = dead monster&lt;br /&gt;
**** &amp;quot;x&amp;quot; = should not be targeted (guards, ...)&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.List { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;items&amp;quot;: [ { &amp;quot;id&amp;quot;: &amp;quot;12807&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a personal journal&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;scroll&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;l&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } ] }&lt;br /&gt;
** Char.Items.Add&lt;br /&gt;
*** Informs the client about an item being added to the specified location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an object with the same structure as one item from the items array of List&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;c&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
** Char.Items.Remove&lt;br /&gt;
*** Informs the client about an item being removed from the location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an integer value identifying the item&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
** Char.Items.Update&lt;br /&gt;
*** Informs the client about an item&#039;s attributes being changed - only sent for inventory items&lt;br /&gt;
*** Message body syntax the same as with Add&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Update { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;60572&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an ornate steel rapier&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
===== Char.Skills =====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Skills.Get&lt;br /&gt;
*** Sent by client to request skill information&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot; and &amp;quot;name&amp;quot;&lt;br /&gt;
*** If both group and name is provided, the server will send Char.Skills.Info for the specified skill&lt;br /&gt;
*** If group is provided but name is not, the server will send Char.Skills.List for that group&lt;br /&gt;
*** Otherwise the server will send Char.Skills.Groups&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;Perception&amp;quot;}&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;perception&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Deathsight&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Skills.Groups&lt;br /&gt;
*** Groups of skills available to the character&lt;br /&gt;
*** Sent by server on request or at any time (usually if the list changes)&lt;br /&gt;
*** For IRE games, groups are skills like Survival or Elemancy&lt;br /&gt;
*** Message body is an array including the name and current rank of each skill the character has.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Groups [ { &amp;quot;name&amp;quot;: &amp;quot;Perception&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Transcendent (100%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Survival&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Weaponry&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Tattoos&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evasion&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Engineering&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Taming&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Concoctions&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Toxins&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Smithing&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Malignosis&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (1%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Necromancy&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evileye&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (40%)&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.List&lt;br /&gt;
*** List of skills in a group available to the character&lt;br /&gt;
*** Sent by server on request only&lt;br /&gt;
*** For IRE games, this is the list visible on AB &amp;lt;skillname&amp;gt;&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot;, &amp;quot;list&amp;quot;, and &amp;quot;desc&amp;quot;.&lt;br /&gt;
*** The list value is an array of strings, each being the name of one skill&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.List { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;list&amp;quot;: [ &amp;quot;Looking&amp;quot;, &amp;quot;Glancing&amp;quot;, &amp;quot;Secrets&amp;quot;, &amp;quot;Decaylist&amp;quot;, &amp;quot;Squinting&amp;quot;, &amp;quot;Flyers&amp;quot;, &amp;quot;Observe&amp;quot;, &amp;quot;Farsight&amp;quot;, &amp;quot;Containerlist&amp;quot;, &amp;quot;Vigilance&amp;quot;, &amp;quot;Treewatch&amp;quot;, &amp;quot;Deathsight&amp;quot;, &amp;quot;Pipelist&amp;quot;, &amp;quot;Elixlist&amp;quot;, &amp;quot;Search&amp;quot;, &amp;quot;Letterlist&amp;quot;, &amp;quot;Booklist&amp;quot;, &amp;quot;Skywatch&amp;quot;, &amp;quot;PowerNodes&amp;quot;, &amp;quot;Keylist&amp;quot;, &amp;quot;Alertness&amp;quot;, &amp;quot;Rites&amp;quot;, &amp;quot;Traps&amp;quot;, &amp;quot;Magicklist&amp;quot;, &amp;quot;Nightsight&amp;quot;, &amp;quot;Hypersight&amp;quot;, &amp;quot;Thirdeye&amp;quot;, &amp;quot;Tattoos&amp;quot;, &amp;quot;Discernment&amp;quot;, &amp;quot;Wormholes&amp;quot;, &amp;quot;Rivensense&amp;quot;, &amp;quot;Contemplation&amp;quot;, &amp;quot;Scan&amp;quot;, &amp;quot;Telesense&amp;quot;, &amp;quot;Appraise&amp;quot;, &amp;quot;Trueassess&amp;quot;, &amp;quot;Artifactlist&amp;quot;, &amp;quot;Warning&amp;quot;, &amp;quot;Viewshrine&amp;quot;, &amp;quot;Landsense&amp;quot; ], &amp;quot;descs&amp;quot;: [ &amp;quot;Gain knowledge of your immediate surroundings.&amp;quot;, &amp;quot;See summarized information about your surroundings.&amp;quot;, &amp;quot;Discover hidden exits.&amp;quot;, &amp;quot;How much more time do those items have?&amp;quot;, &amp;quot;See extended distances in your line of sight.&amp;quot;, &amp;quot;Take notice of those in the skies.&amp;quot;, &amp;quot;Gain information about your extended surroundings.&amp;quot;, &amp;quot;Attempt to locate another player from afar.&amp;quot;, &amp;quot;What do you have in your containers?&amp;quot;, &amp;quot;Increase your resistance to hypnosis.&amp;quot;, &amp;quot;Watch the forest canopies for movement.&amp;quot;, &amp;quot;Attune yourself to the Underworld.&amp;quot;, &amp;quot;Scan your pipes with utmost speed.&amp;quot;, &amp;quot;Quickly discover what elixirs and salves you are holding.&amp;quot;, &amp;quot;Search your location for hidden beings.&amp;quot;, &amp;quot;Quick glance of all your letters.&amp;quot;, &amp;quot;Scan the titles of books you own.&amp;quot;, &amp;quot;Watch the skies for movement.&amp;quot;, &amp;quot;Detect the nodes of power in your area.&amp;quot;, &amp;quot;See a list of your keys and which doors they open.&amp;quot;, &amp;quot;Heightened awareness of your surroundings.&amp;quot;, &amp;quot;View the holy rites operating in your location.&amp;quot;, &amp;quot;The ability to search for traps in your location.&amp;quot;, &amp;quot;Check the status of your magickal items.&amp;quot;, &amp;quot;Use infravision to see in the dark.&amp;quot;, &amp;quot;See the actions of cloaked players.&amp;quot;, &amp;quot;Give yourself the power of the third eye.&amp;quot;, &amp;quot;Discover what tattoos are on another player.&amp;quot;, &amp;quot;Discover what defences are protecting an individual.&amp;quot;, &amp;quot;The ability to sense wormholes in your location.&amp;quot;, &amp;quot;Sense the bodies of the recently slain.&amp;quot;, &amp;quot;Perceive the state of another&#039;s mental strength.&amp;quot;, &amp;quot;Seekout the locations of your allies and enemies.&amp;quot;, &amp;quot;Heighten your awareness to telepathic attempts.&amp;quot;, &amp;quot;Quickly take note of someone&#039;s carried possessions.&amp;quot;, &amp;quot;Gain more detailed information concerning your foe.&amp;quot;, &amp;quot;See what artifact powers surround an individual.&amp;quot;, &amp;quot;Watch for the prying eyes of the enemy.&amp;quot;, &amp;quot;Gain a detailed understanding of a shrine.&amp;quot;, &amp;quot;The ability to recognize mortals entering the realm.&amp;quot; ] }&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.Info&lt;br /&gt;
*** Information about a single skill, only sent upon request&lt;br /&gt;
*** Message body is an object, keys are &amp;quot;group&amp;quot;, &amp;quot;skill&amp;quot;, and &amp;quot;info&amp;quot;, values are strings&lt;br /&gt;
*** Group and skill identify the request, info is a description (usually multi-line) of the skill&#039;s functionality and usage&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Info { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;skill&amp;quot;: &amp;quot;deathsight&amp;quot;, &amp;quot;info&amp;quot;: &amp;quot;Syntax: DEATHSIGHT\n        RELAX DEATHSIGHT\n\nUsing this ability, your mind is now capable of attuning itself to the realm of the dead. While doing so, you will be alerted whenever anyone dies.&amp;quot; }&lt;br /&gt;
==== Comm.Channel ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** Request for the server to send Comm.Channel.Players&lt;br /&gt;
*** No message body.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players &amp;quot;&amp;quot;&lt;br /&gt;
** Comm.Channel.Enable&lt;br /&gt;
*** Used to tell the game to turn on a character channel without typing in a command line command.&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;newbie&amp;quot;&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;clt Consortium&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** List of players and organizations (city, guild, ...) that they share with this player&lt;br /&gt;
*** Message body is an array with each element describing one player&lt;br /&gt;
*** Each element is an object with keys &amp;quot;name&amp;quot; and &amp;quot;channels&amp;quot;, name is a string, channels is an array&lt;br /&gt;
*** The channels array may be omitted if empty; if given, it is a list of organization names&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [{&amp;quot;name&amp;quot;: &amp;quot;Player1&amp;quot;, &amp;quot;channels: [&amp;quot;Some city&amp;quot;, &amp;quot;Some guild&amp;quot;]}, {&amp;quot;name&amp;quot;: &amp;quot;Player2&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [ { &amp;quot;name&amp;quot;: &amp;quot;Ahkan&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot; ] }, { &amp;quot;name&amp;quot;: &amp;quot;Sharatar&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot;, &amp;quot;The Revenants&amp;quot; ] } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.List&lt;br /&gt;
*** List of communication channels available to the player, sent on login/negotiation and if changed&lt;br /&gt;
*** Message body is an array of objects, each object representing one channel&lt;br /&gt;
*** Each object has keys &amp;quot;name&amp;quot;, &amp;quot;caption&amp;quot; and &amp;quot;command&amp;quot; - name is internal name, caption is player-visible name, command is command used to communicate over this channel&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [{&amp;quot;name&amp;quot;:&amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some city&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;ct&amp;quot;}, {&amp;quot;name&amp;quot;:&amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some guild&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;gt&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [ { &amp;quot;name&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Newbie&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;newbie&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;market&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Market&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;market&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Stavenn&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;ct&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Revenants&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;gt&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Start&lt;br /&gt;
*** Informs the client that text that follows is something said over a communication channel&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** For tells from/to another player, the channel name is &amp;quot;tell Name&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Start &amp;quot;ct&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039; :Comm.Channel.Start &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
** Comm.Channel.End&lt;br /&gt;
*** Ends a channel text started by Comm.Channel.Start&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.End &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Text&lt;br /&gt;
*** The text of the communication that you heard, who spoke, and which channel it was on &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text   {   &amp;quot;channel&amp;quot;:   &amp;quot;says&amp;quot;,   &amp;quot;talker&amp;quot;:   &amp;quot;Tecton&amp;quot;,   &amp;quot;text&amp;quot;: &amp;quot;(Tecton the Terraformer says, \&amp;quot;Are we releasing dragon lairs or the phase artefact first?\&amp;quot;&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;tell Jeremy&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;33mYou tell Jeremy, \&amp;quot;Hi.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;32m(Newbie): You say, \&amp;quot;Hello.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
==== Room ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Room.Info&lt;br /&gt;
*** Contains information about the room that the player is in. Some of these may be IRE-specific&lt;br /&gt;
*** Message body is an object with the following keys&lt;br /&gt;
**** &amp;quot;num&amp;quot; - number identifying the room&lt;br /&gt;
**** &amp;quot;name&amp;quot; - string containing the brief description&lt;br /&gt;
**** &amp;quot;area&amp;quot; - string containing area name&lt;br /&gt;
**** &amp;quot;environment&amp;quot; - string containing environment type (&amp;quot;Hills&amp;quot;, &amp;quot;Ocean&amp;quot;, ...)&lt;br /&gt;
**** &amp;quot;coords&amp;quot; - room coordinates (string of numbers separated by commas - area,X,Y,X,building, building is optional&lt;br /&gt;
**** &amp;quot;map&amp;quot; - map information - URL pointing to a map image, followed by X and Y room (not pixel) coordinates on the map&lt;br /&gt;
**** &amp;quot;details&amp;quot; - array holding further information about a room - shop,bank,...&lt;br /&gt;
**** &amp;quot;exits&amp;quot; - object containing exits, each key is a direction and each value is the number identifying the target room&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Info {&amp;quot;num&amp;quot;: 12345, &amp;quot;name&amp;quot;: &amp;quot;On a hill&amp;quot;, &amp;quot;area&amp;quot;: &amp;quot;Barren hills&amp;quot;, &amp;quot;environment&amp;quot;: &amp;quot;Hills&amp;quot;, &amp;quot;coords&amp;quot;: &amp;quot;45,5,4,3&amp;quot;, &amp;quot;map&amp;quot;: &amp;quot;www.imperian.com/itex/maps/clientmap.php?map=45&amp;amp;level=3 5 4&amp;quot;, &amp;quot;exits&amp;quot;: { &amp;quot;n&amp;quot;: 12344, &amp;quot;se&amp;quot;: 12336 }, &amp;quot;details&amp;quot;: [ &amp;quot;shop&amp;quot;, &amp;quot;bank&amp;quot; ] }&lt;br /&gt;
** Room.WrongDir&lt;br /&gt;
*** Sent if the player attempts to move in a non-existant direction using the standard movement commands&lt;br /&gt;
*** Upon receiving this message, the client can safely assume that the specified direction does not lead anywhere at this time&lt;br /&gt;
*** Message body is a string with the name if the non-existant exit&lt;br /&gt;
*** Example: Room.WrongDir &amp;quot;ne&amp;quot;&lt;br /&gt;
** Room.Players&lt;br /&gt;
*** Object containing player details, each key is the short name of the player and each value is the full name including titles for the player &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Players [{ &amp;quot;name&amp;quot;: &amp;quot;Tecton&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Tecton the Terraformer&amp;quot; }, {&amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Cardan, the Curious&amp;quot; }]&lt;br /&gt;
** Room.AddPlayer&lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being added to the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.AddPlayer { &amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;(Cardan, the Curious)&amp;quot; }&lt;br /&gt;
** Room.RemovePlayer &lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being removed from the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.RemovePlayer &amp;quot;Cardan&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Redirect ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Redirect.Window&lt;br /&gt;
*** Specifies a window to redirect further input to&lt;br /&gt;
*** Message body is a string specifying the window to redirect to&lt;br /&gt;
*** The main window is referred to as &amp;quot;main&amp;quot;, and is the default if the message body is omitted or empty&lt;br /&gt;
*** Example: Redirect.Window &amp;quot;map&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Composer ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Composer.Edit&lt;br /&gt;
*** Sent by the server when the player enters an in-game editor. Body is an object, with keys &amp;quot;title&amp;quot; and &amp;quot;text&amp;quot;. Text contains the current buffer, title is a title that can be shown to the user.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.Edit { &amp;quot;title&amp;quot;: &amp;quot;Composer&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Composer.SetBuffer&lt;br /&gt;
*** Sent by the client upon successfully editing a text which was sent to the client in an IRE.Composer.Edit message earlier&lt;br /&gt;
*** Sending this message only changes the edit buffer, but does not end the editing session&lt;br /&gt;
*** On IRE games, the client may send the command ***save to save a text, or command ***quit to abort editing (IRE.Composer.SetBuffer is not sent in this case) - this behaviour is IRE-specific and is one of the reasons why the Composer module is in the IRE namespace&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.SetBuffer  &amp;quot;This is a bunch of text.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Display ====&lt;br /&gt;
* Send by server:&lt;br /&gt;
** IRE.Display.FixedFont &amp;quot;start&amp;quot; | &amp;quot;stop&amp;quot;&lt;br /&gt;
*** Sent by the server to indicate between the start and stop messages should be displayed in a fixed-width font.&lt;br /&gt;
** IRE.Display.Ohmap &amp;quot;start&amp;quot; | &amp;quot;stop&amp;quot;&lt;br /&gt;
*** Sent by the server to indicated that an overhead map is being sent to the client.&lt;br /&gt;
&lt;br /&gt;
==== IRE.Misc ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Misc.Voted&lt;br /&gt;
*** Informs the game a vote button was clicked.&lt;br /&gt;
*** Example: IRE.Misc.Voted &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Misc.RemindVote&lt;br /&gt;
*** Message sent to remind the player to vote.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.RemindVote &amp;quot;http://www.imperian.com/vote&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.Achievement&lt;br /&gt;
*** Used to send basic achievement data to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Achievement [{&amp;quot;name&amp;quot;: &amp;quot;HighestLevelAchieved&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;89&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.URL&lt;br /&gt;
*** Sends a url to the client to open in a window when clicked.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.URL[{&amp;quot;url&amp;quot;: &amp;quot;http://www.imperian.com/tos&amp;quot;, &amp;quot;window&amp;quot;: &amp;quot;ire_game_tos&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.MISC.Tip&lt;br /&gt;
*** Sends a line of text to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Tip &amp;quot;This is a tip!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Rift ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Rift.List&lt;br /&gt;
*** contents of a Rift storage&lt;br /&gt;
*** sent upon receiving the IRE.Rift.Request message&lt;br /&gt;
*** message body is an array, with each element being an object containing three keys - &amp;quot;name&amp;quot; is item name, &amp;quot;amount&amp;quot; is a number holding the item&#039;s amount, and &amp;quot;desc&amp;quot; is user-visible description&lt;br /&gt;
** IRE.Rift.Change&lt;br /&gt;
*** sent whenever the item amount in a Rift changes&lt;br /&gt;
*** message body is an object with the same structure as one element of an array sent with the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Rift.Request&lt;br /&gt;
*** asks the server to send the Rift contents using the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
==== IRE.Sound ====&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Sound.Play&lt;br /&gt;
** IRE.Sound.Stop&lt;br /&gt;
** IRE.Sound.Stopall&lt;br /&gt;
** IRE.Sound.Preload&lt;br /&gt;
&lt;br /&gt;
==== IRE.Target ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Target.Set&lt;br /&gt;
*** Sends the currently set target to the server to be used by the internal alias system. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
* Sent by server&lt;br /&gt;
&lt;br /&gt;
** IRE.Target.Set &lt;br /&gt;
*** Sends the target the client is trying to set. This is called from cycling targets with tab targeting.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
** IRE.Target.Info &lt;br /&gt;
*** Sends an array with the current target information.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Info { &amp;quot;id&amp;quot;: &amp;quot;1101&amp;quot;, &amp;quot;short_desc&amp;quot;: &amp;quot;a brawny goblin smith&amp;quot;, &amp;quot;hpperc&amp;quot;: &amp;quot;100%&amp;quot; }&lt;br /&gt;
** IRE.Target.Request&lt;br /&gt;
&lt;br /&gt;
==== IRE.Tasks ====&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Tasks.Request &lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Tasks.List&lt;br /&gt;
*** This is used to send a list of quest, tasks, and achievements, depending on what the game supports.&lt;br /&gt;
*** Sends an array of items with the following keys:&lt;br /&gt;
**** id: A numeric identifier&lt;br /&gt;
**** name: The name of the quest, task, or achievement.&lt;br /&gt;
**** type: Is this a quest, task, or achievement.&lt;br /&gt;
**** cmd: The command to get more information for the quest. Good for MXP links.&lt;br /&gt;
**** desc: The description of the event.&lt;br /&gt;
**** status: 0 or 1 based on if it is completed or not.&lt;br /&gt;
**** group: What group should this be assigned to. This is mainly for client display purposes.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Tasks.List [ { &amp;quot;id&amp;quot;: &amp;quot;184&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;For the sake of the village&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;The herbs in Maeven&#039;s garden are painstakingly cared for so that her fellow villagers can stay healthy. She won&#039;t object to borrowing a bit of the magick power the bakuls have, if it can help with her work.\n\nThe bakul herbalist might have something Maeven wants.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;quests&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;quest For the sake of the village&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Current Quests&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;313&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Apostate&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Destroy a Shrine.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;achievements&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;achievement apostate&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Sects&amp;quot; } ]&lt;br /&gt;
** IRE.Tasks.Update &lt;br /&gt;
** IRE.Tasks.Completed&lt;br /&gt;
&lt;br /&gt;
==== IRE.Time ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Time.Request&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Time.List&lt;br /&gt;
*** A list of the current time condition in the game world. &lt;br /&gt;
*** Used in the client to display the the day/night indicator.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.List { &amp;quot;day&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;mon&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;month&amp;quot;: &amp;quot;Letum&amp;quot;, &amp;quot;year&amp;quot;: &amp;quot;98&amp;quot;, &amp;quot;hour&amp;quot;: &amp;quot;41&amp;quot;, &amp;quot;daynight&amp;quot;: &amp;quot;80&amp;quot; }&lt;br /&gt;
** IRE.Time.Update&lt;br /&gt;
*** Used to update time conditions.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.Update { &amp;quot;daynight&amp;quot;: &amp;quot;112&amp;quot; }&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=1145</id>
		<title>GMCP</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=1145"/>
		<updated>2018-05-31T20:40:27Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aetolia-dwarf.jpg|right|frame|caption|Dwarf Terradrim from Aetolia.]] General MUD Telnet Protocol (GMCP) is a protocol used to send data from the game server to the player client. This data transfer happens behind the scenes and is not seen by the players. This allows the game server to send messages to the client to update basic character, room, and game information. Character health is an example of information that is continually passed to the client from the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These messages can also be accessed by the player for use in [[reflexes]]. We are working simplifying the process of capturing GMCP data for use in the client in a future version of the client.&lt;br /&gt;
&lt;br /&gt;
There is a configuration option in the Advanced Settings tab that will allow you to see GMCP messages as they happen.&lt;br /&gt;
&lt;br /&gt;
Module and message names are not case sensitive. JSON key names are case sensitive.&lt;br /&gt;
&lt;br /&gt;
=== Supported modules ===&lt;br /&gt;
&lt;br /&gt;
This documentation covers the following GMCP messages for the Iron Realms Games.&lt;br /&gt;
&lt;br /&gt;
* Core: core functionality&lt;br /&gt;
* Char: information about a character&lt;br /&gt;
* Char.Afflictions: information the characters afflictions&lt;br /&gt;
* Char.Defences- information the characters defences&lt;br /&gt;
* Char.Items: information about items in inventory and room, with live updates&lt;br /&gt;
* Char.Skills: information about skills known by the player&lt;br /&gt;
* Comm.Channel: identification of communication channels and player lists&lt;br /&gt;
* Room: various information about the current room&lt;br /&gt;
* Redirect: redirect outpot to another window&lt;br /&gt;
* IRE.Composer: IRE-specific, used to edit bigger texts client-side&lt;br /&gt;
* IRE.Display: IRE-specific display information&lt;br /&gt;
* IRE.FileStore: used internally by the Nexus client&lt;br /&gt;
* IRE.Misc: used internally by the fMUD and Nexus clients&lt;br /&gt;
* IRE.Rift: IRE-specific, transmits information about the Rift contents&lt;br /&gt;
* IRE.Sound: Yes. Sound can be sent.&lt;br /&gt;
* IRE.Target: information about the current player target.&lt;br /&gt;
* IRE.Tasks: information about tasks, quests, and achievements.&lt;br /&gt;
* IRE.Time: information about the current time and date conditions in the game.&lt;br /&gt;
* IRE.Wiz: used internally by the Nexus client&lt;br /&gt;
&lt;br /&gt;
=== Supported messages by modules ===&lt;br /&gt;
&lt;br /&gt;
==== Core ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Core.Hello&lt;br /&gt;
*** Needs to be the first message that the client sends, used to identify the client&lt;br /&gt;
*** Message body is an object with keys &amp;quot;client&amp;quot; and &amp;quot;version&amp;quot;, containing the client&#039;s name and version&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Hello {&amp;quot;Client&amp;quot;:&amp;quot;Mudlet&amp;quot;,&amp;quot;Version&amp;quot;:&amp;quot;3.0.0&amp;quot;}&lt;br /&gt;
** Core.Supports.Set&lt;br /&gt;
*** Notifies the server about packages supported by the client&lt;br /&gt;
*** If another Core.Supports.*** package has been received earlier, the list is deleted and replaced with the new one&lt;br /&gt;
*** Message body is an array of strings, each consisting of the module name and version, separated by space&lt;br /&gt;
*** Module version is a positive non-zero integer&lt;br /&gt;
*** Most client implementations will only need to send Set once and won&#039;t need Add/Remove; exceptions are module implementations provided by plug-ins&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Set [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Add&lt;br /&gt;
*** Similar to Set, but appends the supported module list to the one sent earlier&lt;br /&gt;
*** If no list was sent yet, the behaviour is identical to Set&lt;br /&gt;
*** If the list includes module names that were already included earlier, the new version number takes precedence over the previously sent one, even if the newly sent number is lower&lt;br /&gt;
*** Message body format is identical to that of Set&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Add [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Remove&lt;br /&gt;
*** Removes specified modules from the list of supported modules&lt;br /&gt;
*** Message body format is similar to Set, except that module version numbers are optional and ignored if given&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Remove [ &amp;quot;Char&amp;quot;, &amp;quot;Char.Skills&amp;quot;, &amp;quot;Char.Items&amp;quot; ]&lt;br /&gt;
** Core.KeepAlive&lt;br /&gt;
*** Causes the server to reset the timeout for the logged character, no message body&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** causes the server to send a Core.Ping back&lt;br /&gt;
*** message body is a number which indicates average ping time from previous requests, if available&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Ping 120&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** Sent in reply to Core.Ping. No body.&lt;br /&gt;
** Core.Goodbye&lt;br /&gt;
*** Sent by server immediately before terminating a connection&lt;br /&gt;
*** Message body is a string to be shown to the user - it can explain the reason for the disconnect&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Goodbye &amp;quot;Goodbye, adventurer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Char ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Login&lt;br /&gt;
*** Used to log in a character, only interpreted if no character is logged in for that connection&lt;br /&gt;
*** Message body is an object with keys &amp;quot;name&amp;quot; and &amp;quot;password&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Login { &amp;quot;name&amp;quot;: &amp;quot;somename&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;somepassword&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Name&lt;br /&gt;
*** Sends the character name and full name which includes the title. This is only sent on login.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Name { &amp;quot;name&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Neophyte Olad&amp;quot; }&lt;br /&gt;
** Char.Vitals&lt;br /&gt;
*** Basic character attributes such as health, mana, etc.&lt;br /&gt;
*** Message body is an object containing several variables&lt;br /&gt;
*** Additionally, each variable is included in a string, in the format name:cur/max&lt;br /&gt;
*** Interpretation of the variables is game specific&lt;br /&gt;
*** It is generally safe to assume that the known values are numbers (even though encoded as strings), but other datatypes can be present&lt;br /&gt;
*** The &amp;quot;charstats&amp;quot; attribute, if present, holds a list of strings that the client may choose to display to the player in a client-specific way, these hold information about the character state that the game wishes to show to the player&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Vitals { &amp;quot;hp&amp;quot;: &amp;quot;4500&amp;quot;, &amp;quot;maxhp&amp;quot;: &amp;quot;4800&amp;quot;, &amp;quot;mp&amp;quot;: &amp;quot;1200&amp;quot;, &amp;quot;maxmp&amp;quot;: &amp;quot;2500&amp;quot;, &amp;quot;ep&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;maxep&amp;quot;: &amp;quot;16000&amp;quot;, &amp;quot;wp&amp;quot;: &amp;quot;14000&amp;quot;, &amp;quot;maxwp&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;nl&amp;quot;: &amp;quot;10&amp;quot;, &amp;quot;string&amp;quot;: &amp;quot;H:4500/4800 M:1200/2500 E:15000/16000 W:14000/15000 NL:10/100&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Additional Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** All classes: Bleed, Rage&lt;br /&gt;
**** Apostates: Essence&lt;br /&gt;
**** Bard: Stance, Voice Balance&lt;br /&gt;
**** Blademaster: Stance&lt;br /&gt;
**** Druid: Current Morph, Sunlight Energy&lt;br /&gt;
**** Infernal: Essence, Weaponmastery Spec&lt;br /&gt;
**** Magi: Channels&lt;br /&gt;
**** Monk: Kai Energy, Tekura stance&lt;br /&gt;
**** Occultist: Karma, Entity Balance&lt;br /&gt;
**** Paladin: Devotion, Weaponmastery Spec&lt;br /&gt;
**** Priest: Devotion&lt;br /&gt;
**** Runewarden: Weaponmastery Spec&lt;br /&gt;
**** Sentinel: Current Morph&lt;br /&gt;
**** Serpent: Secreted Venom&lt;br /&gt;
**** Shaman: Number of spirits bound&lt;br /&gt;
**** Sylvan: Elemental Channels, Sunlight Energy&lt;br /&gt;
*** &#039;&#039;&#039;Additional Aetolia Keys&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Additional Imperian Keys&#039;&#039;&#039;&lt;br /&gt;
**** General: bleed, flying, prone, stunned, dead, blind, phased, res_weakness, vote&lt;br /&gt;
**** Balances: leftarm, rightarm, health, herb, salve, toadstool, pipe, tree, focus, purge&lt;br /&gt;
**** Resources: kai, devotion, essence, fanatism, rage, fire, ice, faith, health_reserve, mana_reserve&lt;br /&gt;
**** Items: leftwield, leftwield_name, rightwield, rightwield_name, mount&lt;br /&gt;
** Char.StatusVars&lt;br /&gt;
*** Sent by server after a successful login or after the module is enabled&lt;br /&gt;
*** Contains a list of character variables (level, race, etc)&lt;br /&gt;
*** Message body is an object&lt;br /&gt;
*** Each object element is a name-caption pair, name is the internal name and caption the user-visible one&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.StatusVars { &amp;quot;level&amp;quot;: &amp;quot;Level&amp;quot;, &amp;quot;race&amp;quot;: &amp;quot;Race&amp;quot;, &amp;quot;guild&amp;quot;: &amp;quot;Guild&amp;quot; }&lt;br /&gt;
** Char.Status&lt;br /&gt;
*** Values of character values defined by StatusVars.&lt;br /&gt;
*** A full list is sent by server right after StatusVars, and changes are sent in subsequent messages as they occur.&lt;br /&gt;
*** With the exception of the initial Status message, messages only contain changed values; if a variable is not included, it has not changed since the previous Status message.&lt;br /&gt;
*** Message body is an object.&lt;br /&gt;
*** Each object element is a name-value pair, name is the internal name defined by the StatusVars message and value is the variable value.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Status { &amp;quot;level&amp;quot;: &amp;quot;58&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;Antioch&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039; Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** name &lt;br /&gt;
**** fullname&lt;br /&gt;
**** age&lt;br /&gt;
**** race&lt;br /&gt;
**** specialisation&lt;br /&gt;
**** level&lt;br /&gt;
**** xp&lt;br /&gt;
**** xprank&lt;br /&gt;
**** class&lt;br /&gt;
**** city&lt;br /&gt;
**** house&lt;br /&gt;
**** order&lt;br /&gt;
**** boundcredits&lt;br /&gt;
**** unboundcredits&lt;br /&gt;
**** lessons&lt;br /&gt;
**** explorerrank&lt;br /&gt;
**** mayancrowns&lt;br /&gt;
**** boundmayancrowns&lt;br /&gt;
**** gold&lt;br /&gt;
**** bank&lt;br /&gt;
**** unread_msgs&lt;br /&gt;
**** unread_news&lt;br /&gt;
**** target&lt;br /&gt;
**** gender&lt;br /&gt;
&lt;br /&gt;
==== Char.Afflictions ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Afflictions.List&lt;br /&gt;
*** Sends an array of current character afflictions.&lt;br /&gt;
**** name: The name of the affliction&lt;br /&gt;
**** cure: The basic cure of the affliction. This is used for links to cure even though other options may exist to cure the affliction.&lt;br /&gt;
**** desc: A description of what this affliction does.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.List [ { &amp;quot;name&amp;quot;: &amp;quot;weariness&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Decreases cutting and blunt damage that you inflict by 30%.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;slow herbs&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;apply epidermal&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Increases the time needed to regain herb balance by 1.25 seconds.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nausea&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat nightshade&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Causes periodic vomiting, which does damage and increases hunger.&amp;quot; } ]&lt;br /&gt;
** Char.Afflictions.Add&lt;br /&gt;
*** Add an affliction to the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Add { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }&lt;br /&gt;
** Char.Afflictions.Remove&lt;br /&gt;
*** Removes an affliction from the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Remove [ &amp;quot;asthma&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
==== Char.Defences====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Defences.List&lt;br /&gt;
*** Send an array of all the defences a character currently has.&lt;br /&gt;
**** name: The name of the defence.&lt;br /&gt;
**** desc: The description of the defence.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.List [ { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;blind&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;blind&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nightsight&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;nightsight&amp;quot; } ]&lt;br /&gt;
** Char.Defences.Add&lt;br /&gt;
*** Sent when a defence is added to a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Add { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }&lt;br /&gt;
** Char.Defences.Remove&lt;br /&gt;
*** Sent when a defence is removed from a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Remove [ &amp;quot;blind&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
==== Char.Items ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Items.Contents&lt;br /&gt;
*** Request for the server to send the list of items located inside another item.&lt;br /&gt;
*** Message body is a number identifying the item.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Item.Contents 12345&lt;br /&gt;
** Char.Items.Inv&lt;br /&gt;
*** Request for the server to send the list of items in player&#039;s inventory.&lt;br /&gt;
*** Message body is empty.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Inv &amp;quot;&amp;quot;&lt;br /&gt;
** Char.Items.Room&lt;br /&gt;
*** Sent by the client to refresh the items in a room.&lt;br /&gt;
*** Message body is empty&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Room &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Items.List&lt;br /&gt;
*** List of items at a specified location (room, inv, held container)&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;items&amp;quot;&lt;br /&gt;
*** Location value is a string, &amp;quot;inv&amp;quot;, &amp;quot;room&amp;quot;, or &amp;quot;repNUMBER&amp;quot; - the last one is container identification&lt;br /&gt;
*** Items value is an array, whose each item is an object with keys &amp;quot;id&amp;quot;, &amp;quot;name&amp;quot; and optionally &amp;quot;attrib&amp;quot;&lt;br /&gt;
*** ID is a number identifying the item, name is a string containing a short player-visible item description&lt;br /&gt;
*** Icon is the image the item is associated with in the client.&lt;br /&gt;
*** Attrib is a string consisting of characters describing item properties:&lt;br /&gt;
**** &amp;quot;w&amp;quot; = worn, &lt;br /&gt;
**** &amp;quot;W&amp;quot; = wearable but not worn &lt;br /&gt;
**** &amp;quot;l&amp;quot; = wielded &lt;br /&gt;
**** &amp;quot;g&amp;quot; = groupable&lt;br /&gt;
**** &amp;quot;c&amp;quot; = container&lt;br /&gt;
**** &amp;quot;t&amp;quot; = takeable&lt;br /&gt;
**** &amp;quot;m&amp;quot; = monster&lt;br /&gt;
**** &amp;quot;d&amp;quot; = dead monster&lt;br /&gt;
**** &amp;quot;x&amp;quot; = should not be targeted (guards, ...)&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.List { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;items&amp;quot;: [ { &amp;quot;id&amp;quot;: &amp;quot;12807&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a personal journal&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;scroll&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;l&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } ] }&lt;br /&gt;
** Char.Items.Add&lt;br /&gt;
*** Informs the client about an item being added to the specified location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an object with the same structure as one item from the items array of List&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;c&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
** Char.Items.Remove&lt;br /&gt;
*** Informs the client about an item being removed from the location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an integer value identifying the item&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
** Char.Items.Update&lt;br /&gt;
*** Informs the client about an item&#039;s attributes being changed - only sent for inventory items&lt;br /&gt;
*** Message body syntax the same as with Add&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Update { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;60572&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an ornate steel rapier&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
==== Char.Skills ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Skills.Get&lt;br /&gt;
*** Sent by client to request skill information&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot; and &amp;quot;name&amp;quot;&lt;br /&gt;
*** If both group and name is provided, the server will send Char.Skills.Info for the specified skill&lt;br /&gt;
*** If group is provided but name is not, the server will send Char.Skills.List for that group&lt;br /&gt;
*** Otherwise the server will send Char.Skills.Groups&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;Perception&amp;quot;}&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;perception&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Deathsight&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Skills.Groups&lt;br /&gt;
*** Groups of skills available to the character&lt;br /&gt;
*** Sent by server on request or at any time (usually if the list changes)&lt;br /&gt;
*** For IRE games, groups are skills like Survival or Elemancy&lt;br /&gt;
*** Message body is an array including the name and current rank of each skill the character has.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Groups [ { &amp;quot;name&amp;quot;: &amp;quot;Perception&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Transcendent (100%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Survival&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Weaponry&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Tattoos&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evasion&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Engineering&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Taming&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Concoctions&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Toxins&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Smithing&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Malignosis&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (1%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Necromancy&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evileye&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (40%)&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.List&lt;br /&gt;
*** List of skills in a group available to the character&lt;br /&gt;
*** Sent by server on request only&lt;br /&gt;
*** For IRE games, this is the list visible on AB &amp;lt;skillname&amp;gt;&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot;, &amp;quot;list&amp;quot;, and &amp;quot;desc&amp;quot;.&lt;br /&gt;
*** The list value is an array of strings, each being the name of one skill&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.List { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;list&amp;quot;: [ &amp;quot;Looking&amp;quot;, &amp;quot;Glancing&amp;quot;, &amp;quot;Secrets&amp;quot;, &amp;quot;Decaylist&amp;quot;, &amp;quot;Squinting&amp;quot;, &amp;quot;Flyers&amp;quot;, &amp;quot;Observe&amp;quot;, &amp;quot;Farsight&amp;quot;, &amp;quot;Containerlist&amp;quot;, &amp;quot;Vigilance&amp;quot;, &amp;quot;Treewatch&amp;quot;, &amp;quot;Deathsight&amp;quot;, &amp;quot;Pipelist&amp;quot;, &amp;quot;Elixlist&amp;quot;, &amp;quot;Search&amp;quot;, &amp;quot;Letterlist&amp;quot;, &amp;quot;Booklist&amp;quot;, &amp;quot;Skywatch&amp;quot;, &amp;quot;PowerNodes&amp;quot;, &amp;quot;Keylist&amp;quot;, &amp;quot;Alertness&amp;quot;, &amp;quot;Rites&amp;quot;, &amp;quot;Traps&amp;quot;, &amp;quot;Magicklist&amp;quot;, &amp;quot;Nightsight&amp;quot;, &amp;quot;Hypersight&amp;quot;, &amp;quot;Thirdeye&amp;quot;, &amp;quot;Tattoos&amp;quot;, &amp;quot;Discernment&amp;quot;, &amp;quot;Wormholes&amp;quot;, &amp;quot;Rivensense&amp;quot;, &amp;quot;Contemplation&amp;quot;, &amp;quot;Scan&amp;quot;, &amp;quot;Telesense&amp;quot;, &amp;quot;Appraise&amp;quot;, &amp;quot;Trueassess&amp;quot;, &amp;quot;Artifactlist&amp;quot;, &amp;quot;Warning&amp;quot;, &amp;quot;Viewshrine&amp;quot;, &amp;quot;Landsense&amp;quot; ], &amp;quot;descs&amp;quot;: [ &amp;quot;Gain knowledge of your immediate surroundings.&amp;quot;, &amp;quot;See summarized information about your surroundings.&amp;quot;, &amp;quot;Discover hidden exits.&amp;quot;, &amp;quot;How much more time do those items have?&amp;quot;, &amp;quot;See extended distances in your line of sight.&amp;quot;, &amp;quot;Take notice of those in the skies.&amp;quot;, &amp;quot;Gain information about your extended surroundings.&amp;quot;, &amp;quot;Attempt to locate another player from afar.&amp;quot;, &amp;quot;What do you have in your containers?&amp;quot;, &amp;quot;Increase your resistance to hypnosis.&amp;quot;, &amp;quot;Watch the forest canopies for movement.&amp;quot;, &amp;quot;Attune yourself to the Underworld.&amp;quot;, &amp;quot;Scan your pipes with utmost speed.&amp;quot;, &amp;quot;Quickly discover what elixirs and salves you are holding.&amp;quot;, &amp;quot;Search your location for hidden beings.&amp;quot;, &amp;quot;Quick glance of all your letters.&amp;quot;, &amp;quot;Scan the titles of books you own.&amp;quot;, &amp;quot;Watch the skies for movement.&amp;quot;, &amp;quot;Detect the nodes of power in your area.&amp;quot;, &amp;quot;See a list of your keys and which doors they open.&amp;quot;, &amp;quot;Heightened awareness of your surroundings.&amp;quot;, &amp;quot;View the holy rites operating in your location.&amp;quot;, &amp;quot;The ability to search for traps in your location.&amp;quot;, &amp;quot;Check the status of your magickal items.&amp;quot;, &amp;quot;Use infravision to see in the dark.&amp;quot;, &amp;quot;See the actions of cloaked players.&amp;quot;, &amp;quot;Give yourself the power of the third eye.&amp;quot;, &amp;quot;Discover what tattoos are on another player.&amp;quot;, &amp;quot;Discover what defences are protecting an individual.&amp;quot;, &amp;quot;The ability to sense wormholes in your location.&amp;quot;, &amp;quot;Sense the bodies of the recently slain.&amp;quot;, &amp;quot;Perceive the state of another&#039;s mental strength.&amp;quot;, &amp;quot;Seekout the locations of your allies and enemies.&amp;quot;, &amp;quot;Heighten your awareness to telepathic attempts.&amp;quot;, &amp;quot;Quickly take note of someone&#039;s carried possessions.&amp;quot;, &amp;quot;Gain more detailed information concerning your foe.&amp;quot;, &amp;quot;See what artifact powers surround an individual.&amp;quot;, &amp;quot;Watch for the prying eyes of the enemy.&amp;quot;, &amp;quot;Gain a detailed understanding of a shrine.&amp;quot;, &amp;quot;The ability to recognize mortals entering the realm.&amp;quot; ] }&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.Info&lt;br /&gt;
*** Information about a single skill, only sent upon request&lt;br /&gt;
*** Message body is an object, keys are &amp;quot;group&amp;quot;, &amp;quot;skill&amp;quot;, and &amp;quot;info&amp;quot;, values are strings&lt;br /&gt;
*** Group and skill identify the request, info is a description (usually multi-line) of the skill&#039;s functionality and usage&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Info { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;skill&amp;quot;: &amp;quot;deathsight&amp;quot;, &amp;quot;info&amp;quot;: &amp;quot;Syntax: DEATHSIGHT\n        RELAX DEATHSIGHT\n\nUsing this ability, your mind is now capable of attuning itself to the realm of the dead. While doing so, you will be alerted whenever anyone dies.&amp;quot; }&lt;br /&gt;
==== Comm.Channel ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** Request for the server to send Comm.Channel.Players&lt;br /&gt;
*** No message body.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players &amp;quot;&amp;quot;&lt;br /&gt;
** Comm.Channel.Enable&lt;br /&gt;
*** Used to tell the game to turn on a character channel without typing in a command line command.&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;newbie&amp;quot;&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;clt Consortium&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** List of players and organizations (city, guild, ...) that they share with this player&lt;br /&gt;
*** Message body is an array with each element describing one player&lt;br /&gt;
*** Each element is an object with keys &amp;quot;name&amp;quot; and &amp;quot;channels&amp;quot;, name is a string, channels is an array&lt;br /&gt;
*** The channels array may be omitted if empty; if given, it is a list of organization names&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [{&amp;quot;name&amp;quot;: &amp;quot;Player1&amp;quot;, &amp;quot;channels: [&amp;quot;Some city&amp;quot;, &amp;quot;Some guild&amp;quot;]}, {&amp;quot;name&amp;quot;: &amp;quot;Player2&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [ { &amp;quot;name&amp;quot;: &amp;quot;Ahkan&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot; ] }, { &amp;quot;name&amp;quot;: &amp;quot;Sharatar&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot;, &amp;quot;The Revenants&amp;quot; ] } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.List&lt;br /&gt;
*** List of communication channels available to the player, sent on login/negotiation and if changed&lt;br /&gt;
*** Message body is an array of objects, each object representing one channel&lt;br /&gt;
*** Each object has keys &amp;quot;name&amp;quot;, &amp;quot;caption&amp;quot; and &amp;quot;command&amp;quot; - name is internal name, caption is player-visible name, command is command used to communicate over this channel&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [{&amp;quot;name&amp;quot;:&amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some city&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;ct&amp;quot;}, {&amp;quot;name&amp;quot;:&amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some guild&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;gt&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [ { &amp;quot;name&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Newbie&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;newbie&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;market&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Market&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;market&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Stavenn&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;ct&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Revenants&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;gt&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Start&lt;br /&gt;
*** Informs the client that text that follows is something said over a communication channel&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** For tells from/to another player, the channel name is &amp;quot;tell Name&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Start &amp;quot;ct&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039; :Comm.Channel.Start &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
** Comm.Channel.End&lt;br /&gt;
*** Ends a channel text started by Comm.Channel.Start&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.End &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Text&lt;br /&gt;
*** The text of the communication that you heard, who spoke, and which channel it was on &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text   {   &amp;quot;channel&amp;quot;:   &amp;quot;says&amp;quot;,   &amp;quot;talker&amp;quot;:   &amp;quot;Tecton&amp;quot;,   &amp;quot;text&amp;quot;: &amp;quot;(Tecton the Terraformer says, \&amp;quot;Are we releasing dragon lairs or the phase artefact first?\&amp;quot;&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;tell Jeremy&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;33mYou tell Jeremy, \&amp;quot;Hi.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;32m(Newbie): You say, \&amp;quot;Hello.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
==== Room ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Room.Info&lt;br /&gt;
*** Contains information about the room that the player is in. Some of these may be IRE-specific&lt;br /&gt;
*** Message body is an object with the following keys&lt;br /&gt;
**** &amp;quot;num&amp;quot; - number identifying the room&lt;br /&gt;
**** &amp;quot;name&amp;quot; - string containing the brief description&lt;br /&gt;
**** &amp;quot;area&amp;quot; - string containing area name&lt;br /&gt;
**** &amp;quot;environment&amp;quot; - string containing environment type (&amp;quot;Hills&amp;quot;, &amp;quot;Ocean&amp;quot;, ...)&lt;br /&gt;
**** &amp;quot;coords&amp;quot; - room coordinates (string of numbers separated by commas - area,X,Y,X,building, building is optional&lt;br /&gt;
**** &amp;quot;map&amp;quot; - map information - URL pointing to a map image, followed by X and Y room (not pixel) coordinates on the map&lt;br /&gt;
**** &amp;quot;details&amp;quot; - array holding further information about a room - shop,bank,...&lt;br /&gt;
**** &amp;quot;exits&amp;quot; - object containing exits, each key is a direction and each value is the number identifying the target room&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Info {&amp;quot;num&amp;quot;: 12345, &amp;quot;name&amp;quot;: &amp;quot;On a hill&amp;quot;, &amp;quot;area&amp;quot;: &amp;quot;Barren hills&amp;quot;, &amp;quot;environment&amp;quot;: &amp;quot;Hills&amp;quot;, &amp;quot;coords&amp;quot;: &amp;quot;45,5,4,3&amp;quot;, &amp;quot;map&amp;quot;: &amp;quot;www.imperian.com/itex/maps/clientmap.php?map=45&amp;amp;level=3 5 4&amp;quot;, &amp;quot;exits&amp;quot;: { &amp;quot;n&amp;quot;: 12344, &amp;quot;se&amp;quot;: 12336 }, &amp;quot;details&amp;quot;: [ &amp;quot;shop&amp;quot;, &amp;quot;bank&amp;quot; ] }&lt;br /&gt;
** Room.WrongDir&lt;br /&gt;
*** Sent if the player attempts to move in a non-existant direction using the standard movement commands&lt;br /&gt;
*** Upon receiving this message, the client can safely assume that the specified direction does not lead anywhere at this time&lt;br /&gt;
*** Message body is a string with the name if the non-existant exit&lt;br /&gt;
*** Example: Room.WrongDir &amp;quot;ne&amp;quot;&lt;br /&gt;
** Room.Players&lt;br /&gt;
*** Object containing player details, each key is the short name of the player and each value is the full name including titles for the player &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Players [{ &amp;quot;name&amp;quot;: &amp;quot;Tecton&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Tecton the Terraformer&amp;quot; }, {&amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Cardan, the Curious&amp;quot; }]&lt;br /&gt;
** Room.AddPlayer&lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being added to the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.AddPlayer { &amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;(Cardan, the Curious)&amp;quot; }&lt;br /&gt;
** Room.RemovePlayer &lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being removed from the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.RemovePlayer &amp;quot;Cardan&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Redirect ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Redirect.Window&lt;br /&gt;
*** Specifies a window to redirect further input to&lt;br /&gt;
*** Message body is a string specifying the window to redirect to&lt;br /&gt;
*** The main window is referred to as &amp;quot;main&amp;quot;, and is the default if the message body is omitted or empty&lt;br /&gt;
*** Example: Redirect.Window &amp;quot;map&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Composer ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Composer.Edit&lt;br /&gt;
*** Sent by the server when the player enters an in-game editor. Body is an object, with keys &amp;quot;title&amp;quot; and &amp;quot;text&amp;quot;. Text contains the current buffer, title is a title that can be shown to the user.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.Edit { &amp;quot;title&amp;quot;: &amp;quot;Composer&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Composer.SetBuffer&lt;br /&gt;
*** Sent by the client upon successfully editing a text which was sent to the client in an IRE.Composer.Edit message earlier&lt;br /&gt;
*** Sending this message only changes the edit buffer, but does not end the editing session&lt;br /&gt;
*** On IRE games, the client may send the command ***save to save a text, or command ***quit to abort editing (IRE.Composer.SetBuffer is not sent in this case) - this behaviour is IRE-specific and is one of the reasons why the Composer module is in the IRE namespace&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.SetBuffer  &amp;quot;This is a bunch of text.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Display ====&lt;br /&gt;
* Send by server:&lt;br /&gt;
** IRE.Display.FixedFont &amp;quot;start&amp;quot; | &amp;quot;stop&amp;quot;&lt;br /&gt;
*** Sent by the server to indicate between the start and stop messages should be displayed in a fixed-width font.&lt;br /&gt;
** IRE.Display.Ohmap &amp;quot;start&amp;quot; | &amp;quot;stop&amp;quot;&lt;br /&gt;
*** Sent by the server to indicated that an overhead map is being sent to the client.&lt;br /&gt;
&lt;br /&gt;
==== IRE.Misc ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Misc.Voted&lt;br /&gt;
*** Informs the game a vote button was clicked.&lt;br /&gt;
*** Example: IRE.Misc.Voted &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Misc.RemindVote&lt;br /&gt;
*** Message sent to remind the player to vote.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.RemindVote &amp;quot;http://www.imperian.com/vote&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.Achievement&lt;br /&gt;
*** Used to send basic achievement data to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Achievement [{&amp;quot;name&amp;quot;: &amp;quot;HighestLevelAchieved&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;89&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.URL&lt;br /&gt;
*** Sends a url to the client to open in a window when clicked.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.URL[{&amp;quot;url&amp;quot;: &amp;quot;http://www.imperian.com/tos&amp;quot;, &amp;quot;window&amp;quot;: &amp;quot;ire_game_tos&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.MISC.Tip&lt;br /&gt;
*** Sends a line of text to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Tip &amp;quot;This is a tip!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Rift ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Rift.List&lt;br /&gt;
*** contents of a Rift storage&lt;br /&gt;
*** sent upon receiving the IRE.Rift.Request message&lt;br /&gt;
*** message body is an array, with each element being an object containing three keys - &amp;quot;name&amp;quot; is item name, &amp;quot;amount&amp;quot; is a number holding the item&#039;s amount, and &amp;quot;desc&amp;quot; is user-visible description&lt;br /&gt;
** IRE.Rift.Change&lt;br /&gt;
*** sent whenever the item amount in a Rift changes&lt;br /&gt;
*** message body is an object with the same structure as one element of an array sent with the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Rift.Request&lt;br /&gt;
*** asks the server to send the Rift contents using the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
==== IRE.Sound ====&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Sound.Play&lt;br /&gt;
** IRE.Sound.Stop&lt;br /&gt;
** IRE.Sound.Stopall&lt;br /&gt;
** IRE.Sound.Preload&lt;br /&gt;
&lt;br /&gt;
==== IRE.Target ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Target.Set&lt;br /&gt;
*** Sends the currently set target to the server to be used by the internal alias system. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
* Sent by server&lt;br /&gt;
&lt;br /&gt;
** IRE.Target.Set &lt;br /&gt;
*** Sends the target the client is trying to set. This is called from cycling targets with tab targeting.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
** IRE.Target.Info &lt;br /&gt;
*** Sends an array with the current target information.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Info { &amp;quot;id&amp;quot;: &amp;quot;1101&amp;quot;, &amp;quot;short_desc&amp;quot;: &amp;quot;a brawny goblin smith&amp;quot;, &amp;quot;hpperc&amp;quot;: &amp;quot;100%&amp;quot; }&lt;br /&gt;
** IRE.Target.Request&lt;br /&gt;
&lt;br /&gt;
==== IRE.Tasks ====&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Tasks.Request &lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Tasks.List&lt;br /&gt;
*** This is used to send a list of quest, tasks, and achievements, depending on what the game supports.&lt;br /&gt;
*** Sends an array of items with the following keys:&lt;br /&gt;
**** id: A numeric identifier&lt;br /&gt;
**** name: The name of the quest, task, or achievement.&lt;br /&gt;
**** type: Is this a quest, task, or achievement.&lt;br /&gt;
**** cmd: The command to get more information for the quest. Good for MXP links.&lt;br /&gt;
**** desc: The description of the event.&lt;br /&gt;
**** status: 0 or 1 based on if it is completed or not.&lt;br /&gt;
**** group: What group should this be assigned to. This is mainly for client display purposes.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Tasks.List [ { &amp;quot;id&amp;quot;: &amp;quot;184&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;For the sake of the village&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;The herbs in Maeven&#039;s garden are painstakingly cared for so that her fellow villagers can stay healthy. She won&#039;t object to borrowing a bit of the magick power the bakuls have, if it can help with her work.\n\nThe bakul herbalist might have something Maeven wants.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;quests&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;quest For the sake of the village&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Current Quests&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;313&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Apostate&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Destroy a Shrine.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;achievements&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;achievement apostate&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Sects&amp;quot; } ]&lt;br /&gt;
** IRE.Tasks.Update &lt;br /&gt;
** IRE.Tasks.Completed&lt;br /&gt;
&lt;br /&gt;
==== IRE.Time ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Time.Request&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Time.List&lt;br /&gt;
*** A list of the current time condition in the game world. &lt;br /&gt;
*** Used in the client to display the the day/night indicator.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.List { &amp;quot;day&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;mon&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;month&amp;quot;: &amp;quot;Letum&amp;quot;, &amp;quot;year&amp;quot;: &amp;quot;98&amp;quot;, &amp;quot;hour&amp;quot;: &amp;quot;41&amp;quot;, &amp;quot;daynight&amp;quot;: &amp;quot;80&amp;quot; }&lt;br /&gt;
** IRE.Time.Update&lt;br /&gt;
*** Used to update time conditions.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.Update { &amp;quot;daynight&amp;quot;: &amp;quot;112&amp;quot; }&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Nexus_2.0&amp;diff=1142</id>
		<title>Nexus 2.0</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Nexus_2.0&amp;diff=1142"/>
		<updated>2018-03-18T18:06:55Z</updated>

		<summary type="html">&lt;p&gt;Justin: Starmourn&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-8 columns&amp;quot;&amp;gt;&lt;br /&gt;
=== The Iron Realms Nexus Client ===&lt;br /&gt;
&lt;br /&gt;
Welcome to the official documentation wiki for the Iron Realms Nexus client: the world&#039;s best truly cross-platform MUD client!&lt;br /&gt;
&lt;br /&gt;
{{#evt:&lt;br /&gt;
service=youtube&lt;br /&gt;
|id=https://youtu.be/dQTrmHtS0K8&lt;br /&gt;
|description=&#039;&#039;&#039;Recommended for new players&#039;&#039;&#039;. A just under 7 minute tutorial thoroughly covering all the features of the client accessible from the main page. Does not include much about the extensive Settings window.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Core Features include:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Windows_and_Tabs|Windowed output]]&#039;&#039;&#039;. Separate windows for main output, inventory, communication, graphical map, and more!&lt;br /&gt;
** Windows auto-resize based on browser window size.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Configuration_Options|Highly customizable]]&#039;&#039;&#039;. You can get rid of windows or create new ones, move tabs from one window to another, resize windows, switch the entire client skin, change colors, fonts, and more. Go full-screen! Turn music off but keep sound effects on!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Truly cross-platform&#039;&#039;&#039;. Nexus works on Windows, Mac, Linux, iOS, and Android! &lt;br /&gt;
** Nexus will lay itself out intelligently depending on your device. &lt;br /&gt;
** For instance, on mobile it will default to a single column (rather than three as is the default on desktop), allowing you to swipe left/right to see the other columns.&lt;br /&gt;
** In order to assist with movement, there’s a compass in the mobile version letting you move around the world with the tap of your finger, vs bringing up the keyboard to type a direction.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Cross-device functionality&#039;&#039;&#039;. Save a macro or trigger you’ve written in Nexus and it’ll be available for you no matter what device you log that character in with! Use your desktop triggers on your mobile device!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[F-Keys,_Gauges,_and_Avatars|Graphical UI elements]]&#039;&#039;&#039; include graphical character creation, health and mana bars, icons that light up when you have common afflictions, balance and equilibrium icons, and more.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Two kinds of scripting&#039;&#039;&#039; – Simplified and Advanced.&lt;br /&gt;
** [[Advanced_Scripting|Advanced scripting]] is done in Javascript, with an API via the use of General Mud Communication Protocol (GMCP) that lets you track things like inventory, health, room items, and more from within your scripts.&lt;br /&gt;
** [[Simplified_Scripting|Simplified Scripting]] can be used by anyone without any coding knowledge at all.&lt;br /&gt;
** Easily create powerful keybindings/macros and aliases with no prior experience.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Thorough documentation&#039;&#039;&#039; including videos, examples, and more, here on this site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== More Tutorial Videos ====&lt;br /&gt;
&lt;br /&gt;
{{#evt:&lt;br /&gt;
service=youtube&lt;br /&gt;
|id=https://youtu.be/eol8F8b_9sk&lt;br /&gt;
|description=A just over 2 minute tutorial for experienced MUDers, running down some of the client features that may not be immediately obvious, such as how to turn off the gauges, using tab-targeting, adding extra communication tabs, and reconfiguring the layout of windows and tabs.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#evt:&lt;br /&gt;
service=youtube&lt;br /&gt;
|id=https://youtu.be/6zVe7q0xF30&lt;br /&gt;
|description=A 2.5 minute overview of the Display and Color tabs in the settings window.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Screenshots ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;small-block-grid-3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Client_main_page_-_1280x1024_75p.jpg|thumb|Main Client default skin.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Client_main_page_-_minimal_-_1280x1024.jpg|thumb|Main Client minimal skin.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Settings.png|thumb|Settings Window.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Floating-Help.png|thumb|Floating Help Window.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Floating-room.png|thumb|Room Information.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Floating-map.png|thumb|Map Window]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Floating-quests.png|thumb|Quest Information.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Need Help? ====&lt;br /&gt;
&lt;br /&gt;
Our games can be confusing for new players at first. If you need help, you can ask right in the game on the newbie channel. Just type the command &#039;&#039;&#039;newbie&#039;&#039;&#039;, followed by your question. &lt;br /&gt;
&lt;br /&gt;
For example: &#039;&#039;&#039;newbie Can someone help me?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each of the games has people who are there specifically to help new players, so feel free to ask whatever you need to on the newbie channel. If those dedicated helpers aren&#039;t around, other players in the game will see any questions you enter here and will normally be more then happy to assist you.&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t work, you might try asking on the forums for that game (see below).&lt;br /&gt;
&lt;br /&gt;
And of course, you can always look for the answer in our extensive HELP systems. Just type HELP to see the directory and instructions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Game Clients====&lt;br /&gt;
* [http://play.achaea.com Play Achaea] &lt;br /&gt;
* [http://play.aetolia.com Play Aetolia] &lt;br /&gt;
* [http://play.imperian.com Play Imperian] &lt;br /&gt;
* [http://play.lusternia.com Play Lusternia] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Game Forums====&lt;br /&gt;
Need more help? Try asking on the forums.  &lt;br /&gt;
* [http://forums.achaea.com Achaea Forums] &lt;br /&gt;
* [http://forums.aetolia.com Aetolia Forums] &lt;br /&gt;
* [http://forums.imperian.com Imperian Forums] &lt;br /&gt;
* [http://forums.lusternia.com Lusternia Forums] &lt;br /&gt;
* [http://forums.starmourn.com Starmourn Forums]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Game Websites====&lt;br /&gt;
You can also explore the individual game websites.  &lt;br /&gt;
* [http://www.achaea.com www.Achaea.com] &lt;br /&gt;
* [http://www.aetolia.com www.Aetolia.com] &lt;br /&gt;
* [http://www.imperian.com www.Imperian.com] &lt;br /&gt;
* [http://www.lusternia.com www.Lusternia.com]&lt;br /&gt;
* [http://www.starmourn.com www.Starmourn.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Simplified_Scripting&amp;diff=1141</id>
		<title>Simplified Scripting</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Simplified_Scripting&amp;diff=1141"/>
		<updated>2018-03-18T17:14:48Z</updated>

		<summary type="html">&lt;p&gt;Justin: 2.10 updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simplified Scripting in Nexus allows users to create complex [[triggers]], [[aliases]], [[events]] and [[keybinds]] using a simple user interface. Previously this could only be accomplished with [[AdvancedScripting|advanced scripting]] options, which involves needing to know some amount of javascript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are 15 different actions you can use. Hide the line, Highlight and Rewrite cannot be used for aliases and keybinds, however.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Send a command ==&lt;br /&gt;
This is the most basic and commonly used action. The trigger will automatically send text back to the game. In this example, the action will send &#039;&#039;attack rat&#039;&#039; when called.&lt;br /&gt;
&lt;br /&gt;
[[File:action-send.png]]&lt;br /&gt;
&lt;br /&gt;
== Show a notice ==&lt;br /&gt;
The action will just display a notice using whatever colors you choose. Typically players use these to get something to pop out at them so they know it has happened, but they may not want to automatically respond. In the example below, the game will display a bright red &#039;&#039;&#039;HIT HIM AGAIN&#039;&#039;&#039; when called. &lt;br /&gt;
&lt;br /&gt;
[[File:action-notice.png]]&lt;br /&gt;
&lt;br /&gt;
== Desktop Notification  ==&lt;br /&gt;
The action is used to display a desktop notification when a trigger has fired. In the example below, we have created a trigger that will display a desktop notification when someone has entered the room with you. &lt;br /&gt;
&lt;br /&gt;
[[File:action-notification.png]]&lt;br /&gt;
&lt;br /&gt;
Here is an example of the notification that will appear.&lt;br /&gt;
&lt;br /&gt;
[[File:action-notification-popup.png]]&lt;br /&gt;
&lt;br /&gt;
== Play a sound ==&lt;br /&gt;
This action will allow you to play a sound when an event is triggered. In the example below, an alarm will sound whenever another player enters the room.&lt;br /&gt;
&lt;br /&gt;
[[File:action-sound.png]]&lt;br /&gt;
&lt;br /&gt;
== Wait ==&lt;br /&gt;
The wait action is usually used in conjunction with other actions. In the example below, we wait 3 seconds and then attack the rat.&lt;br /&gt;
&lt;br /&gt;
[[File:action-wait.png]]&lt;br /&gt;
&lt;br /&gt;
== Wait for ==&lt;br /&gt;
This action is essentially a temporary trigger. It allows you to specify a line or pattern to wait for. Once encountered, the script will continue executing normally. If not encountered within the specified timeout, the script is aborted.&lt;br /&gt;
&lt;br /&gt;
In the example below we have created a simple trigger that will fire when the client receives the text &#039;You have regained your mental equilibrium.&#039;. The first action will then cause the trigger to wait 10 seconds, looking to receive the text from the game, &#039;You have recovered balance.&#039;. &lt;br /&gt;
&lt;br /&gt;
If the trigger receives that text within 10 seconds, it will send the next action, which is set to send the command &#039;kick rabbit&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:action-wait-for.png]]&lt;br /&gt;
&lt;br /&gt;
== Hide the line (or Gagging) ==&lt;br /&gt;
You can also opt to just hide any line that matches your trigger. Sometimes this is good for text that you see over and over again and are tired of reading.&lt;br /&gt;
&lt;br /&gt;
This is also referred to as a gag or gagging.&lt;br /&gt;
&lt;br /&gt;
[[File:action-hide.png]]&lt;br /&gt;
&lt;br /&gt;
== Highlight ==&lt;br /&gt;
This will highlight the text you have matched. There are more options here to highlight the text around the trigger as well.&lt;br /&gt;
&lt;br /&gt;
[[File:action-highlight.png]]&lt;br /&gt;
&lt;br /&gt;
== Rewrite ==&lt;br /&gt;
A rewrite will change the trigger text into whatever your would like. Players will typically use this to shorten long messages in combat.&lt;br /&gt;
&lt;br /&gt;
In the case below we are rewriting the text in the trigger to display a bright yellow, &#039;&#039;Balance back&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:action-rewrite.png]]&lt;br /&gt;
&lt;br /&gt;
== Linkify ==&lt;br /&gt;
Linkify is similar to rewrite, and will change the trigger text into whatever your would like it to say. In addition it will make the text a clickable link, which can do whatever the user wants. &lt;br /&gt;
&lt;br /&gt;
In the case below we are rewriting the text in the trigger to display the text &#039;Need to wake up!&#039; and making it a link that will issue the command to &#039;wake&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:action-linkify.png]]&lt;br /&gt;
&lt;br /&gt;
== Modify variable ==&lt;br /&gt;
The modify variable action is used to modify a certain variable. You can set it to a value, increase or decrease its value, assign the value of another variable to it, or modify it by the value of another variable. You can also assign the matched text or a captured part of it. It is a fairly flexible action.&lt;br /&gt;
&lt;br /&gt;
In the example below we have created a trigger that will set the @EQ variable to a value of 1 when your character has regained mental equilibrium. In the example we also display the value of the @EQ variable so that we can make sure it is correctly set. This is probably very redundant, but is a simple example.&lt;br /&gt;
&lt;br /&gt;
[[File:action-modify-variable.png]]&lt;br /&gt;
&lt;br /&gt;
== If ==&lt;br /&gt;
This is one of the more powerful actions for reflexes. It will allow your reflexes to execute actions based on if certain conditions are true or not.&lt;br /&gt;
&lt;br /&gt;
For example, you can compare two variables, or a variable and a fixed value. You can also compare against the matched text or a captured part of it. When the check succeeds or fails, you can choose whether the reflex should continue running normally, stop, or continue running from a Label action.&lt;br /&gt;
&lt;br /&gt;
The example below is very simple. When a character recovers equilibrium it will check to see if the balance variable has been set to 1. The balance variable has been set to 1 or 0 from another reflex.&lt;br /&gt;
&lt;br /&gt;
If the balance variable is 1, it will jump to the &#039;Yup&#039; label and then show a notice that the character has both Balance and EQ.&lt;br /&gt;
&lt;br /&gt;
If the balance variable is 0, it will jump to the &#039;Nope&#039; label and show a notice that the character does not have Balance. It will then jump to the &#039;End&#039; label.&lt;br /&gt;
&lt;br /&gt;
If it did not just to the &#039;End&#039; label it would also do the Yup label action and the &#039;You have Balance and EQ.&#039; notice.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-if.png]]&lt;br /&gt;
&lt;br /&gt;
== Repeat ==&lt;br /&gt;
This action allows you to repeat a block of actions multiple times. All actions up to a label that you specify will be repeated.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-repeat.png]]&lt;br /&gt;
&lt;br /&gt;
== Label ==&lt;br /&gt;
This action does nothing at all. It is used together with the If, Repeat, and Jump to Label actions to do conditional execution and looping.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-label.png]]&lt;br /&gt;
&lt;br /&gt;
== Jump to Label ==&lt;br /&gt;
This action causes a jump to the label of your choice. It is best used inside an If or Repeat block, so you don&#039;t create an endless loop (the client does offer protection against these).&lt;br /&gt;
&lt;br /&gt;
The example below is absurd, but shows exactly how it functions. In this case the first action jumps right to the third action. Missing the second action completely.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-jump.png]]&lt;br /&gt;
&lt;br /&gt;
== Disable this reflex ==&lt;br /&gt;
This simple action disables the current reflex. This is useful when creating reflexes that should only work once.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-disable.png]]&lt;br /&gt;
&lt;br /&gt;
== Disable reflex ==&lt;br /&gt;
This action disables a reflex of your choice. The reflex must have a name. It can also disable entire groups of reflexes. In the example below we are disabling a group that contains all of our bashing reflexes.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-disable-reflex.png]]&lt;br /&gt;
&lt;br /&gt;
== Enable reflex ==&lt;br /&gt;
This action enables a reflex of your choice. The reflex must have a name. It can also enable entire groups of reflexes. In the example below we are enabling a group that contains all of our bashing reflexes.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-enable-reflex.png]]&lt;br /&gt;
&lt;br /&gt;
== Stop ==&lt;br /&gt;
This action will stop all actions after this point. Useful for testing and for use in IF actions.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-stop.png]]&lt;br /&gt;
&lt;br /&gt;
== Modify a button ==&lt;br /&gt;
This action will allow you to modify any of the client&#039;s buttons. Options you can set here are:&lt;br /&gt;
* Change label - Change the text on the button&lt;br /&gt;
* Change command - Change the command sent to the game when the button is pressed&lt;br /&gt;
* Highlight - Set a button to be highlighted&lt;br /&gt;
* Unhighlight - Set a button to not be highlighted&lt;br /&gt;
* Reset to default - Set a button back to the default.&lt;br /&gt;
&lt;br /&gt;
[[File:action_buttons.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=File:Action_buttons.png&amp;diff=1140</id>
		<title>File:Action buttons.png</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=File:Action_buttons.png&amp;diff=1140"/>
		<updated>2018-03-18T17:14:08Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Simplified_Scripting&amp;diff=1139</id>
		<title>Simplified Scripting</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Simplified_Scripting&amp;diff=1139"/>
		<updated>2018-03-18T17:12:53Z</updated>

		<summary type="html">&lt;p&gt;Justin: 2.10 changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simplified Scripting in Nexus allows users to create complex [[triggers]], [[aliases]], [[events]] and [[keybinds]] using a simple user interface. Previously this could only be accomplished with [[AdvancedScripting|advanced scripting]] options, which involves needing to know some amount of javascript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are 15 different actions you can use. Hide the line, Highlight and Rewrite cannot be used for aliases and keybinds, however.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Send a command ==&lt;br /&gt;
This is the most basic and commonly used action. The trigger will automatically send text back to the game. In this example, the action will send &#039;&#039;attack rat&#039;&#039; when called.&lt;br /&gt;
&lt;br /&gt;
[[File:action-send.png]]&lt;br /&gt;
&lt;br /&gt;
== Show a notice ==&lt;br /&gt;
The action will just display a notice using whatever colors you choose. Typically players use these to get something to pop out at them so they know it has happened, but they may not want to automatically respond. In the example below, the game will display a bright red &#039;&#039;&#039;HIT HIM AGAIN&#039;&#039;&#039; when called. &lt;br /&gt;
&lt;br /&gt;
[[File:action-notice.png]]&lt;br /&gt;
&lt;br /&gt;
== Desktop Notification  ==&lt;br /&gt;
The action is used to display a desktop notification when a trigger has fired. In the example below, we have created a trigger that will display a desktop notification when someone has entered the room with you. &lt;br /&gt;
&lt;br /&gt;
[[File:action-notification.png]]&lt;br /&gt;
&lt;br /&gt;
Here is an example of the notification that will appear.&lt;br /&gt;
&lt;br /&gt;
[[File:action-notification-popup.png]]&lt;br /&gt;
&lt;br /&gt;
== Play a sound ==&lt;br /&gt;
This action will allow you to play a sound when an event is triggered. In the example below, an alarm will sound whenever another player enters the room.&lt;br /&gt;
&lt;br /&gt;
[[File:action-sound.png]]&lt;br /&gt;
&lt;br /&gt;
== Wait ==&lt;br /&gt;
The wait action is usually used in conjunction with other actions. In the example below, we wait 3 seconds and then attack the rat.&lt;br /&gt;
&lt;br /&gt;
[[File:action-wait.png]]&lt;br /&gt;
&lt;br /&gt;
== Wait for ==&lt;br /&gt;
This action is essentially a temporary trigger. It allows you to specify a line or pattern to wait for. Once encountered, the script will continue executing normally. If not encountered within the specified timeout, the script is aborted.&lt;br /&gt;
&lt;br /&gt;
In the example below we have created a simple trigger that will fire when the client receives the text &#039;You have regained your mental equilibrium.&#039;. The first action will then cause the trigger to wait 10 seconds, looking to receive the text from the game, &#039;You have recovered balance.&#039;. &lt;br /&gt;
&lt;br /&gt;
If the trigger receives that text within 10 seconds, it will send the next action, which is set to send the command &#039;kick rabbit&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:action-wait-for.png]]&lt;br /&gt;
&lt;br /&gt;
== Hide the line (or Gagging) ==&lt;br /&gt;
You can also opt to just hide any line that matches your trigger. Sometimes this is good for text that you see over and over again and are tired of reading.&lt;br /&gt;
&lt;br /&gt;
This is also referred to as a gag or gagging.&lt;br /&gt;
&lt;br /&gt;
[[File:action-hide.png]]&lt;br /&gt;
&lt;br /&gt;
== Highlight ==&lt;br /&gt;
This will highlight the text you have matched. There are more options here to highlight the text around the trigger as well.&lt;br /&gt;
&lt;br /&gt;
[[File:action-highlight.png]]&lt;br /&gt;
&lt;br /&gt;
== Rewrite ==&lt;br /&gt;
A rewrite will change the trigger text into whatever your would like. Players will typically use this to shorten long messages in combat.&lt;br /&gt;
&lt;br /&gt;
In the case below we are rewriting the text in the trigger to display a bright yellow, &#039;&#039;Balance back&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:action-rewrite.png]]&lt;br /&gt;
&lt;br /&gt;
== Linkify ==&lt;br /&gt;
Linkify is similar to rewrite, and will change the trigger text into whatever your would like it to say. In addition it will make the text a clickable link, which can do whatever the user wants. &lt;br /&gt;
&lt;br /&gt;
In the case below we are rewriting the text in the trigger to display the text &#039;Need to wake up!&#039; and making it a link that will issue the command to &#039;wake&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:action-linkify.png]]&lt;br /&gt;
&lt;br /&gt;
== Modify variable ==&lt;br /&gt;
The modify variable action is used to modify a certain variable. You can set it to a value, increase or decrease its value, assign the value of another variable to it, or modify it by the value of another variable. You can also assign the matched text or a captured part of it. It is a fairly flexible action.&lt;br /&gt;
&lt;br /&gt;
In the example below we have created a trigger that will set the @EQ variable to a value of 1 when your character has regained mental equilibrium. In the example we also display the value of the @EQ variable so that we can make sure it is correctly set. This is probably very redundant, but is a simple example.&lt;br /&gt;
&lt;br /&gt;
[[File:action-modify-variable.png]]&lt;br /&gt;
&lt;br /&gt;
== If ==&lt;br /&gt;
This is one of the more powerful actions for reflexes. It will allow your reflexes to execute actions based on if certain conditions are true or not.&lt;br /&gt;
&lt;br /&gt;
For example, you can compare two variables, or a variable and a fixed value. You can also compare against the matched text or a captured part of it. When the check succeeds or fails, you can choose whether the reflex should continue running normally, stop, or continue running from a Label action.&lt;br /&gt;
&lt;br /&gt;
The example below is very simple. When a character recovers equilibrium it will check to see if the balance variable has been set to 1. The balance variable has been set to 1 or 0 from another reflex.&lt;br /&gt;
&lt;br /&gt;
If the balance variable is 1, it will jump to the &#039;Yup&#039; label and then show a notice that the character has both Balance and EQ.&lt;br /&gt;
&lt;br /&gt;
If the balance variable is 0, it will jump to the &#039;Nope&#039; label and show a notice that the character does not have Balance. It will then jump to the &#039;End&#039; label.&lt;br /&gt;
&lt;br /&gt;
If it did not just to the &#039;End&#039; label it would also do the Yup label action and the &#039;You have Balance and EQ.&#039; notice.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-if.png]]&lt;br /&gt;
&lt;br /&gt;
== Repeat ==&lt;br /&gt;
This action allows you to repeat a block of actions multiple times. All actions up to a label that you specify will be repeated.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-repeat.png]]&lt;br /&gt;
&lt;br /&gt;
== Label ==&lt;br /&gt;
This action does nothing at all. It is used together with the If, Repeat, and Jump to Label actions to do conditional execution and looping.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-label.png]]&lt;br /&gt;
&lt;br /&gt;
== Jump to Label ==&lt;br /&gt;
This action causes a jump to the label of your choice. It is best used inside an If or Repeat block, so you don&#039;t create an endless loop (the client does offer protection against these).&lt;br /&gt;
&lt;br /&gt;
The example below is absurd, but shows exactly how it functions. In this case the first action jumps right to the third action. Missing the second action completely.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-jump.png]]&lt;br /&gt;
&lt;br /&gt;
== Disable this reflex ==&lt;br /&gt;
This simple action disables the current reflex. This is useful when creating reflexes that should only work once.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-disable.png]]&lt;br /&gt;
&lt;br /&gt;
== Disable reflex ==&lt;br /&gt;
This action disables a reflex of your choice. The reflex must have a name. It can also disable entire groups of reflexes. In the example below we are disabling a group that contains all of our bashing reflexes.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-disable-reflex.png]]&lt;br /&gt;
&lt;br /&gt;
== Enable reflex ==&lt;br /&gt;
This action enables a reflex of your choice. The reflex must have a name. It can also enable entire groups of reflexes. In the example below we are enabling a group that contains all of our bashing reflexes.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-enable-reflex.png]]&lt;br /&gt;
&lt;br /&gt;
== Stop ==&lt;br /&gt;
This action will stop all actions after this point. Useful for testing and for use in IF actions.&lt;br /&gt;
&lt;br /&gt;
[[File:Action-stop.png]]&lt;br /&gt;
&lt;br /&gt;
== Modify a button ==&lt;br /&gt;
This action will allow you to modify any of the client&#039;s buttons. Options you can set here are:&lt;br /&gt;
* Change label - Change the text on the button&lt;br /&gt;
* Change command - Change the command sent to the game when the button is pressed&lt;br /&gt;
* Highlight - Set a button to be highlighted&lt;br /&gt;
* Unhighlight - Set a button to not be highlighted&lt;br /&gt;
* Reset to default - Set a button back to the default.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1138</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1138"/>
		<updated>2018-03-18T17:08:28Z</updated>

		<summary type="html">&lt;p&gt;Justin: /* Import/Export */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The client settings window can be accessed by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser.&lt;br /&gt;
&lt;br /&gt;
There are 10 tabs in the settings window.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Display Options === &lt;br /&gt;
&lt;br /&gt;
The Display Options tab controls most of the basic settings of the client. Most options will demonstrate what will happen in the preview window to the right as they are checked and unchecked.&lt;br /&gt;
&lt;br /&gt;
[[File:nexus_settings_210.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;Options&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Output&#039;&#039;&#039;&lt;br /&gt;
** Display Font: You can change the font and the font size used by the client.&lt;br /&gt;
** Interface Style: This allows you to change what the client looks like. Currently you can select between standard and minimal, which is shown below.&lt;br /&gt;
[[File:Client_main_page_-_minimal_-_1280x1024.jpg]]&lt;br /&gt;
** Command Echo: When you type a command into the game to can opt to not display it. You can also set the color.&lt;br /&gt;
** Echo Target Changes: When you target something in the game, you can have it display that information.&lt;br /&gt;
** Add extra padding: Adds additional whitespace between lines, making it easier to read.&lt;br /&gt;
** Hide Chat Messages: You can opt not to show any chat messages in the main window. Chat will always display in the communication window.&lt;br /&gt;
** Show Inverted Colors: Invert the colors in the client. This will switch the black background to white.&lt;br /&gt;
** Prompt Lines: You can opt not to see your prompt at all. Your prompt typically displays health, mana, and balance. Although this varies from game to game.&lt;br /&gt;
** Only show the last prompt: Only display the most recent prompt at the bottom of the main display window.&lt;br /&gt;
** Plays Background Music: You can turn on/off the background music in the client. This does not effect other client sounds.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Interface&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
** Movement Compass: Select your preference for displaying the movement compass in the client. &lt;br /&gt;
** Clear commands from the input bar after sending: This will automatically clear your command line after you press enter.&lt;br /&gt;
** Show HELP files in a new window: When looking at help files, a window will popup to let you read them.&lt;br /&gt;
** Show item numbers on room/inventory lists: When checked, this option will display the unique item number for all items in the game in your inventory and room windows.&lt;br /&gt;
** Reduced gauge height: This options will reduce the height of the gauges in the client, allowing more room for the output window.&lt;br /&gt;
** Display tooltips: Hide or display tooltips when hovering over parts of the main client window.&lt;br /&gt;
** Copy on Select: When copying text from the output window, it will automatically be copied to your computer&#039;s clipboard.&lt;br /&gt;
** Enable desktop notifications: This will notify you when something is happening in the game when the client isn&#039;t the active window/tab.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Timestamps&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Logging&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in logs - Toggle whether to show timestamps in logs.&lt;br /&gt;
** Prepend history on logging start - Add what is already in your output window to the top of the log when you start logging.&lt;br /&gt;
* &#039;&#039;&#039;Timestamps&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in the main output window: Display the time that each line in the game is received.&lt;br /&gt;
** Show timestamps in the main output scrollback: Display timestamps on each line when scrolling up the main output window.&lt;br /&gt;
** Show milliseconds on timestamps: Display timestamps down to the millisecond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Colors&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
This window will allow you to set the colors sent from the game to the Nexus client to whatever your heart desires. &lt;br /&gt;
&lt;br /&gt;
[[File:Settings_color.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Buttons&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
Nexus can have 6 to 12 buttons placed directly above the command line based on your preferences. When you character is first created it is populated with some basic commands. The buttons tab, allows you to set the number of buttons displayed and edit what each button does when clicked.&lt;br /&gt;
&lt;br /&gt;
Below is an example of the button bar in the main client window.&lt;br /&gt;
&lt;br /&gt;
[[File:Client_buttons.png]]&lt;br /&gt;
&lt;br /&gt;
The buttons tab allows you to set the text for the button, a basic command, and a script should you desire. The commands can include [[aliases]] from your [[Reflexes|reflex]] settings. If you are running a script from the button, be sure to review the [[javascript]] page for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:Buttons_tab.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflex_Packages&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflex Packages ===&lt;br /&gt;
&lt;br /&gt;
This tab will allow you to install packages from other players. Packages is a term used to describe groups of reflexes.&lt;br /&gt;
&lt;br /&gt;
By default all characters come with the Numpad movement package. This package allows you to use the numpad to move around the game world.&lt;br /&gt;
&lt;br /&gt;
If you would like to create your own package, click &#039;Add a package&#039; and assign reflexes to that new package in your reflexes tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_packages.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflexes&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflexes ===&lt;br /&gt;
Reflexes is an indepth subject and can be fully explained on [[Reflexes|its own page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Variables&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Variables ===&lt;br /&gt;
&lt;br /&gt;
A variable is alphabetic character representing a value or text that may be used in a reflex. For example, a user may store the number of a pack or the name of the last player that attacked them.&lt;br /&gt;
&lt;br /&gt;
Variables can then be used by other reflexes by using the @ symbol and the variable name. For example, from the image below, @pack would be replaced with my pack number, 12345. @tar will be replaces with goblin.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_variables.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportExport&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Import/Export ===&lt;br /&gt;
&lt;br /&gt;
Your characters settings are saved on the game servers. This means that no matter what computer you play from, your character will load its latest settings.&lt;br /&gt;
&lt;br /&gt;
There may be instances where you want to backup your settings. Especially if you are about to make radical changes to your reflexes and system. In that case, this tab will allow you to save your current settings you your own computer or load any settings you have previously saved.&lt;br /&gt;
&lt;br /&gt;
WARNING: If you load previously saved setting from your computer, you will overwrite any changes you have made.&lt;br /&gt;
&lt;br /&gt;
Additionally, we keep a backup of your settings from the last 9 days, allowing you to revert to an older version of your settings.&lt;br /&gt;
&lt;br /&gt;
[[File:settings_importexport_210.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Advanced&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
Most of the advanced settings are never used. Explanations for the settings are below.&lt;br /&gt;
&lt;br /&gt;
[[File:settings_advanced_210.png]]&lt;br /&gt;
&lt;br /&gt;
* Settings&lt;br /&gt;
** Echo all GMCP messages: This will display all [[GMCP]] messages. This will be very spammy and is only needed if you are trying to debug problems.&lt;br /&gt;
** Echo trigger execution: This will echo all triggers as they happen. The more reflexes your character has, the more spammy this will be. Again, this is for debugging purposes.&lt;br /&gt;
** Log raw output to console&lt;br /&gt;
** Scrollback Limit: The more text stored in the scollback the more laggy the client can become. Increase at your own risk.&lt;br /&gt;
** Command Stack Delimiter: You can send multiple commands to the game by separating them with this character. By default is it the | character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Feedback&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
Hate us? Love us? Have a suggestions? Found a bug? Please send us your feedback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;help&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Help ===&lt;br /&gt;
Some basic help on importing, exporting, saving, and loading your settings.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=File:Settings_importexport_210.png&amp;diff=1137</id>
		<title>File:Settings importexport 210.png</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=File:Settings_importexport_210.png&amp;diff=1137"/>
		<updated>2018-03-18T17:08:07Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1136</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1136"/>
		<updated>2018-03-18T17:07:02Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The client settings window can be accessed by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser.&lt;br /&gt;
&lt;br /&gt;
There are 10 tabs in the settings window.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Display Options === &lt;br /&gt;
&lt;br /&gt;
The Display Options tab controls most of the basic settings of the client. Most options will demonstrate what will happen in the preview window to the right as they are checked and unchecked.&lt;br /&gt;
&lt;br /&gt;
[[File:nexus_settings_210.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;Options&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Output&#039;&#039;&#039;&lt;br /&gt;
** Display Font: You can change the font and the font size used by the client.&lt;br /&gt;
** Interface Style: This allows you to change what the client looks like. Currently you can select between standard and minimal, which is shown below.&lt;br /&gt;
[[File:Client_main_page_-_minimal_-_1280x1024.jpg]]&lt;br /&gt;
** Command Echo: When you type a command into the game to can opt to not display it. You can also set the color.&lt;br /&gt;
** Echo Target Changes: When you target something in the game, you can have it display that information.&lt;br /&gt;
** Add extra padding: Adds additional whitespace between lines, making it easier to read.&lt;br /&gt;
** Hide Chat Messages: You can opt not to show any chat messages in the main window. Chat will always display in the communication window.&lt;br /&gt;
** Show Inverted Colors: Invert the colors in the client. This will switch the black background to white.&lt;br /&gt;
** Prompt Lines: You can opt not to see your prompt at all. Your prompt typically displays health, mana, and balance. Although this varies from game to game.&lt;br /&gt;
** Only show the last prompt: Only display the most recent prompt at the bottom of the main display window.&lt;br /&gt;
** Plays Background Music: You can turn on/off the background music in the client. This does not effect other client sounds.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Interface&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
** Movement Compass: Select your preference for displaying the movement compass in the client. &lt;br /&gt;
** Clear commands from the input bar after sending: This will automatically clear your command line after you press enter.&lt;br /&gt;
** Show HELP files in a new window: When looking at help files, a window will popup to let you read them.&lt;br /&gt;
** Show item numbers on room/inventory lists: When checked, this option will display the unique item number for all items in the game in your inventory and room windows.&lt;br /&gt;
** Reduced gauge height: This options will reduce the height of the gauges in the client, allowing more room for the output window.&lt;br /&gt;
** Display tooltips: Hide or display tooltips when hovering over parts of the main client window.&lt;br /&gt;
** Copy on Select: When copying text from the output window, it will automatically be copied to your computer&#039;s clipboard.&lt;br /&gt;
** Enable desktop notifications: This will notify you when something is happening in the game when the client isn&#039;t the active window/tab.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Timestamps&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Logging&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in logs - Toggle whether to show timestamps in logs.&lt;br /&gt;
** Prepend history on logging start - Add what is already in your output window to the top of the log when you start logging.&lt;br /&gt;
* &#039;&#039;&#039;Timestamps&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in the main output window: Display the time that each line in the game is received.&lt;br /&gt;
** Show timestamps in the main output scrollback: Display timestamps on each line when scrolling up the main output window.&lt;br /&gt;
** Show milliseconds on timestamps: Display timestamps down to the millisecond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Colors&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
This window will allow you to set the colors sent from the game to the Nexus client to whatever your heart desires. &lt;br /&gt;
&lt;br /&gt;
[[File:Settings_color.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Buttons&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
Nexus can have 6 to 12 buttons placed directly above the command line based on your preferences. When you character is first created it is populated with some basic commands. The buttons tab, allows you to set the number of buttons displayed and edit what each button does when clicked.&lt;br /&gt;
&lt;br /&gt;
Below is an example of the button bar in the main client window.&lt;br /&gt;
&lt;br /&gt;
[[File:Client_buttons.png]]&lt;br /&gt;
&lt;br /&gt;
The buttons tab allows you to set the text for the button, a basic command, and a script should you desire. The commands can include [[aliases]] from your [[Reflexes|reflex]] settings. If you are running a script from the button, be sure to review the [[javascript]] page for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:Buttons_tab.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflex_Packages&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflex Packages ===&lt;br /&gt;
&lt;br /&gt;
This tab will allow you to install packages from other players. Packages is a term used to describe groups of reflexes.&lt;br /&gt;
&lt;br /&gt;
By default all characters come with the Numpad movement package. This package allows you to use the numpad to move around the game world.&lt;br /&gt;
&lt;br /&gt;
If you would like to create your own package, click &#039;Add a package&#039; and assign reflexes to that new package in your reflexes tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_packages.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflexes&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflexes ===&lt;br /&gt;
Reflexes is an indepth subject and can be fully explained on [[Reflexes|its own page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Variables&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Variables ===&lt;br /&gt;
&lt;br /&gt;
A variable is alphabetic character representing a value or text that may be used in a reflex. For example, a user may store the number of a pack or the name of the last player that attacked them.&lt;br /&gt;
&lt;br /&gt;
Variables can then be used by other reflexes by using the @ symbol and the variable name. For example, from the image below, @pack would be replaced with my pack number, 12345. @tar will be replaces with goblin.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_variables.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportExport&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Import/Export ===&lt;br /&gt;
&lt;br /&gt;
Your characters settings are saved on the game servers. This means that no matter what computer you play from, your character will load its latest settings.&lt;br /&gt;
&lt;br /&gt;
There may be instances where you want to backup your settings. Especially if you are about to make radical changes to your reflexes and system. In that case, this tab will allow you to save your current settings you your own computer or load any settings you have previously saved.&lt;br /&gt;
&lt;br /&gt;
WARNING: If you load previously saved setting from your computer, you will overwrite any changes you have made.&lt;br /&gt;
&lt;br /&gt;
Additionally, we keep a backup of your settings from the last 9 days, allowing you to revert to an older version of your settings.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_import.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Advanced&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
Most of the advanced settings are never used. Explanations for the settings are below.&lt;br /&gt;
&lt;br /&gt;
[[File:settings_advanced_210.png]]&lt;br /&gt;
&lt;br /&gt;
* Settings&lt;br /&gt;
** Echo all GMCP messages: This will display all [[GMCP]] messages. This will be very spammy and is only needed if you are trying to debug problems.&lt;br /&gt;
** Echo trigger execution: This will echo all triggers as they happen. The more reflexes your character has, the more spammy this will be. Again, this is for debugging purposes.&lt;br /&gt;
** Log raw output to console&lt;br /&gt;
** Scrollback Limit: The more text stored in the scollback the more laggy the client can become. Increase at your own risk.&lt;br /&gt;
** Command Stack Delimiter: You can send multiple commands to the game by separating them with this character. By default is it the | character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Feedback&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
Hate us? Love us? Have a suggestions? Found a bug? Please send us your feedback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;help&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Help ===&lt;br /&gt;
Some basic help on importing, exporting, saving, and loading your settings.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1135</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1135"/>
		<updated>2018-03-18T17:04:57Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The client settings window can be accessed by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser.&lt;br /&gt;
&lt;br /&gt;
There are 10 tabs in the settings window.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Display Options === &lt;br /&gt;
&lt;br /&gt;
The Display Options tab controls most of the basic settings of the client. Most options will demonstrate what will happen in the preview window to the right as they are checked and unchecked.&lt;br /&gt;
&lt;br /&gt;
[[File:nexus_settings_210.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;Options&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Output&#039;&#039;&#039;&lt;br /&gt;
** Display Font: You can change the font and the font size used by the client.&lt;br /&gt;
** Interface Style: This allows you to change what the client looks like. Currently you can select between standard and minimal, which is shown below.&lt;br /&gt;
[[File:Client_main_page_-_minimal_-_1280x1024.jpg]]&lt;br /&gt;
** Command Echo: When you type a command into the game to can opt to not display it. You can also set the color.&lt;br /&gt;
** Echo Target Changes: When you target something in the game, you can have it display that information.&lt;br /&gt;
** Add extra padding: Adds additional whitespace between lines, making it easier to read.&lt;br /&gt;
** Hide Chat Messages: You can opt not to show any chat messages in the main window. Chat will always display in the communication window.&lt;br /&gt;
** Show Inverted Colors: Invert the colors in the client. This will switch the black background to white.&lt;br /&gt;
** Prompt Lines: You can opt not to see your prompt at all. Your prompt typically displays health, mana, and balance. Although this varies from game to game.&lt;br /&gt;
** Only show the last prompt: Only display the most recent prompt at the bottom of the main display window.&lt;br /&gt;
** Plays Background Music: You can turn on/off the background music in the client. This does not effect other client sounds.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Interface&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
** Movement Compass: Select your preference for displaying the movement compass in the client. &lt;br /&gt;
** Clear commands from the input bar after sending: This will automatically clear your command line after you press enter.&lt;br /&gt;
** Show HELP files in a new window: When looking at help files, a window will popup to let you read them.&lt;br /&gt;
** Show item numbers on room/inventory lists: When checked, this option will display the unique item number for all items in the game in your inventory and room windows.&lt;br /&gt;
** Reduced gauge height: This options will reduce the height of the gauges in the client, allowing more room for the output window.&lt;br /&gt;
** Display tooltips: Hide or display tooltips when hovering over parts of the main client window.&lt;br /&gt;
** Copy on Select: When copying text from the output window, it will automatically be copied to your computer&#039;s clipboard.&lt;br /&gt;
** Enable desktop notifications: This will notify you when something is happening in the game when the client isn&#039;t the active window/tab.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Timestamps&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Logging&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in logs - Toggle whether to show timestamps in logs.&lt;br /&gt;
** Prepend history on logging start - Add what is already in your output window to the top of the log when you start logging.&lt;br /&gt;
* &#039;&#039;&#039;Timestamps&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in the main output window: Display the time that each line in the game is received.&lt;br /&gt;
** Show timestamps in the main output scrollback: Display timestamps on each line when scrolling up the main output window.&lt;br /&gt;
** Show milliseconds on timestamps: Display timestamps down to the millisecond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Colors&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
This window will allow you to set the colors sent from the game to the Nexus client to whatever your heart desires. &lt;br /&gt;
&lt;br /&gt;
[[File:Settings_color.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Buttons&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
Nexus can have 6 to 12 buttons placed directly above the command line based on your preferences. When you character is first created it is populated with some basic commands. The buttons tab, allows you to set the number of buttons displayed and edit what each button does when clicked.&lt;br /&gt;
&lt;br /&gt;
Below is an example of the button bar in the main client window.&lt;br /&gt;
&lt;br /&gt;
[[File:Client_buttons.png]]&lt;br /&gt;
&lt;br /&gt;
The buttons tab allows you to set the text for the button, a basic command, and a script should you desire. The commands can include [[aliases]] from your [[Reflexes|reflex]] settings. If you are running a script from the button, be sure to review the [[javascript]] page for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:Buttons_tab.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflex_Packages&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflex Packages ===&lt;br /&gt;
&lt;br /&gt;
This tab will allow you to install packages from other players. Packages is a term used to describe groups of reflexes.&lt;br /&gt;
&lt;br /&gt;
By default all characters come with the Numpad movement package. This package allows you to use the numpad to move around the game world.&lt;br /&gt;
&lt;br /&gt;
If you would like to create your own package, click &#039;Add a package&#039; and assign reflexes to that new package in your reflexes tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_packages.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflexes&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflexes ===&lt;br /&gt;
Reflexes is an indepth subject and can be fully explained on [[Reflexes|its own page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Variables&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Variables ===&lt;br /&gt;
&lt;br /&gt;
A variable is alphabetic character representing a value or text that may be used in a reflex. For example, a user may store the number of a pack or the name of the last player that attacked them.&lt;br /&gt;
&lt;br /&gt;
Variables can then be used by other reflexes by using the @ symbol and the variable name. For example, from the image below, @pack would be replaced with my pack number, 12345. @tar will be replaces with goblin.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_variables.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportExport&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Import/Export ===&lt;br /&gt;
&lt;br /&gt;
Your characters settings are saved on the game servers. This means that no matter what computer you play from, your character will load its latest settings.&lt;br /&gt;
&lt;br /&gt;
There may be instances where you want to backup your settings. Especially if you are about to make radical changes to your reflexes and system. In that case, this tab will allow you to save your current settings you your own computer or load any settings you have previously saved.&lt;br /&gt;
&lt;br /&gt;
WARNING: If you load previously saved setting from your computer, you will overwrite any changes you have made.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_import.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Advanced&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
Most of the advanced settings are never used. Explanations for the settings are below.&lt;br /&gt;
&lt;br /&gt;
[[File:settings_advanced_210.png]]&lt;br /&gt;
&lt;br /&gt;
* Settings&lt;br /&gt;
** Echo all GMCP messages: This will display all [[GMCP]] messages. This will be very spammy and is only needed if you are trying to debug problems.&lt;br /&gt;
** Echo trigger execution: This will echo all triggers as they happen. The more reflexes your character has, the more spammy this will be. Again, this is for debugging purposes.&lt;br /&gt;
** Log raw output to console&lt;br /&gt;
** Scrollback Limit: The more text stored in the scollback the more laggy the client can become. Increase at your own risk.&lt;br /&gt;
** Command Stack Delimiter: You can send multiple commands to the game by separating them with this character. By default is it the | character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Feedback&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
Hate us? Love us? Have a suggestions? Found a bug? Please send us your feedback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;help&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Help ===&lt;br /&gt;
Some basic help on importing, exporting, saving, and loading your settings.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=File:Settings_advanced_210.png&amp;diff=1134</id>
		<title>File:Settings advanced 210.png</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=File:Settings_advanced_210.png&amp;diff=1134"/>
		<updated>2018-03-18T17:04:26Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1130</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1130"/>
		<updated>2018-03-18T16:57:21Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The client settings window can be accessed by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser.&lt;br /&gt;
&lt;br /&gt;
There are 10 tabs in the settings window.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Display Options === &lt;br /&gt;
&lt;br /&gt;
The Display Options tab controls most of the basic settings of the client. Most options will demonstrate what will happen in the preview window to the right as they are checked and unchecked.&lt;br /&gt;
&lt;br /&gt;
[[File:nexus_settings_210.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;Options&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Output&#039;&#039;&#039;&lt;br /&gt;
** Display Font: You can change the font and the font size used by the client.&lt;br /&gt;
** Interface Style: This allows you to change what the client looks like. Currently you can select between standard and minimal, which is shown below.&lt;br /&gt;
[[File:Client_main_page_-_minimal_-_1280x1024.jpg]]&lt;br /&gt;
** Command Echo: When you type a command into the game to can opt to not display it. You can also set the color.&lt;br /&gt;
** Echo Target Changes: When you target something in the game, you can have it display that information.&lt;br /&gt;
** Add extra padding: Adds additional whitespace between lines, making it easier to read.&lt;br /&gt;
** Hide Chat Messages: You can opt not to show any chat messages in the main window. Chat will always display in the communication window.&lt;br /&gt;
** Show Inverted Colors: Invert the colors in the client. This will switch the black background to white.&lt;br /&gt;
** Prompt Lines: You can opt not to see your prompt at all. Your prompt typically displays health, mana, and balance. Although this varies from game to game.&lt;br /&gt;
** Only show the last prompt: Only display the most recent prompt at the bottom of the main display window.&lt;br /&gt;
** Plays Background Music: You can turn on/off the background music in the client. This does not effect other client sounds.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Interface&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
** Movement Compass: Select your preference for displaying the movement compass in the client. &lt;br /&gt;
** Clear commands from the input bar after sending: This will automatically clear your command line after you press enter.&lt;br /&gt;
** Show HELP files in a new window: When looking at help files, a window will popup to let you read them.&lt;br /&gt;
** Show item numbers on room/inventory lists: When checked, this option will display the unique item number for all items in the game in your inventory and room windows.&lt;br /&gt;
** Reduced gauge height: This options will reduce the height of the gauges in the client, allowing more room for the output window.&lt;br /&gt;
** Display tooltips: Hide or display tooltips when hovering over parts of the main client window.&lt;br /&gt;
** Copy on Select: When copying text from the output window, it will automatically be copied to your computer&#039;s clipboard.&lt;br /&gt;
** Enable desktop notifications: This will notify you when something is happening in the game when the client isn&#039;t the active window/tab.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Timestamps&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Logging&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in logs - Toggle whether to show timestamps in logs.&lt;br /&gt;
** Prepend history on logging start - Add what is already in your output window to the top of the log when you start logging.&lt;br /&gt;
* &#039;&#039;&#039;Timestamps&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in the main output window: Display the time that each line in the game is received.&lt;br /&gt;
** Show timestamps in the main output scrollback: Display timestamps on each line when scrolling up the main output window.&lt;br /&gt;
** Show milliseconds on timestamps: Display timestamps down to the millisecond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Colors&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
This window will allow you to set the colors sent from the game to the Nexus client to whatever your heart desires. &lt;br /&gt;
&lt;br /&gt;
[[File:Settings_color.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Buttons&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
Nexus can have 6 to 12 buttons placed directly above the command line based on your preferences. When you character is first created it is populated with some basic commands. The buttons tab, allows you to set the number of buttons displayed and edit what each button does when clicked.&lt;br /&gt;
&lt;br /&gt;
Below is an example of the button bar in the main client window.&lt;br /&gt;
&lt;br /&gt;
[[File:Client_buttons.png]]&lt;br /&gt;
&lt;br /&gt;
The buttons tab allows you to set the text for the button, a basic command, and a script should you desire. The commands can include [[aliases]] from your [[Reflexes|reflex]] settings. If you are running a script from the button, be sure to review the [[javascript]] page for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:Buttons_tab.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflex_Packages&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflex Packages ===&lt;br /&gt;
&lt;br /&gt;
This tab will allow you to install packages from other players. Packages is a term used to describe groups of reflexes.&lt;br /&gt;
&lt;br /&gt;
By default all characters come with the Numpad movement package. This package allows you to use the numpad to move around the game world.&lt;br /&gt;
&lt;br /&gt;
If you would like to create your own package, click &#039;Add a package&#039; and assign reflexes to that new package in your reflexes tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_packages.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflexes&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflexes ===&lt;br /&gt;
Reflexes is an indepth subject and can be fully explained on [[Reflexes|its own page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Variables&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Variables ===&lt;br /&gt;
&lt;br /&gt;
A variable is alphabetic character representing a value or text that may be used in a reflex. For example, a user may store the number of a pack or the name of the last player that attacked them.&lt;br /&gt;
&lt;br /&gt;
Variables can then be used by other reflexes by using the @ symbol and the variable name. For example, from the image below, @pack would be replaced with my pack number, 12345. @tar will be replaces with goblin.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_variables.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportExport&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Import/Export ===&lt;br /&gt;
&lt;br /&gt;
Your characters settings are saved on the game servers. This means that no matter what computer you play from, your character will load its latest settings.&lt;br /&gt;
&lt;br /&gt;
There may be instances where you want to backup your settings. Especially if you are about to make radical changes to your reflexes and system. In that case, this tab will allow you to save your current settings you your own computer or load any settings you have previously saved.&lt;br /&gt;
&lt;br /&gt;
WARNING: If you load previously saved setting from your computer, you will overwrite any changes you have made.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_import.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Advanced&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
Most of the advanced settings are never used. Explanations for the settings are below.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_advances.png]]&lt;br /&gt;
&lt;br /&gt;
* Settings&lt;br /&gt;
** Echo all GMCP messages: This will display all [[GMCP]] messages. This will be very spammy and is only needed if you are trying to debug problems.&lt;br /&gt;
** Echo trigger execution: This will echo all triggers as they happen. The more reflexes your character has, the more spammy this will be. Again, this is for debugging purposes.&lt;br /&gt;
** Log raw output to console&lt;br /&gt;
** Scrollback Limit: The more text stored in the scollback the more laggy the client can become. Increase at your own risk.&lt;br /&gt;
** Command Stack Delimiter: You can send multiple commands to the game by separating them with this character. By default is it the | character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Feedback&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
Hate us? Love us? Have a suggestions? Found a bug? Please send us your feedback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;help&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Help ===&lt;br /&gt;
Some basic help on importing, exporting, saving, and loading your settings.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1129</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1129"/>
		<updated>2018-03-18T16:55:46Z</updated>

		<summary type="html">&lt;p&gt;Justin: 2.10 Updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The client settings window can be accessed by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser.&lt;br /&gt;
&lt;br /&gt;
There are 10 tabs in the settings window.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Display Options === &lt;br /&gt;
&lt;br /&gt;
The Display Options tab controls most of the basic settings of the client. Most options will demonstrate what will happen in the preview window to the right as they are checked and unchecked.&lt;br /&gt;
&lt;br /&gt;
[[File:nexus_settings_210.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;Options&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Output&#039;&#039;&#039;&lt;br /&gt;
** Display Font: You can change the font and the font size used by the client.&lt;br /&gt;
** Interface Style: This allows you to change what the client looks like. Currently you can select between standard and minimal, which is shown below.&lt;br /&gt;
[[File:Client_main_page_-_minimal_-_1280x1024.jpg]]&lt;br /&gt;
** Command Echo: When you type a command into the game to can opt to not display it. You can also set the color.&lt;br /&gt;
** Echo Target Changes: When you target something in the game, you can have it display that information.&lt;br /&gt;
** Add extra padding: Adds additional whitespace between lines, making it easier to read.&lt;br /&gt;
** Hide Chat Messages: You can opt not to show any chat messages in the main window. Chat will always display in the communication window.&lt;br /&gt;
** Show Inverted Colors: Invert the colors in the client. This will switch the black background to white.&lt;br /&gt;
** Prompt Lines: You can opt not to see your prompt at all. Your prompt typically displays health, mana, and balance. Although this varies from game to game.&lt;br /&gt;
** Only show the last prompt: Only display the most recent prompt at the bottom of the main display window.&lt;br /&gt;
** Plays Background Music: You can turn on/off the background music in the client. This does not effect other client sounds.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Interface&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
** Movement Compass: Select your preference for displaying the movement compass in the client. &lt;br /&gt;
** Clear commands from the input bar after sending: This will automatically clear your command line after you press enter.&lt;br /&gt;
** Show HELP files in a new window: When looking at help files, a window will popup to let you read them.&lt;br /&gt;
** Show item numbers on room/inventory lists: When checked, this option will display the unique item number for all items in the game in your inventory and room windows.&lt;br /&gt;
** Reduced gauge height: This options will reduce the height of the gauges in the client, allowing more room for the output window.&lt;br /&gt;
** Display tooltips: Hide or display tooltips when hovering over parts of the main client window.&lt;br /&gt;
** Copy on Select: When copying text from the output window, it will automatically be copied to your computer&#039;s clipboard.&lt;br /&gt;
** Enable desktop notifications: This will notify you when something is happening in the game when the client isn&#039;t the active window/tab.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Timestamps&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Logging&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in logs - Toggle whether to show timestamps in logs.&lt;br /&gt;
** Prepend history on logging start - Add what is already in your output window to the top of the log when you start logging.&lt;br /&gt;
* &#039;&#039;&#039;Timestamps&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in the main output window: Display the time that each line in the game is received.&lt;br /&gt;
** Show timestamps in the main output scrollback: Display timestamps on each line when scrolling up the main output window.&lt;br /&gt;
** Show milliseconds on timestamps: Display timestamps down to the millisecond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Colors&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
This window will allow you to set the colors sent from the game to the Nexus client to whatever your heart desires. &lt;br /&gt;
&lt;br /&gt;
[[File:Settings_color.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Buttons&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
Nexus can have 6 to 12 buttons placed directly above the command line based on your preferences. When you character is first created it is populated with some basic commands. The buttons tab, allows you to set the number of buttons displayed and edit what each button does when clicked.&lt;br /&gt;
&lt;br /&gt;
Below is an example of the button bar in the main client window.&lt;br /&gt;
&lt;br /&gt;
[[File:Client_buttons.png]]&lt;br /&gt;
&lt;br /&gt;
The buttons tab allows you to set the text for the button, a basic command, and a script should you desire. The commands can include [[aliases]] from your [[Reflexes|reflex]] settings. If you are running a script from the button, be sure to review the [[javascript]] page for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:Buttons_tab.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflex_Packages&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflex Packages ===&lt;br /&gt;
&lt;br /&gt;
This tab will allow you to install packages from other players. Packages is a term used to describe groups of reflexes.&lt;br /&gt;
&lt;br /&gt;
By default all characters come with the Numpad movement package. This package allows you to use the numpad to move around the game world.&lt;br /&gt;
&lt;br /&gt;
If you would like to create your own package, click &#039;Add a package&#039; and assign reflexes to that new package in your reflexes tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_packages.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflexes&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflexes ===&lt;br /&gt;
Reflexes is an indepth subject and can be fully explained on [[Reflexes|its own page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Variables&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Variables ===&lt;br /&gt;
&lt;br /&gt;
A variable is alphabetic character representing a value or text that may be used in a reflex. For example, a user may store the number of a pack or the name of the last player that attacked them.&lt;br /&gt;
&lt;br /&gt;
Variables can then be used by other reflexes by using the @ symbol and the variable name. For example, from the image below, @pack would be replaced with my pack number, 12345. @tar will be replaces with goblin.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_variables.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportExport&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Import/Export ===&lt;br /&gt;
&lt;br /&gt;
Your characters settings are saved on the game servers. This means that no matter what computer you play from, your character will load its latest settings.&lt;br /&gt;
&lt;br /&gt;
There may be instances where you want to backup your settings. Especially if you are about to make radical changes to your reflexes and system. In that case, this tab will allow you to save your current settings you your own computer or load any settings you have previously saved.&lt;br /&gt;
&lt;br /&gt;
WARNING: If you load previously saved setting from your computer, you will overwrite any changes you have made.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_import.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Advances&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
Most of the advanced settings are never used. Explanations for the settings are below.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_advances.png]]&lt;br /&gt;
&lt;br /&gt;
* Settings&lt;br /&gt;
** Echo all GMCP messages: This will display all [[GMCP]] messages. This will be very spammy and is only needed if you are trying to debug problems.&lt;br /&gt;
** Echo trigger execution: This will echo all triggers as they happen. The more reflexes your character has, the more spammy this will be. Again, this is for debugging purposes.&lt;br /&gt;
** Log raw output to console&lt;br /&gt;
** Use Secure WebSockets: Experimental&lt;br /&gt;
** Scrollback Limit: The more text stored in the scollback the more laggy the client can become. Increase at your own risk.&lt;br /&gt;
** Command Stack Delimiter: You can send multiple commands to the game by separating them with this character. By default is it the | character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Feedback&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
Hate us? Love us? Have a suggestions? Found a bug? Please send us your feedback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;help&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Help ===&lt;br /&gt;
Some basic help on importing, exporting, saving, and loading your settings.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1128</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Settings&amp;diff=1128"/>
		<updated>2018-03-18T16:51:09Z</updated>

		<summary type="html">&lt;p&gt;Justin: /* Display Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The client settings window can be accessed by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser.&lt;br /&gt;
&lt;br /&gt;
There are 10 tabs in the settings window.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Display Options === &lt;br /&gt;
&lt;br /&gt;
The Display Options tab controls most of the basic settings of the client. Most options will demonstrate what will happen in the preview window to the right as they are checked and unchecked.&lt;br /&gt;
&lt;br /&gt;
[[File:nexus_settings_210.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Options&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;Options&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Output&#039;&#039;&#039;&lt;br /&gt;
** Display Font: You can change the font and the font size used by the client.&lt;br /&gt;
** Interface Style: This allows you to change what the client looks like. Currently you can select between standard and minimal, which is shown below.&lt;br /&gt;
[[File:Client_main_page_-_minimal_-_1280x1024.jpg]]&lt;br /&gt;
** Command Echo: When you type a command into the game to can opt to not display it. You can also set the color.&lt;br /&gt;
** Echo Target Changes: When you target something in the game, you can have it display that information.&lt;br /&gt;
** Hide Chat Messages: You can opt not to show any chat messages in the main window. Chat will always display in the communication window.&lt;br /&gt;
** Show Inverted Colors: Invert the colors in the client. This will switch the black background to white.&lt;br /&gt;
** Prompt Lines: You can opt not to see your prompt at all. Your prompt typically displays health, mana, and balance. Although this varies from game to game.&lt;br /&gt;
** Only show the last prompt: Only display the most recent prompt at the bottom of the main display window.&lt;br /&gt;
** Plays Background Music: You can turn on/off the background music in the client. This does not effect other client sounds.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Interface&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
** Movement Compass: Select your preference for displaying the movement compass in the client. &lt;br /&gt;
** Clear commands from the input bar after sending: This will automatically clear your command line after you press enter.&lt;br /&gt;
** Show HELP files in a new window: When looking at help files, a window will popup to let you read them.&lt;br /&gt;
** Show item numbers on room/inventory lists: When checked, this option will display the unique item number for all items in the game in your inventory and room windows.&lt;br /&gt;
** Reduced gauge height: This options will reduce the height of the gauges in the client, allowing more room for the output window.&lt;br /&gt;
** Display tooltips: Hide or display tooltips when hovering over parts of the main client window.&lt;br /&gt;
** Enable desktop notifications: This will notify you when something is happening in the game.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Display_Options_Timestamps&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Timestamps&#039;&#039;&#039;&lt;br /&gt;
** Show timestamps in the main output window: Display the time that each line in the game is received.&lt;br /&gt;
** Show timestamps in the main output scrollback: Display timestamps on each line when scrolling up the main output window.&lt;br /&gt;
** Show milliseconds on timestamps: Display timestamps down to the millisecond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Colors&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
This window will allow you to set the colors sent from the game to the Nexus client to whatever your heart desires. &lt;br /&gt;
&lt;br /&gt;
[[File:Settings_color.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Buttons&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
Nexus can have 6 to 12 buttons placed directly above the command line based on your preferences. When you character is first created it is populated with some basic commands. The buttons tab, allows you to set the number of buttons displayed and edit what each button does when clicked.&lt;br /&gt;
&lt;br /&gt;
Below is an example of the button bar in the main client window.&lt;br /&gt;
&lt;br /&gt;
[[File:Client_buttons.png]]&lt;br /&gt;
&lt;br /&gt;
The buttons tab allows you to set the text for the button, a basic command, and a script should you desire. The commands can include [[aliases]] from your [[Reflexes|reflex]] settings. If you are running a script from the button, be sure to review the [[javascript]] page for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:Buttons_tab.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflex_Packages&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflex Packages ===&lt;br /&gt;
&lt;br /&gt;
This tab will allow you to install packages from other players. Packages is a term used to describe groups of reflexes.&lt;br /&gt;
&lt;br /&gt;
By default all characters come with the Numpad movement package. This package allows you to use the numpad to move around the game world.&lt;br /&gt;
&lt;br /&gt;
If you would like to create your own package, click &#039;Add a package&#039; and assign reflexes to that new package in your reflexes tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_packages.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reflexes&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Reflexes ===&lt;br /&gt;
Reflexes is an indepth subject and can be fully explained on [[Reflexes|its own page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Variables&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Variables ===&lt;br /&gt;
&lt;br /&gt;
A variable is alphabetic character representing a value or text that may be used in a reflex. For example, a user may store the number of a pack or the name of the last player that attacked them.&lt;br /&gt;
&lt;br /&gt;
Variables can then be used by other reflexes by using the @ symbol and the variable name. For example, from the image below, @pack would be replaced with my pack number, 12345. @tar will be replaces with goblin.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_variables.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportExport&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Import/Export ===&lt;br /&gt;
&lt;br /&gt;
Your characters settings are saved on the game servers. This means that no matter what computer you play from, your character will load its latest settings.&lt;br /&gt;
&lt;br /&gt;
There may be instances where you want to backup your settings. Especially if you are about to make radical changes to your reflexes and system. In that case, this tab will allow you to save your current settings you your own computer or load any settings you have previously saved.&lt;br /&gt;
&lt;br /&gt;
WARNING: If you load previously saved setting from your computer, you will overwrite any changes you have made.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_import.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Advances&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
Most of the advanced settings are never used. Explanations for the settings are below.&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_advances.png]]&lt;br /&gt;
&lt;br /&gt;
* Settings&lt;br /&gt;
** Echo all GMCP messages: This will display all [[GMCP]] messages. This will be very spammy and is only needed if you are trying to debug problems.&lt;br /&gt;
** Echo trigger execution: This will echo all triggers as they happen. The more reflexes your character has, the more spammy this will be. Again, this is for debugging purposes.&lt;br /&gt;
** Log raw output to console&lt;br /&gt;
** Use Secure WebSockets: Experimental&lt;br /&gt;
** Scrollback Limit: The more text stored in the scollback the more laggy the client can become. Increase at your own risk.&lt;br /&gt;
** Command Stack Delimiter: You can send multiple commands to the game by separating them with this character. By default is it the | character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Feedback&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
Hate us? Love us? Have a suggestions? Found a bug? Please send us your feedback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;help&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Help ===&lt;br /&gt;
Some basic help on importing, exporting, saving, and loading your settings.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=File:Nexus_settings_210.jpg&amp;diff=1127</id>
		<title>File:Nexus settings 210.jpg</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=File:Nexus_settings_210.jpg&amp;diff=1127"/>
		<updated>2018-03-18T16:50:15Z</updated>

		<summary type="html">&lt;p&gt;Justin: Settings window in Nexus 2.10&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Settings window in Nexus 2.10&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=1126</id>
		<title>Functions</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=1126"/>
		<updated>2018-03-18T16:45:02Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Functions and scripts are the most powerful option that the client has to offer, but also one that is most difficult to use. Functions and scripts are programmed in the [[Javascript]] language. &lt;br /&gt;
&lt;br /&gt;
While we won&#039;t be covering how to code in JavaScript in this section, we&#039;ll cover some of the built-in functions and how to build your own custom code to further expand your reflexes.&lt;br /&gt;
&lt;br /&gt;
==== Scripts vs. Functions ====&lt;br /&gt;
* Scripts are specific code blocks that are fired as a result of a reflex being fired. This can be a trigger, alias, or keybind.&lt;br /&gt;
* Functions are re-usable code blocks that can be called from scripts or directly from the client&#039;s input. &lt;br /&gt;
&lt;br /&gt;
==== Calling functions ====&lt;br /&gt;
Functions can be called from scripts by using &#039;&#039;&#039;run_function(name, args, package)&#039;&#039;&#039;. As mentioned above, they can also be called directly from the client&#039;s input, so you&#039;ll want to make sure your functions are named in such a way that they do not overlap with in-game commands you may wish to use.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
Scripts and functions are generally self-contained, variables are local to the code block and are cleared when the script or function finishes. To interact with variables used in the [SimplifiedScripting] system, you&#039;ll want to use the built-in modules: get_variable, set_variable etc.&lt;br /&gt;
* Functions called in a trigger receive information about the match: &#039;&#039;&#039;args.text, args.match, args.prefix, args.suffix, args.backrefs[1] ...&#039;&#039;&#039;&lt;br /&gt;
* Scripts receive the backrefs (&#039;&#039;&#039;args[0]., args[1],. args[2], ...&#039;&#039;&#039;) and the current_package variable indicating the active package.&lt;br /&gt;
&lt;br /&gt;
==== Built-in modules ====&lt;br /&gt;
&lt;br /&gt;
===== Commands =====&lt;br /&gt;
* &#039;&#039;&#039;send_command(input, no_expansion)&#039;&#039;&#039; - Send a command to the game. Set no_expansion to 1 to send the exact string to the game without expansion.&lt;br /&gt;
* &#039;&#039;&#039;display_notice(text, fgcolor, bgcolor)&#039;&#039;&#039; - display a notice on the output screen.&lt;br /&gt;
&lt;br /&gt;
===== Variables =====&lt;br /&gt;
* &#039;&#039;&#039;get_variable(name)&#039;&#039;&#039; - Retrieve the value of a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;set_variable(name, val)&#039;&#039;&#039; - Set a variable for the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;delete_variable(name)&#039;&#039;&#039; - Delete a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;inc_variable(name, by)&#039;&#039;&#039; - Increment a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;dec_variable(name, by)&#039;&#039;&#039; - Decrement a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;mul_variable(name, by)&#039;&#039;&#039; - Multiply a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;div_variable(name, by)&#039;&#039;&#039; - Divide a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
&lt;br /&gt;
===== Reflex Manipulation =====&lt;br /&gt;
* &#039;&#039;&#039;reflex_find_by_name(type, name, case_sensitive, enabled_only, package))&#039;&#039;&#039; - Search for a specific reflex.&lt;br /&gt;
** &#039;&#039;type&#039;&#039; - Type of reflex: &#039;alias&#039;, &#039;trigger&#039;, &#039;keybind&#039;, ...&lt;br /&gt;
** &#039;&#039;name&#039;&#039; - Name to search for&lt;br /&gt;
** &#039;&#039;case_sensitive&#039;&#039; - Whether the name needs to match case exactly&lt;br /&gt;
** &#039;&#039;enabled_only&#039;&#039; - Set if disabled reflexes (including reflexes in disabled groups) should be ignored&lt;br /&gt;
** &#039;&#039;package&#039;&#039; - Name if a package to search in; omit if searching in the main list&lt;br /&gt;
* &#039;&#039;&#039;reflex_enable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
* &#039;&#039;&#039;reflex_disable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
&lt;br /&gt;
===== Output Manipulation (Trigger Scripts)=====&lt;br /&gt;
* &#039;&#039;&#039;current_text()&#039;&#039;&#039; - An unformatted version of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;gag_current_line()&#039;&#039;&#039; - Hide the line that fired the trigger from the output window.&lt;br /&gt;
* &#039;&#039;&#039;colorize_current_line(start, length, fgcolor, bgcolor)&#039;&#039;&#039; - Colorize/highlight a specified part of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;replace_current_line(start, length, newtext, fgcolor, bgcolor)&#039;&#039;&#039; - Replace a party of the current line with the specified text and color.&lt;br /&gt;
&lt;br /&gt;
===== UI Manipulation =====&lt;br /&gt;
* &#039;&#039;&#039;client.register_custom_tab(tab,container_id)&#039;&#039;&#039; - Make a custom UI tab. &#039;&#039;Please note, this is unsupported.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Buttons =====&lt;br /&gt;
* &#039;&#039;&#039;buttons_set_label(id, text)&#039;&#039;&#039; - Set the text label on a button.&lt;br /&gt;
* &#039;&#039;&#039;buttons_set_commands(id, cmds)&#039;&#039;&#039; - Sets the command sent to the game when the button is pressed.&lt;br /&gt;
* &#039;&#039;&#039;buttons_set_highlight(id, on_off)&#039;&#039;&#039; - Set whether the button is highlighted or not.&lt;br /&gt;
* &#039;&#039;&#039;buttons_set_default(id)&#039;&#039;&#039; - Reset a button to the default value.&lt;br /&gt;
&lt;br /&gt;
===== Misc. =====&lt;br /&gt;
* &#039;&#039;&#039;to_number(val)&#039;&#039;&#039; - Convert a string number to a value.&lt;br /&gt;
* &#039;&#039;&#039;send_GMCP(message, arguments)&#039;&#039;&#039; - Sends a GMCP message to the game. Arguments are an object or string, depending on the GMCP call used - see the GMCP documentation for more information. &lt;br /&gt;
&lt;br /&gt;
==== Default functions ====&lt;br /&gt;
There are three functions which are called automatically by the client. These are &#039;&#039;&#039;onLoad&#039;&#039;&#039;, called when the settings are loaded, &#039;&#039;&#039;onGMCP&#039;&#039;&#039;, called upon receiving a GMCP message, and &#039;&#039;&#039;onBlock&#039;&#039;&#039;, called upon receiving each text block, allowing you to perform manipulations on it, or kickstart functionality that you want to execute on every prompt.&lt;br /&gt;
The function does not receive any data.&lt;br /&gt;
&lt;br /&gt;
The onGMCP function receives two arguments - &#039;&#039;&#039;args.gmcp_method&#039;&#039;&#039; is the GMCP message name, &#039;&#039;&#039;args.gmcp_args&#039;&#039;&#039; are the parameters (if any).&lt;br /&gt;
&lt;br /&gt;
The onBlock function can make use of the current_block variable, which holds the individual lines (current_block[0] is the first one, current_block[1] is the second one, and so on). The manipulation methods described with triggers are all applicable on these as well.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
For some examples of functions, read the [[examples]] page.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=1125</id>
		<title>Functions</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=1125"/>
		<updated>2018-03-18T16:44:39Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Functions and scripts are the most powerful option that the client has to offer, but also one that is most difficult to use. Functions and scripts are programmed in the [[Javascript]] language. &lt;br /&gt;
&lt;br /&gt;
While we won&#039;t be covering how to code in JavaScript in this section, we&#039;ll cover some of the built-in functions and how to build your own custom code to further expand your reflexes.&lt;br /&gt;
&lt;br /&gt;
==== Scripts vs. Functions ====&lt;br /&gt;
* Scripts are specific code blocks that are fired as a result of a reflex being fired. This can be a trigger, alias, or keybind.&lt;br /&gt;
* Functions are re-usable code blocks that can be called from scripts or directly from the client&#039;s input. &lt;br /&gt;
&lt;br /&gt;
==== Calling functions ====&lt;br /&gt;
Functions can be called from scripts by using &#039;&#039;&#039;run_function(name, args, package)&#039;&#039;&#039;. As mentioned above, they can also be called directly from the client&#039;s input, so you&#039;ll want to make sure your functions are named in such a way that they do not overlap with in-game commands you may wish to use.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
Scripts and functions are generally self-contained, variables are local to the code block and are cleared when the script or function finishes. To interact with variables used in the [SimplifiedScripting] system, you&#039;ll want to use the built-in modules: get_variable, set_variable etc.&lt;br /&gt;
* Functions called in a trigger receive information about the match: &#039;&#039;&#039;args.text, args.match, args.prefix, args.suffix, args.backrefs[1] ...&#039;&#039;&#039;&lt;br /&gt;
* Scripts receive the backrefs (&#039;&#039;&#039;args[0]., args[1],. args[2], ...&#039;&#039;&#039;) and the current_package variable indicating the active package.&lt;br /&gt;
&lt;br /&gt;
==== Built-in modules ====&lt;br /&gt;
&lt;br /&gt;
===== Commands =====&lt;br /&gt;
* &#039;&#039;&#039;send_command(input, no_expansion)&#039;&#039;&#039; - Send a command to the game. Set no_expansion to 1 to send the exact string to the game without expansion.&lt;br /&gt;
* &#039;&#039;&#039;display_notice(text, fgcolor, bgcolor)&#039;&#039;&#039; - display a notice on the output screen.&lt;br /&gt;
&lt;br /&gt;
===== Variables =====&lt;br /&gt;
* &#039;&#039;&#039;get_variable(name)&#039;&#039;&#039; - Retrieve the value of a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;set_variable(name, val)&#039;&#039;&#039; - Set a variable for the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;delete_variable(name)&#039;&#039;&#039; - Delete a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;inc_variable(name, by)&#039;&#039;&#039; - Increment a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;dec_variable(name, by)&#039;&#039;&#039; - Decrement a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;mul_variable(name, by)&#039;&#039;&#039; - Multiply a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;div_variable(name, by)&#039;&#039;&#039; - Divide a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
&lt;br /&gt;
===== Reflex Manipulation =====&lt;br /&gt;
* &#039;&#039;&#039;reflex_find_by_name(type, name, case_sensitive, enabled_only, package))&#039;&#039;&#039; - Search for a specific reflex.&lt;br /&gt;
** &#039;&#039;type&#039;&#039; - Type of reflex: &#039;alias&#039;, &#039;trigger&#039;, &#039;keybind&#039;, ...&lt;br /&gt;
** &#039;&#039;name&#039;&#039; - Name to search for&lt;br /&gt;
** &#039;&#039;case_sensitive&#039;&#039; - Whether the name needs to match case exactly&lt;br /&gt;
** &#039;&#039;enabled_only&#039;&#039; - Set if disabled reflexes (including reflexes in disabled groups) should be ignored&lt;br /&gt;
** &#039;&#039;package&#039;&#039; - Name if a package to search in; omit if searching in the main list&lt;br /&gt;
* &#039;&#039;&#039;reflex_enable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
* &#039;&#039;&#039;reflex_disable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
&lt;br /&gt;
===== Output Manipulation (Trigger Scripts)=====&lt;br /&gt;
* &#039;&#039;&#039;current_text()&#039;&#039;&#039; - An unformatted version of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;gag_current_line()&#039;&#039;&#039; - Hide the line that fired the trigger from the output window.&lt;br /&gt;
* &#039;&#039;&#039;colorize_current_line(start, length, fgcolor, bgcolor)&#039;&#039;&#039; - Colorize/highlight a specified part of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;replace_current_line(start, length, newtext, fgcolor, bgcolor)&#039;&#039;&#039; - Replace a party of the current line with the specified text and color.&lt;br /&gt;
&lt;br /&gt;
===== UI Manipulation =====&lt;br /&gt;
* &#039;&#039;&#039;client.register_custom_tab(tab,container_id)&#039;&#039;&#039; - Make a custom UI tab. &#039;&#039;Please note, this is unsupported.&#039;&#039;&lt;br /&gt;
===== Buttons. =====&lt;br /&gt;
* &#039;&#039;&#039;buttons_set_label(id, text)&#039;&#039;&#039; - Set the text label on a button.&lt;br /&gt;
* &#039;&#039;&#039;buttons_set_commands(id, cmds)&#039;&#039;&#039; - Sets the command sent to the game when the button is pressed.&lt;br /&gt;
* &#039;&#039;&#039;buttons_set_highlight(id, on_off)&#039;&#039;&#039; - Set whether the button is highlighted or not.&lt;br /&gt;
* &#039;&#039;&#039;buttons_set_default(id)&#039;&#039;&#039; - Reset a button to the default value.&lt;br /&gt;
&lt;br /&gt;
===== Misc. =====&lt;br /&gt;
* &#039;&#039;&#039;to_number(val)&#039;&#039;&#039; - Convert a string number to a value.&lt;br /&gt;
* &#039;&#039;&#039;send_GMCP(message, arguments)&#039;&#039;&#039; - Sends a GMCP message to the game. Arguments are an object or string, depending on the GMCP call used - see the GMCP documentation for more information. &lt;br /&gt;
&lt;br /&gt;
==== Default functions ====&lt;br /&gt;
There are three functions which are called automatically by the client. These are &#039;&#039;&#039;onLoad&#039;&#039;&#039;, called when the settings are loaded, &#039;&#039;&#039;onGMCP&#039;&#039;&#039;, called upon receiving a GMCP message, and &#039;&#039;&#039;onBlock&#039;&#039;&#039;, called upon receiving each text block, allowing you to perform manipulations on it, or kickstart functionality that you want to execute on every prompt.&lt;br /&gt;
The function does not receive any data.&lt;br /&gt;
&lt;br /&gt;
The onGMCP function receives two arguments - &#039;&#039;&#039;args.gmcp_method&#039;&#039;&#039; is the GMCP message name, &#039;&#039;&#039;args.gmcp_args&#039;&#039;&#039; are the parameters (if any).&lt;br /&gt;
&lt;br /&gt;
The onBlock function can make use of the current_block variable, which holds the individual lines (current_block[0] is the first one, current_block[1] is the second one, and so on). The manipulation methods described with triggers are all applicable on these as well.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
For some examples of functions, read the [[examples]] page.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=WildcardMatching&amp;diff=1124</id>
		<title>WildcardMatching</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=WildcardMatching&amp;diff=1124"/>
		<updated>2018-03-12T17:03:17Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This trigger captures the name and incoming direction for a player when they enter the room, using the [[Variables|variables]]: &amp;lt;person&amp;gt; and &amp;lt;direction&amp;gt;. Those variables can then be used in the action section with @person and @direction to, in this case, say &amp;quot;hi&amp;quot; to the person.&lt;br /&gt;
&lt;br /&gt;
Here is the trigger.&lt;br /&gt;
&lt;br /&gt;
[[File:WildcardTrigger.png]]&lt;br /&gt;
&lt;br /&gt;
Here is a sample of what it would look like in the game.&lt;br /&gt;
&lt;br /&gt;
[[File:WildcardOutput.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=WildcardMatching&amp;diff=1123</id>
		<title>WildcardMatching</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=WildcardMatching&amp;diff=1123"/>
		<updated>2018-03-12T17:02:51Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This trigger captures the name and incoming direction for a player when they enter the room, using the [[Variables|variables]]: &amp;lt;player&amp;gt; and &amp;lt;direction&amp;gt;. Those variables can then be used in the action section with @player and @direction to, in this case, say &amp;quot;hi&amp;quot; to the person.&lt;br /&gt;
&lt;br /&gt;
Here is the trigger.&lt;br /&gt;
&lt;br /&gt;
[[File:WildcardTrigger.png]]&lt;br /&gt;
&lt;br /&gt;
Here is a sample of what it would look like in the game.&lt;br /&gt;
&lt;br /&gt;
[[File:WildcardOutput.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Predefined_variables&amp;diff=1121</id>
		<title>Predefined variables</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Predefined_variables&amp;diff=1121"/>
		<updated>2016-10-20T20:40:49Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Predefined variables are set by the game as text is sent to the clients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Variable Name&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@tar&lt;br /&gt;
|Your current enemy target. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@match&lt;br /&gt;
|The text matched in a trigger.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@line&lt;br /&gt;
|The complete line of text that executed the trigger.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@suffix&lt;br /&gt;
|The suffix is set to all of the text received in a line after the matching text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@prefix&lt;br /&gt;
|The prefix is set to all of the text received in a line before the matching text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally, Nexus will attempt to automatically fill the in these variables for you:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Variable&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Game&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_hp&lt;br /&gt;
| Your current health&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxhp&lt;br /&gt;
| Your maximum health points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_mp&lt;br /&gt;
| Your current mana points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxmp&lt;br /&gt;
| Your maximum mana points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_nl&lt;br /&gt;
| Your experience percentage to next level&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_bal&lt;br /&gt;
| If you currently have balance&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_eq&lt;br /&gt;
| If you currently have equilibrium&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_vote&lt;br /&gt;
| If you have not voted for your game recently&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_string&lt;br /&gt;
| Your current prompt string&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_wp&lt;br /&gt;
| Your current willpower points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxwp&lt;br /&gt;
| Your maximum willpower points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_ep&lt;br /&gt;
| Your current endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxep&lt;br /&gt;
| Your maximum endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_xp&lt;br /&gt;
| The numerical amount of experience you have for your current level.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxxp&lt;br /&gt;
| The numerical amount of experience needed to advance from your current level.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_blood&lt;br /&gt;
| Your blood reserves percentage&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_bleeding&lt;br /&gt;
| The current amount of health you&#039;re bleeding for.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_blind&lt;br /&gt;
| If you are blind.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_deaf&lt;br /&gt;
| If you are deaf.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_prone&lt;br /&gt;
| If you are prone.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_cloak&lt;br /&gt;
| If you have the Cloak (tattoo) defence.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_fangbarrier&lt;br /&gt;
| If you have the fangbarrier defence.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_phased&lt;br /&gt;
| If you are phased.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_elevation&lt;br /&gt;
| What room elevation you&#039;re currently at.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_herb&lt;br /&gt;
| If you have herb/slice balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_salve&lt;br /&gt;
| If you have salve/poultice balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_pipe&lt;br /&gt;
| If you have pipe/tincture balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_elixir&lt;br /&gt;
| If you have elixir/serum balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_moss&lt;br /&gt;
| If you have moss/kidney balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_tree&lt;br /&gt;
| If your tree tattoo is off cooldown.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_renew&lt;br /&gt;
| If your renew ability is off cooldown.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_affelixir&lt;br /&gt;
| If your affliction elixir/serum balance is off cooldown.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_focus&lt;br /&gt;
| If your focus ability is off cooldown.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_writhing&lt;br /&gt;
| If you are currently writhing.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_soul&lt;br /&gt;
| Your soul percentage (drained by Carnifex).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_madness&lt;br /&gt;
| Your Shapeshifter madness percentage.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_left_arm&lt;br /&gt;
| If you have left arm balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_right_arm&lt;br /&gt;
| If you have right arm balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_wield_left&lt;br /&gt;
| What item are you wielding in your left hand.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_wield_right&lt;br /&gt;
| What item are you wielding in your right hand.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_essence&lt;br /&gt;
| Your remaining life essence percent (Necromancy).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_devotion&lt;br /&gt;
| Your remaining devotion percent (Devotion).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_spark&lt;br /&gt;
| Your remaining spark percent (Illumination).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_stance&lt;br /&gt;
| What Tekura stance you are currently in.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_kai&lt;br /&gt;
| What your kai level is at (Kaido).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_momentum&lt;br /&gt;
| Your current momentum level (Terramancy).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_charge_left&lt;br /&gt;
| Current charge of your left-hand weapon (Bladefire).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_charge_right&lt;br /&gt;
| Current charge of your right-hand weapon (Bladefire).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_mounted&lt;br /&gt;
| What steed you are currently mounted upon.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
This is the output from the game, showing some predefined variables. It uses the trigger below.&lt;br /&gt;
&lt;br /&gt;
[[File:PredefinedOutput.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the sample trigger used display the predefined variables above.&lt;br /&gt;
&lt;br /&gt;
[[File:PredefinedTrigger.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Predefined_variables&amp;diff=1120</id>
		<title>Predefined variables</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Predefined_variables&amp;diff=1120"/>
		<updated>2016-10-20T20:40:18Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Predefined variables are set by the game as text is sent to the clients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Variable Name&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@tar&lt;br /&gt;
|Your current enemy target. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@match&lt;br /&gt;
|The text matched in a trigger.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@line&lt;br /&gt;
|The complete line of text that executed the trigger.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@suffix&lt;br /&gt;
|The suffix is set to all of the text received in a line after the matching text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@prefix&lt;br /&gt;
|The prefix is set to all of the text received in a line before the matching text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally, Nexus will attempt to automatically fill the in these variables for you:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Variable&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Game&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_hp&lt;br /&gt;
| Your current health&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxhp&lt;br /&gt;
| Your maximum health points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_mp&lt;br /&gt;
| Your current mana points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxmp&lt;br /&gt;
| Your maximum mana points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_nl&lt;br /&gt;
| Your experience percentage to next level&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_bal&lt;br /&gt;
| If you currently have balance&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_eq&lt;br /&gt;
| If you currently have equilibrium&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_vote&lt;br /&gt;
| If you have not voted for your game recently&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_string&lt;br /&gt;
| Your current prompt string&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_wp&lt;br /&gt;
| Your current willpower points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxwp&lt;br /&gt;
| Your maximum willpower points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_ep&lt;br /&gt;
| Your current endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxep&lt;br /&gt;
| Your maximum endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxep&lt;br /&gt;
| Your maximum endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_xp&lt;br /&gt;
| The numerical amount of experience you have for your current level.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxxp&lt;br /&gt;
| The numerical amount of experience needed to advance from your current level.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_blood&lt;br /&gt;
| Your blood reserves percentage&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_bleeding&lt;br /&gt;
| The current amount of health you&#039;re bleeding for.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_blind&lt;br /&gt;
| If you are blind.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_deaf&lt;br /&gt;
| If you are deaf.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_prone&lt;br /&gt;
| If you are prone.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_cloak&lt;br /&gt;
| If you have the Cloak (tattoo) defence.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_fangbarrier&lt;br /&gt;
| If you have the fangbarrier defence.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_phased&lt;br /&gt;
| If you are phased.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_elevation&lt;br /&gt;
| What room elevation you&#039;re currently at.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_herb&lt;br /&gt;
| If you have herb/slice balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_salve&lt;br /&gt;
| If you have salve/poultice balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_pipe&lt;br /&gt;
| If you have pipe/tincture balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_elixir&lt;br /&gt;
| If you have elixir/serum balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_moss&lt;br /&gt;
| If you have moss/kidney balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_tree&lt;br /&gt;
| If your tree tattoo is off cooldown.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_renew&lt;br /&gt;
| If your renew ability is off cooldown.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_affelixir&lt;br /&gt;
| If your affliction elixir/serum balance is off cooldown.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_focus&lt;br /&gt;
| If your focus ability is off cooldown.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_writhing&lt;br /&gt;
| If you are currently writhing.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_soul&lt;br /&gt;
| Your soul percentage (drained by Carnifex).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_madness&lt;br /&gt;
| Your Shapeshifter madness percentage.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_left_arm&lt;br /&gt;
| If you have left arm balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_right_arm&lt;br /&gt;
| If you have right arm balance.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_wield_left&lt;br /&gt;
| What item are you wielding in your left hand.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_wield_right&lt;br /&gt;
| What item are you wielding in your right hand.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_essence&lt;br /&gt;
| Your remaining life essence percent (Necromancy).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_devotion&lt;br /&gt;
| Your remaining devotion percent (Devotion).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_spark&lt;br /&gt;
| Your remaining spark percent (Illumination).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_stance&lt;br /&gt;
| What Tekura stance you are currently in.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_kai&lt;br /&gt;
| What your kai level is at (Kaido).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_momentum&lt;br /&gt;
| Your current momentum level (Terramancy).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_charge_left&lt;br /&gt;
| Current charge of your left-hand weapon (Bladefire).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_charge_right&lt;br /&gt;
| Current charge of your right-hand weapon (Bladefire).&lt;br /&gt;
| Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_mounted&lt;br /&gt;
| What steed you are currently mounted upon.&lt;br /&gt;
| Aetolia&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
This is the output from the game, showing some predefined variables. It uses the trigger below.&lt;br /&gt;
&lt;br /&gt;
[[File:PredefinedOutput.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the sample trigger used display the predefined variables above.&lt;br /&gt;
&lt;br /&gt;
[[File:PredefinedTrigger.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Reflexes&amp;diff=1111</id>
		<title>Reflexes</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Reflexes&amp;diff=1111"/>
		<updated>2016-10-14T19:18:10Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Elf-summoner.jpg|right|frame|caption|A summoner from Imperian.]] The Nexus client allows for basic automation of your game experience by creating triggers, aliases, keybindings, and variables. These types of automation are referred to as &#039;&#039;reflexes&#039;&#039;. Reflexes will allow you to automatically enter commands when text is sent to you, quickly enter commands with a keystroke, and create short custom commands to send more information to the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Types of Reflexes ===&lt;br /&gt;
Reflexes are grouped into six major categories; &#039;&#039;&#039;Aliases&#039;&#039;&#039;, &#039;&#039;&#039;Events&#039;&#039;&#039;, &#039;&#039;&#039;Keybinds&#039;&#039;&#039;, &#039;&#039;&#039;Triggers&#039;&#039;&#039;, &#039;&#039;&#039;Functions&#039;&#039;&#039;, and &#039;&#039;&#039;Variables&#039;&#039;&#039;. The seventh category, &#039;&#039;&#039;Groups&#039;&#039;&#039; are used for organization.&lt;br /&gt;
&lt;br /&gt;
All reflexes are created, deleted, edited, and managed from the Reflexes tab in the settings window. Variables are the only exception and they are managed from their own Variables tab in settings.&lt;br /&gt;
&lt;br /&gt;
=== Aliases===&lt;br /&gt;
[[Aliases]] are used to create very short commands that can be quickly entered and execute longer or multiple commands instantly. &#039;&#039;Note that the Iron Realms games also have in-game alias systems that are separate. HELP ALIASES will explain, in-game.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Keybinds ===&lt;br /&gt;
[[Keybinds]] are similar to aliases but instantly send a command to the game with a single keystroke or keystroke combination. For example, control-h to sip health.&lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
[[Triggers]] are used to instantly send a command to the game after receiving specific text from the game. Triggers have been used to create simple to very complex fighting systems.&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
[[Events]] are used to perform an action when a pre-defined event happens, such as a defence being lost, or another player entering your room.&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
[[Functions]] are an advanced scripting option. Functions use javascript to process more complicated procedures. Functions are normally used by triggers, aliases, or keybinds.&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
[[Variables]] are usually used to save information for use in triggers, aliases, or keybindings. A popular use for varibles is assigning the monster you are fighting to a &#039;&#039;target&#039;&#039; variable and then using a single button to attack the target. Variables are managed from their own tab in settings and not in the reflexes tab.&lt;br /&gt;
&lt;br /&gt;
=== Groups ===&lt;br /&gt;
[[Groups]] are not technically a reflex, but are used to help organize and manage them. Systems can quickly grow to have hundreds of separate reflexes. You can put your reflexes into groups to better organize them. You can even use reflexes to automatically turn entire groups on and off.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Predefined_variables&amp;diff=1108</id>
		<title>Predefined variables</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Predefined_variables&amp;diff=1108"/>
		<updated>2016-10-14T19:04:13Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Predefined variables are set by the game as text is sent to the clients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Variable Name&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@tar&lt;br /&gt;
|Your current enemy target. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@match&lt;br /&gt;
|The text matched in a trigger.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@line&lt;br /&gt;
|The complete line of text that executed the trigger.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@suffix&lt;br /&gt;
|The suffix is set to all of the text received in a line after the matching text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@prefix&lt;br /&gt;
|The prefix is set to all of the text received in a line before the matching text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally, Nexus will attempt to automatically fill the in these variables for you:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Variable&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Game&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_hp&lt;br /&gt;
| Your current health&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxhp&lt;br /&gt;
| Your maximum health&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_mp&lt;br /&gt;
| Your current mana points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxmp&lt;br /&gt;
| Your current endurance points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_nl&lt;br /&gt;
| Your experience percentage to next level&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_bal&lt;br /&gt;
| If you currently have balance&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_eq&lt;br /&gt;
| If you currently have equilibrium&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_vote&lt;br /&gt;
| If you have not voted for your game recently&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_string&lt;br /&gt;
| Your current prompt string&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_wp&lt;br /&gt;
| Your current willpower points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxwp&lt;br /&gt;
| Your current endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_ep&lt;br /&gt;
| Your current endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxep&lt;br /&gt;
| Your maximum endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
This is the output from the game, showing some predefined variables. It uses the trigger below.&lt;br /&gt;
&lt;br /&gt;
[[File:PredefinedOutput.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the sample trigger used display the predefined variables above.&lt;br /&gt;
&lt;br /&gt;
[[File:PredefinedTrigger.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Predefined_variables&amp;diff=1107</id>
		<title>Predefined variables</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Predefined_variables&amp;diff=1107"/>
		<updated>2016-10-14T19:01:41Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Predefined variables are set by the game as text is sent to the clients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Variable Name&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@tar&lt;br /&gt;
|Your current enemy target. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@match&lt;br /&gt;
|The text matched in a trigger.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@line&lt;br /&gt;
|The complete line of text that executed the trigger.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@suffix&lt;br /&gt;
|The suffix is set to all of the text received in a line after the matching text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;|@prefix&lt;br /&gt;
|The prefix is set to all of the text received in a line before the matching text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally, Nexus will attempt to automatically fill the in these variables for you:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Variable&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| What it shows&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Game&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_hp&lt;br /&gt;
| Your current health&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxhp&lt;br /&gt;
| Your maximum health&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_mp&lt;br /&gt;
| Your current mana points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxmp&lt;br /&gt;
| Your current endurance points&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_nl&lt;br /&gt;
| Your experience percentage to next level&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_bal&lt;br /&gt;
| If you currently have balance&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_eq&lt;br /&gt;
| If you currently have equilibrium&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_vote&lt;br /&gt;
| If you have not voted for your game recently&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_string&lt;br /&gt;
| Your current prompt string&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_wp&lt;br /&gt;
| Your current willpower points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxwp&lt;br /&gt;
| Your current endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_ep&lt;br /&gt;
| Your current endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| @my_maxep&lt;br /&gt;
| Your maximum endurance points&lt;br /&gt;
| Achaea, Aetolia&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
This is the output from the game, showing some predefined variables. It uses the trigger below.&lt;br /&gt;
&lt;br /&gt;
[[File:PredefinedOutput.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the sample trigger used display the predefined variables above.&lt;br /&gt;
&lt;br /&gt;
[[File:PredefinedTrigger.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=992</id>
		<title>GMCP</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=992"/>
		<updated>2016-03-13T20:01:01Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aetolia-dwarf.jpg|right|frame|caption|Dwarf Terradrim from Aetolia.]] General MUD Telnet Protocol (GMCP) is a protocol used to send data from the game server to the player client. This data transfer happens behind the scenes and is not seen by the players. This allows the game server to send messages to the client to update basic character, room, and game information. Character health is an example of information that is continually passed to the client from the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These messages can also be accessed by the player for use in [[reflexes]]. We are working simplifying the process of capturing GMCP data for use in the client in a future version of the client.&lt;br /&gt;
&lt;br /&gt;
There is a configuration option in the Advanced Settings tab that will allow you to see GMCP messages as they happen.&lt;br /&gt;
&lt;br /&gt;
Module and message names are not case sensitive. JSON key names are case sensitive.&lt;br /&gt;
&lt;br /&gt;
=== Supported modules ===&lt;br /&gt;
&lt;br /&gt;
This documentation covers the following GMCP messages for the Iron Realms Games.&lt;br /&gt;
&lt;br /&gt;
* Core: core functionality&lt;br /&gt;
* Char: information about a character&lt;br /&gt;
* Char.Afflictions: information the characters afflictions&lt;br /&gt;
* Char.Defences- information the characters defences&lt;br /&gt;
* Char.Items: information about items in inventory and room, with live updates&lt;br /&gt;
* Char.Skills: information about skills known by the player&lt;br /&gt;
* Comm.Channel: identification of communication channels and player lists&lt;br /&gt;
* Room: various information about the current room&lt;br /&gt;
* Redirect: redirect outpot to another window&lt;br /&gt;
* IRE.Composer: IRE-specific, used to edit bigger texts client-side&lt;br /&gt;
* IRE.FileStore: used internally by the Nexus client&lt;br /&gt;
* IRE.Misc: used internally by the fMUD and Nexus clients&lt;br /&gt;
* IRE.Rift: IRE-specific, transmits information about the Rift contents&lt;br /&gt;
* IRE.Sound: Yes. Sound can be sent.&lt;br /&gt;
* IRE.Target: information about the current player target.&lt;br /&gt;
* IRE.Tasks: information about tasks, quests, and achievements.&lt;br /&gt;
* IRE.Time: information about the current time and date conditions in the game.&lt;br /&gt;
* IRE.Wiz: used internally by the Nexus client&lt;br /&gt;
&lt;br /&gt;
=== Supported messages by modules ===&lt;br /&gt;
&lt;br /&gt;
==== Core ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Core.Hello&lt;br /&gt;
*** Needs to be the first message that the client sends, used to identify the client&lt;br /&gt;
*** Message body is an object with keys &amp;quot;client&amp;quot; and &amp;quot;version&amp;quot;, containing the client&#039;s name and version&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Hello {&amp;quot;Client&amp;quot;:&amp;quot;Mudlet&amp;quot;,&amp;quot;Version&amp;quot;:&amp;quot;3.0.0&amp;quot;}&lt;br /&gt;
** Core.Supports.Set&lt;br /&gt;
*** Notifies the server about packages supported by the client&lt;br /&gt;
*** If another Core.Supports.*** package has been received earlier, the list is deleted and replaced with the new one&lt;br /&gt;
*** Message body is an array of strings, each consisting of the module name and version, separated by space&lt;br /&gt;
*** Module version is a positive non-zero integer&lt;br /&gt;
*** Most client implementations will only need to send Set once and won&#039;t need Add/Remove; exceptions are module implementations provided by plug-ins&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Set [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Add&lt;br /&gt;
*** Similar to Set, but appends the supported module list to the one sent earlier&lt;br /&gt;
*** If no list was sent yet, the behaviour is identical to Set&lt;br /&gt;
*** If the list includes module names that were already included earlier, the new version number takes precedence over the previously sent one, even if the newly sent number is lower&lt;br /&gt;
*** Message body format is identical to that of Set&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Add [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Remove&lt;br /&gt;
*** Removes specified modules from the list of supported modules&lt;br /&gt;
*** Message body format is similar to Set, except that module version numbers are optional and ignored if given&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Remove [ &amp;quot;Char&amp;quot;, &amp;quot;Char.Skills&amp;quot;, &amp;quot;Char.Items&amp;quot; ]&lt;br /&gt;
** Core.KeepAlive&lt;br /&gt;
*** Causes the server to reset the timeout for the logged character, no message body&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** causes the server to send a Core.Ping back&lt;br /&gt;
*** message body is a number which indicates average ping time from previous requests, if available&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Ping 120&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** Sent in reply to Core.Ping. No body.&lt;br /&gt;
** Core.Goodbye&lt;br /&gt;
*** Sent by server immediately before terminating a connection&lt;br /&gt;
*** Message body is a string to be shown to the user - it can explain the reason for the disconnect&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Goodbye &amp;quot;Goodbye, adventurer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Char ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Login&lt;br /&gt;
*** Used to log in a character, only interpreted if no character is logged in for that connection&lt;br /&gt;
*** Message body is an object with keys &amp;quot;name&amp;quot; and &amp;quot;password&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Login { &amp;quot;name&amp;quot;: &amp;quot;somename&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;somepassword&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Name&lt;br /&gt;
*** Sends the character name and full name which includes the title. This is only sent on login.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Name { &amp;quot;name&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Neophyte Olad&amp;quot; }&lt;br /&gt;
** Char.Vitals&lt;br /&gt;
*** Basic character attributes such as health, mana, etc.&lt;br /&gt;
*** Message body is an object containing several variables&lt;br /&gt;
*** Additionally, each variable is included in a string, in the format name:cur/max&lt;br /&gt;
*** Interpretation of the variables is game specific&lt;br /&gt;
*** It is generally safe to assume that the known values are numbers (even though encoded as strings), but other datatypes can be present&lt;br /&gt;
*** The &amp;quot;charstats&amp;quot; attribute, if present, holds a list of strings that the client may choose to display to the player in a client-specific way, these hold information about the character state that the game wishes to show to the player&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Vitals { &amp;quot;hp&amp;quot;: &amp;quot;4500&amp;quot;, &amp;quot;maxhp&amp;quot;: &amp;quot;4800&amp;quot;, &amp;quot;mp&amp;quot;: &amp;quot;1200&amp;quot;, &amp;quot;maxmp&amp;quot;: &amp;quot;2500&amp;quot;, &amp;quot;ep&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;maxep&amp;quot;: &amp;quot;16000&amp;quot;, &amp;quot;wp&amp;quot;: &amp;quot;14000&amp;quot;, &amp;quot;maxwp&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;nl&amp;quot;: &amp;quot;10&amp;quot;, &amp;quot;string&amp;quot;: &amp;quot;H:4500/4800 M:1200/2500 E:15000/16000 W:14000/15000 NL:10/100&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Additional Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** All classes: Bleed, Rage&lt;br /&gt;
**** Apostates: Essence&lt;br /&gt;
**** Bard: Stance, Voice Balance&lt;br /&gt;
**** Blademaster: Stance&lt;br /&gt;
**** Druid: Current Morph, Sunlight Energy&lt;br /&gt;
**** Infernal: Essence, Weaponmastery Spec&lt;br /&gt;
**** Magi: Channels&lt;br /&gt;
**** Monk: Kai Energy, Tekura stance&lt;br /&gt;
**** Occultist: Karma, Entity Balance&lt;br /&gt;
**** Paladin: Devotion, Weaponmastery Spec&lt;br /&gt;
**** Priest: Devotion&lt;br /&gt;
**** Runewarden: Weaponmastery Spec&lt;br /&gt;
**** Sentinel: Current Morph&lt;br /&gt;
**** Serpent: Secreted Venom&lt;br /&gt;
**** Shaman: Number of spirits bound&lt;br /&gt;
**** Sylvan: Elemental Channels, Sunlight Energy&lt;br /&gt;
*** &#039;&#039;&#039;Additional Aetolia Keys&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Additional Imperian Keys&#039;&#039;&#039;&lt;br /&gt;
** Char.StatusVars&lt;br /&gt;
*** Sent by server after a successful login or after the module is enabled&lt;br /&gt;
*** Contains a list of character variables (level, race, etc)&lt;br /&gt;
*** Message body is an object&lt;br /&gt;
*** Each object element is a name-caption pair, name is the internal name and caption the user-visible one&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.StatusVars { &amp;quot;level&amp;quot;: &amp;quot;Level&amp;quot;, &amp;quot;race&amp;quot;: &amp;quot;Race&amp;quot;, &amp;quot;guild&amp;quot;: &amp;quot;Guild&amp;quot; }&lt;br /&gt;
** Char.Status&lt;br /&gt;
*** Values of character values defined by StatusVars.&lt;br /&gt;
*** A full list is sent by server right after StatusVars, and changes are sent in subsequent messages as they occur.&lt;br /&gt;
*** With the exception of the initial Status message, messages only contain changed values; if a variable is not included, it has not changed since the previous Status message.&lt;br /&gt;
*** Message body is an object.&lt;br /&gt;
*** Each object element is a name-value pair, name is the internal name defined by the StatusVars message and value is the variable value.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Status { &amp;quot;level&amp;quot;: &amp;quot;58&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;Antioch&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039; Achaea Keys&#039;&#039;&#039;&lt;br /&gt;
**** name &lt;br /&gt;
**** fullname&lt;br /&gt;
**** age&lt;br /&gt;
**** race&lt;br /&gt;
**** specialisation&lt;br /&gt;
**** level&lt;br /&gt;
**** xp&lt;br /&gt;
**** xprank&lt;br /&gt;
**** class&lt;br /&gt;
**** city&lt;br /&gt;
**** house&lt;br /&gt;
**** order&lt;br /&gt;
**** boundcredits&lt;br /&gt;
**** unboundcredits&lt;br /&gt;
**** lessons&lt;br /&gt;
**** explorerrank&lt;br /&gt;
**** mayancrowns&lt;br /&gt;
**** boundmayancrowns&lt;br /&gt;
**** gold&lt;br /&gt;
**** bank&lt;br /&gt;
**** unread_msgs&lt;br /&gt;
**** unread_news&lt;br /&gt;
**** target&lt;br /&gt;
**** gender&lt;br /&gt;
&lt;br /&gt;
==== Char.Afflictions ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Afflictions.List&lt;br /&gt;
*** Sends an array of current character afflictions.&lt;br /&gt;
**** name: The name of the affliction&lt;br /&gt;
**** cure: The basic cure of the affliction. This is used for links to cure even though other options may exist to cure the affliction.&lt;br /&gt;
**** desc: A description of what this affliction does.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.List [ { &amp;quot;name&amp;quot;: &amp;quot;weariness&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Decreases cutting and blunt damage that you inflict by 30%.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;slow herbs&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;apply epidermal&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Increases the time needed to regain herb balance by 1.25 seconds.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nausea&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat nightshade&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Causes periodic vomiting, which does damage and increases hunger.&amp;quot; } ]&lt;br /&gt;
** Char.Afflictions.Add&lt;br /&gt;
*** Add an affliction to the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Add { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }&lt;br /&gt;
** Char.Afflictions.Remove&lt;br /&gt;
*** Removes an affliction from the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Remove [ &amp;quot;asthma&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
==== Char.Defences====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Defences.List&lt;br /&gt;
*** Send an array of all the defences a character currently has.&lt;br /&gt;
**** name: The name of the defence.&lt;br /&gt;
**** desc: The description of the defence.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.List [ { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;blind&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;blind&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nightsight&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;nightsight&amp;quot; } ]&lt;br /&gt;
** Char.Defences.Add&lt;br /&gt;
*** Sent when a defence is added to a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Add { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }&lt;br /&gt;
** Char.Defences.Remove&lt;br /&gt;
*** Sent when a defence is removed from a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Remove [ &amp;quot;blind&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
==== Char.Items ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Items.Contents&lt;br /&gt;
*** Request for the server to send the list of items located inside another item.&lt;br /&gt;
*** Message body is a number identifying the item.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Item.Contents 12345&lt;br /&gt;
** Char.Items.Inv&lt;br /&gt;
*** Request for the server to send the list of items in player&#039;s inventory.&lt;br /&gt;
*** Message body is empty.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Inv &amp;quot;&amp;quot;&lt;br /&gt;
** Char.Items.Room&lt;br /&gt;
*** Sent by the client to refresh the items in a room.&lt;br /&gt;
*** Message body is empty&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Room &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Items.List&lt;br /&gt;
*** List of items at a specified location (room, inv, held container)&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;items&amp;quot;&lt;br /&gt;
*** Location value is a string, &amp;quot;inv&amp;quot;, &amp;quot;room&amp;quot;, or &amp;quot;repNUMBER&amp;quot; - the last one is container identification&lt;br /&gt;
*** Items value is an array, whose each item is an object with keys &amp;quot;id&amp;quot;, &amp;quot;name&amp;quot; and optionally &amp;quot;attrib&amp;quot;&lt;br /&gt;
*** ID is a number identifying the item, name is a string containing a short player-visible item description&lt;br /&gt;
*** Icon is the image the item is associated with in the client.&lt;br /&gt;
*** Attrib is a string consisting of characters describing item properties:&lt;br /&gt;
**** &amp;quot;w&amp;quot; = worn, &lt;br /&gt;
**** &amp;quot;W&amp;quot; = wearable but not worn &lt;br /&gt;
**** &amp;quot;l&amp;quot; = wielded &lt;br /&gt;
**** &amp;quot;g&amp;quot; = groupable&lt;br /&gt;
**** &amp;quot;c&amp;quot; = container&lt;br /&gt;
**** &amp;quot;t&amp;quot; = takeable&lt;br /&gt;
**** &amp;quot;m&amp;quot; = monster&lt;br /&gt;
**** &amp;quot;d&amp;quot; = dead monster&lt;br /&gt;
**** &amp;quot;x&amp;quot; = should not be targeted (guards, ...)&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.List { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;items&amp;quot;: [ { &amp;quot;id&amp;quot;: &amp;quot;12807&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a personal journal&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;scroll&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;l&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } ] }&lt;br /&gt;
** Char.Items.Add&lt;br /&gt;
*** Informs the client about an item being added to the specified location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an object with the same structure as one item from the items array of List&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;c&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
** Char.Items.Remove&lt;br /&gt;
*** Informs the client about an item being removed from the location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an integer value identifying the item&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
** Char.Items.Update&lt;br /&gt;
*** Informs the client about an item&#039;s attributes being changed - only sent for inventory items&lt;br /&gt;
*** Message body syntax the same as with Add&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Update { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;60572&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an ornate steel rapier&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
==== Char.Skills ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Skills.Get&lt;br /&gt;
*** Sent by client to request skill information&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot; and &amp;quot;name&amp;quot;&lt;br /&gt;
*** If both group and name is provided, the server will send Char.Skills.Info for the specified skill&lt;br /&gt;
*** If group is provided but name is not, the server will send Char.Skills.List for that group&lt;br /&gt;
*** Otherwise the server will send Char.Skills.Groups&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;Perception&amp;quot;}&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;perception&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Deathsight&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Skills.Groups&lt;br /&gt;
*** Groups of skills available to the character&lt;br /&gt;
*** Sent by server on request or at any time (usually if the list changes)&lt;br /&gt;
*** For IRE games, groups are skills like Survival or Elemancy&lt;br /&gt;
*** Message body is an array including the name and current rank of each skill the character has.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Groups [ { &amp;quot;name&amp;quot;: &amp;quot;Perception&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Transcendent (100%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Survival&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Weaponry&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Tattoos&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evasion&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Engineering&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Taming&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Concoctions&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Toxins&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Smithing&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Malignosis&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (1%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Necromancy&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evileye&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (40%)&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.List&lt;br /&gt;
*** List of skills in a group available to the character&lt;br /&gt;
*** Sent by server on request only&lt;br /&gt;
*** For IRE games, this is the list visible on AB &amp;lt;skillname&amp;gt;&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot;, &amp;quot;list&amp;quot;, and &amp;quot;desc&amp;quot;.&lt;br /&gt;
*** The list value is an array of strings, each being the name of one skill&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.List { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;list&amp;quot;: [ &amp;quot;Looking&amp;quot;, &amp;quot;Glancing&amp;quot;, &amp;quot;Secrets&amp;quot;, &amp;quot;Decaylist&amp;quot;, &amp;quot;Squinting&amp;quot;, &amp;quot;Flyers&amp;quot;, &amp;quot;Observe&amp;quot;, &amp;quot;Farsight&amp;quot;, &amp;quot;Containerlist&amp;quot;, &amp;quot;Vigilance&amp;quot;, &amp;quot;Treewatch&amp;quot;, &amp;quot;Deathsight&amp;quot;, &amp;quot;Pipelist&amp;quot;, &amp;quot;Elixlist&amp;quot;, &amp;quot;Search&amp;quot;, &amp;quot;Letterlist&amp;quot;, &amp;quot;Booklist&amp;quot;, &amp;quot;Skywatch&amp;quot;, &amp;quot;PowerNodes&amp;quot;, &amp;quot;Keylist&amp;quot;, &amp;quot;Alertness&amp;quot;, &amp;quot;Rites&amp;quot;, &amp;quot;Traps&amp;quot;, &amp;quot;Magicklist&amp;quot;, &amp;quot;Nightsight&amp;quot;, &amp;quot;Hypersight&amp;quot;, &amp;quot;Thirdeye&amp;quot;, &amp;quot;Tattoos&amp;quot;, &amp;quot;Discernment&amp;quot;, &amp;quot;Wormholes&amp;quot;, &amp;quot;Rivensense&amp;quot;, &amp;quot;Contemplation&amp;quot;, &amp;quot;Scan&amp;quot;, &amp;quot;Telesense&amp;quot;, &amp;quot;Appraise&amp;quot;, &amp;quot;Trueassess&amp;quot;, &amp;quot;Artifactlist&amp;quot;, &amp;quot;Warning&amp;quot;, &amp;quot;Viewshrine&amp;quot;, &amp;quot;Landsense&amp;quot; ], &amp;quot;descs&amp;quot;: [ &amp;quot;Gain knowledge of your immediate surroundings.&amp;quot;, &amp;quot;See summarized information about your surroundings.&amp;quot;, &amp;quot;Discover hidden exits.&amp;quot;, &amp;quot;How much more time do those items have?&amp;quot;, &amp;quot;See extended distances in your line of sight.&amp;quot;, &amp;quot;Take notice of those in the skies.&amp;quot;, &amp;quot;Gain information about your extended surroundings.&amp;quot;, &amp;quot;Attempt to locate another player from afar.&amp;quot;, &amp;quot;What do you have in your containers?&amp;quot;, &amp;quot;Increase your resistance to hypnosis.&amp;quot;, &amp;quot;Watch the forest canopies for movement.&amp;quot;, &amp;quot;Attune yourself to the Underworld.&amp;quot;, &amp;quot;Scan your pipes with utmost speed.&amp;quot;, &amp;quot;Quickly discover what elixirs and salves you are holding.&amp;quot;, &amp;quot;Search your location for hidden beings.&amp;quot;, &amp;quot;Quick glance of all your letters.&amp;quot;, &amp;quot;Scan the titles of books you own.&amp;quot;, &amp;quot;Watch the skies for movement.&amp;quot;, &amp;quot;Detect the nodes of power in your area.&amp;quot;, &amp;quot;See a list of your keys and which doors they open.&amp;quot;, &amp;quot;Heightened awareness of your surroundings.&amp;quot;, &amp;quot;View the holy rites operating in your location.&amp;quot;, &amp;quot;The ability to search for traps in your location.&amp;quot;, &amp;quot;Check the status of your magickal items.&amp;quot;, &amp;quot;Use infravision to see in the dark.&amp;quot;, &amp;quot;See the actions of cloaked players.&amp;quot;, &amp;quot;Give yourself the power of the third eye.&amp;quot;, &amp;quot;Discover what tattoos are on another player.&amp;quot;, &amp;quot;Discover what defences are protecting an individual.&amp;quot;, &amp;quot;The ability to sense wormholes in your location.&amp;quot;, &amp;quot;Sense the bodies of the recently slain.&amp;quot;, &amp;quot;Perceive the state of another&#039;s mental strength.&amp;quot;, &amp;quot;Seekout the locations of your allies and enemies.&amp;quot;, &amp;quot;Heighten your awareness to telepathic attempts.&amp;quot;, &amp;quot;Quickly take note of someone&#039;s carried possessions.&amp;quot;, &amp;quot;Gain more detailed information concerning your foe.&amp;quot;, &amp;quot;See what artifact powers surround an individual.&amp;quot;, &amp;quot;Watch for the prying eyes of the enemy.&amp;quot;, &amp;quot;Gain a detailed understanding of a shrine.&amp;quot;, &amp;quot;The ability to recognize mortals entering the realm.&amp;quot; ] }&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.Info&lt;br /&gt;
*** Information about a single skill, only sent upon request&lt;br /&gt;
*** Message body is an object, keys are &amp;quot;group&amp;quot;, &amp;quot;skill&amp;quot;, and &amp;quot;info&amp;quot;, values are strings&lt;br /&gt;
*** Group and skill identify the request, info is a description (usually multi-line) of the skill&#039;s functionality and usage&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Info { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;skill&amp;quot;: &amp;quot;deathsight&amp;quot;, &amp;quot;info&amp;quot;: &amp;quot;Syntax: DEATHSIGHT\n        RELAX DEATHSIGHT\n\nUsing this ability, your mind is now capable of attuning itself to the realm of the dead. While doing so, you will be alerted whenever anyone dies.&amp;quot; }&lt;br /&gt;
==== Comm.Channel ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** Request for the server to send Comm.Channel.Players&lt;br /&gt;
*** No message body.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players &amp;quot;&amp;quot;&lt;br /&gt;
** Comm.Channel.Enable&lt;br /&gt;
*** Used to tell the game to turn on a character channel without typing in a command line command.&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;newbie&amp;quot;&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;clt Consortium&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** List of players and organizations (city, guild, ...) that they share with this player&lt;br /&gt;
*** Message body is an array with each element describing one player&lt;br /&gt;
*** Each element is an object with keys &amp;quot;name&amp;quot; and &amp;quot;channels&amp;quot;, name is a string, channels is an array&lt;br /&gt;
*** The channels array may be omitted if empty; if given, it is a list of organization names&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [{&amp;quot;name&amp;quot;: &amp;quot;Player1&amp;quot;, &amp;quot;channels: [&amp;quot;Some city&amp;quot;, &amp;quot;Some guild&amp;quot;]}, {&amp;quot;name&amp;quot;: &amp;quot;Player2&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [ { &amp;quot;name&amp;quot;: &amp;quot;Ahkan&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot; ] }, { &amp;quot;name&amp;quot;: &amp;quot;Sharatar&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot;, &amp;quot;The Revenants&amp;quot; ] } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.List&lt;br /&gt;
*** List of communication channels available to the player, sent on login/negotiation and if changed&lt;br /&gt;
*** Message body is an array of objects, each object representing one channel&lt;br /&gt;
*** Each object has keys &amp;quot;name&amp;quot;, &amp;quot;caption&amp;quot; and &amp;quot;command&amp;quot; - name is internal name, caption is player-visible name, command is command used to communicate over this channel&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [{&amp;quot;name&amp;quot;:&amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some city&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;ct&amp;quot;}, {&amp;quot;name&amp;quot;:&amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some guild&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;gt&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [ { &amp;quot;name&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Newbie&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;newbie&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;market&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Market&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;market&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Stavenn&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;ct&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Revenants&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;gt&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Start&lt;br /&gt;
*** Informs the client that text that follows is something said over a communication channel&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** For tells from/to another player, the channel name is &amp;quot;tell Name&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Start &amp;quot;ct&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039; :Comm.Channel.Start &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
** Comm.Channel.End&lt;br /&gt;
*** Ends a channel text started by Comm.Channel.Start&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.End &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Text&lt;br /&gt;
*** The text of the communication that you heard, who spoke, and which channel it was on &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text   {   &amp;quot;channel&amp;quot;:   &amp;quot;says&amp;quot;,   &amp;quot;talker&amp;quot;:   &amp;quot;Tecton&amp;quot;,   &amp;quot;text&amp;quot;: &amp;quot;(Tecton the Terraformer says, \&amp;quot;Are we releasing dragon lairs or the phase artefact first?\&amp;quot;&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;tell Jeremy&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;33mYou tell Jeremy, \&amp;quot;Hi.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;32m(Newbie): You say, \&amp;quot;Hello.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
==== Room ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Room.Info&lt;br /&gt;
*** Contains information about the room that the player is in. Some of these may be IRE-specific&lt;br /&gt;
*** Message body is an object with the following keys&lt;br /&gt;
**** &amp;quot;num&amp;quot; - number identifying the room&lt;br /&gt;
**** &amp;quot;name&amp;quot; - string containing the brief description&lt;br /&gt;
**** &amp;quot;area&amp;quot; - string containing area name&lt;br /&gt;
**** &amp;quot;environment&amp;quot; - string containing environment type (&amp;quot;Hills&amp;quot;, &amp;quot;Ocean&amp;quot;, ...)&lt;br /&gt;
**** &amp;quot;coords&amp;quot; - room coordinates (string of numbers separated by commas - area,X,Y,X,building, building is optional&lt;br /&gt;
**** &amp;quot;map&amp;quot; - map information - URL pointing to a map image, followed by X and Y room (not pixel) coordinates on the map&lt;br /&gt;
**** &amp;quot;details&amp;quot; - array holding further information about a room - shop,bank,...&lt;br /&gt;
**** &amp;quot;exits&amp;quot; - object containing exits, each key is a direction and each value is the number identifying the target room&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Info {&amp;quot;num&amp;quot;: 12345, &amp;quot;name&amp;quot;: &amp;quot;On a hill&amp;quot;, &amp;quot;area&amp;quot;: &amp;quot;Barren hills&amp;quot;, &amp;quot;environment&amp;quot;: &amp;quot;Hills&amp;quot;, &amp;quot;coords&amp;quot;: &amp;quot;45,5,4,3&amp;quot;, &amp;quot;map&amp;quot;: &amp;quot;www.imperian.com/itex/maps/clientmap.php?map=45&amp;amp;level=3 5 4&amp;quot;, &amp;quot;exits&amp;quot;: { &amp;quot;n&amp;quot;: 12344, &amp;quot;se&amp;quot;: 12336 }, &amp;quot;details&amp;quot;: [ &amp;quot;shop&amp;quot;, &amp;quot;bank&amp;quot; ] }&lt;br /&gt;
** Room.WrongDir&lt;br /&gt;
*** Sent if the player attempts to move in a non-existant direction using the standard movement commands&lt;br /&gt;
*** Upon receiving this message, the client can safely assume that the specified direction does not lead anywhere at this time&lt;br /&gt;
*** Message body is a string with the name if the non-existant exit&lt;br /&gt;
*** Example: Room.WrongDir &amp;quot;ne&amp;quot;&lt;br /&gt;
** Room.Players&lt;br /&gt;
*** Object containing player details, each key is the short name of the player and each value is the full name including titles for the player &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Players [{ &amp;quot;name&amp;quot;: &amp;quot;Tecton&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Tecton the Terraformer&amp;quot; }, {&amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Cardan, the Curious&amp;quot; }]&lt;br /&gt;
** Room.AddPlayer&lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being added to the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.AddPlayer { &amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;(Cardan, the Curious)&amp;quot; }&lt;br /&gt;
** Room.RemovePlayer &lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being removed from the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.RemovePlayer &amp;quot;Cardan&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Redirect ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Redirect.Window&lt;br /&gt;
*** Specifies a window to redirect further input to&lt;br /&gt;
*** Message body is a string specifying the window to redirect to&lt;br /&gt;
*** The main window is referred to as &amp;quot;main&amp;quot;, and is the default if the message body is omitted or empty&lt;br /&gt;
*** Example: Redirect.Window &amp;quot;map&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Composer ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Composer.Edit&lt;br /&gt;
*** Sent by the server when the player enters an in-game editor. Body is an object, with keys &amp;quot;title&amp;quot; and &amp;quot;text&amp;quot;. Text contains the current buffer, title is a title that can be shown to the user.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.Edit { &amp;quot;title&amp;quot;: &amp;quot;Composer&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Composer.SetBuffer&lt;br /&gt;
*** Sent by the client upon successfully editing a text which was sent to the client in an IRE.Composer.Edit message earlier&lt;br /&gt;
*** Sending this message only changes the edit buffer, but does not end the editing session&lt;br /&gt;
*** On IRE games, the client may send the command ***save to save a text, or command ***quit to abort editing (IRE.Composer.SetBuffer is not sent in this case) - this behaviour is IRE-specific and is one of the reasons why the Composer module is in the IRE namespace&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.SetBuffer  &amp;quot;This is a bunch of text.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Misc ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Misc.Voted&lt;br /&gt;
*** Informs the game a vote button was clicked.&lt;br /&gt;
*** Example: IRE.Misc.Voted &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Misc.RemindVote&lt;br /&gt;
*** Message sent to remind the player to vote.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.RemindVote &amp;quot;http://www.imperian.com/vote&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.Achievement&lt;br /&gt;
*** Used to send basic achievement data to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Achievement [{&amp;quot;name&amp;quot;: &amp;quot;HighestLevelAchieved&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;89&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.URL&lt;br /&gt;
*** Sends a url to the client to open in a window when clicked.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.URL[{&amp;quot;url&amp;quot;: &amp;quot;http://www.imperian.com/tos&amp;quot;, &amp;quot;window&amp;quot;: &amp;quot;ire_game_tos&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.MISC.Tip&lt;br /&gt;
*** Sends a line of text to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Tip &amp;quot;This is a tip!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Rift ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Rift.List&lt;br /&gt;
*** contents of a Rift storage&lt;br /&gt;
*** sent upon receiving the IRE.Rift.Request message&lt;br /&gt;
*** message body is an array, with each element being an object containing three keys - &amp;quot;name&amp;quot; is item name, &amp;quot;amount&amp;quot; is a number holding the item&#039;s amount, and &amp;quot;desc&amp;quot; is user-visible description&lt;br /&gt;
** IRE.Rift.Change&lt;br /&gt;
*** sent whenever the item amount in a Rift changes&lt;br /&gt;
*** message body is an object with the same structure as one element of an array sent with the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Rift.Request&lt;br /&gt;
*** asks the server to send the Rift contents using the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
==== IRE.Sound ====&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Sound.Play&lt;br /&gt;
** IRE.Sound.Stop&lt;br /&gt;
** IRE.Sound.Stopall&lt;br /&gt;
** IRE.Sound.Preload&lt;br /&gt;
&lt;br /&gt;
==== IRE.Target ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Target.Set&lt;br /&gt;
*** Sends the currently set target to the server to be used by the internal alias system. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
* Sent by server&lt;br /&gt;
&lt;br /&gt;
** IRE.Target.Set &lt;br /&gt;
*** Sends the target the client is trying to set. This is called from cycling targets with tab targeting.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
** IRE.Target.Info &lt;br /&gt;
*** Sends an array with the current target information.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Info { &amp;quot;id&amp;quot;: &amp;quot;1101&amp;quot;, &amp;quot;short_desc&amp;quot;: &amp;quot;a brawny goblin smith&amp;quot;, &amp;quot;hpperc&amp;quot;: &amp;quot;100%&amp;quot; }&lt;br /&gt;
** IRE.Target.Request&lt;br /&gt;
&lt;br /&gt;
==== IRE.Tasks ====&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Tasks.Request &lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Tasks.List&lt;br /&gt;
*** This is used to send a list of quest, tasks, and achievements, depending on what the game supports.&lt;br /&gt;
*** Sends an array of items with the following keys:&lt;br /&gt;
**** id: A numeric identifier&lt;br /&gt;
**** name: The name of the quest, task, or achievement.&lt;br /&gt;
**** type: Is this a quest, task, or achievement.&lt;br /&gt;
**** cmd: The command to get more information for the quest. Good for MXP links.&lt;br /&gt;
**** desc: The description of the event.&lt;br /&gt;
**** status: 0 or 1 based on if it is completed or not.&lt;br /&gt;
**** group: What group should this be assigned to. This is mainly for client display purposes.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Tasks.List [ { &amp;quot;id&amp;quot;: &amp;quot;184&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;For the sake of the village&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;The herbs in Maeven&#039;s garden are painstakingly cared for so that her fellow villagers can stay healthy. She won&#039;t object to borrowing a bit of the magick power the bakuls have, if it can help with her work.\n\nThe bakul herbalist might have something Maeven wants.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;quests&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;quest For the sake of the village&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Current Quests&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;313&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Apostate&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Destroy a Shrine.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;achievements&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;achievement apostate&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Sects&amp;quot; } ]&lt;br /&gt;
** IRE.Tasks.Update &lt;br /&gt;
** IRE.Tasks.Completed&lt;br /&gt;
&lt;br /&gt;
==== IRE.Time ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Time.Request&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Time.List&lt;br /&gt;
*** A list of the current time condition in the game world. &lt;br /&gt;
*** Used in the client to display the the day/night indicator.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.List { &amp;quot;day&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;mon&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;month&amp;quot;: &amp;quot;Letum&amp;quot;, &amp;quot;year&amp;quot;: &amp;quot;98&amp;quot;, &amp;quot;hour&amp;quot;: &amp;quot;41&amp;quot;, &amp;quot;daynight&amp;quot;: &amp;quot;80&amp;quot; }&lt;br /&gt;
** IRE.Time.Update&lt;br /&gt;
*** Used to update time conditions.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.Update { &amp;quot;daynight&amp;quot;: &amp;quot;112&amp;quot; }&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=991</id>
		<title>Functions</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=991"/>
		<updated>2016-03-13T19:04:04Z</updated>

		<summary type="html">&lt;p&gt;Justin: /* Output Manipulation (Trigger Scripts) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Functions and scripts are the most powerful option that the client has to offer, but also one that is most difficult to use. Functions and scripts are programmed in the [[Javascript]] language. &lt;br /&gt;
&lt;br /&gt;
While we won&#039;t be covering how to code in JavaScript in this section, we&#039;ll cover some of the built-in functions and how to build your own custom code to further expand your reflexes.&lt;br /&gt;
&lt;br /&gt;
==== Scripts vs. Functions ====&lt;br /&gt;
* Scripts are specific code blocks that are fired as a result of a reflex being fired. This can be a trigger, alias, or keybind.&lt;br /&gt;
* Functions are re-usable code blocks that can be called from scripts or directly from the client&#039;s input. &lt;br /&gt;
&lt;br /&gt;
==== Calling functions ====&lt;br /&gt;
Functions can be called from scripts by using &#039;&#039;&#039;run_function(name, args, package)&#039;&#039;&#039;. As mentioned above, they can also be called directly from the client&#039;s input, so you&#039;ll want to make sure your functions are named in such a way that they do not overlap with in-game commands you may wish to use.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
Scripts and functions are generally self-contained, variables are local to the code block and are cleared when the script or function finishes. To interact with variables used in the [SimplifiedScripting] system, you&#039;ll want to use the built-in modules: get_variable, set_variable etc.&lt;br /&gt;
* Functions called in a trigger receive information about the match: &#039;&#039;&#039;args.text, args.match, args.prefix, args.suffix, args.backrefs[1] ...&#039;&#039;&#039;&lt;br /&gt;
* Scripts receive the backrefs (&#039;&#039;&#039;args[0]., args[1],. args[2], ...&#039;&#039;&#039;) and the current_package variable indicating the active package.&lt;br /&gt;
&lt;br /&gt;
==== Built-in modules ====&lt;br /&gt;
&lt;br /&gt;
===== Commands =====&lt;br /&gt;
* &#039;&#039;&#039;send_command(input, no_expansion)&#039;&#039;&#039; - Send a command to the game. Set no_expansion to 1 to send the exact string to the game without expansion.&lt;br /&gt;
* &#039;&#039;&#039;display_notice(text, fgcolor, bgcolor)&#039;&#039;&#039; - display a notice on the output screen.&lt;br /&gt;
&lt;br /&gt;
===== Variables =====&lt;br /&gt;
* &#039;&#039;&#039;get_variable(name)&#039;&#039;&#039; - Retrieve the value of a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;set_variable(name, val)&#039;&#039;&#039; - Set a variable for the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;delete_variable(name)&#039;&#039;&#039; - Delete a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;inc_variable(name, by)&#039;&#039;&#039; - Increment a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;dec_variable(name, by)&#039;&#039;&#039; - Decrement a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;mul_variable(name, by)&#039;&#039;&#039; - Multiply a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;div_variable(name, by)&#039;&#039;&#039; - Divide a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
&lt;br /&gt;
===== Reflex Manipulation =====&lt;br /&gt;
* &#039;&#039;&#039;reflex_find_by_name(type, name, case_sensitive, enabled_only, package))&#039;&#039;&#039; - Search for a specific reflex.&lt;br /&gt;
** &#039;&#039;type&#039;&#039; - Type of reflex: &#039;alias&#039;, &#039;trigger&#039;, &#039;keybind&#039;, ...&lt;br /&gt;
** &#039;&#039;name&#039;&#039; - Name to search for&lt;br /&gt;
** &#039;&#039;case_sensitive&#039;&#039; - Whether the name needs to match case exactly&lt;br /&gt;
** &#039;&#039;enabled_only&#039;&#039; - Set if disabled reflexes (including reflexes in disabled groups) should be ignored&lt;br /&gt;
** &#039;&#039;package&#039;&#039; - Name if a package to search in; omit if searching in the main list&lt;br /&gt;
* &#039;&#039;&#039;reflex_enable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
* &#039;&#039;&#039;reflex_disable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
&lt;br /&gt;
===== Output Manipulation (Trigger Scripts)=====&lt;br /&gt;
* &#039;&#039;&#039;current_text()&#039;&#039;&#039; - An unformatted version of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;gag_current_line()&#039;&#039;&#039; - Hide the line that fired the trigger from the output window.&lt;br /&gt;
* &#039;&#039;&#039;colorize_current_line(start, length, fgcolor, bgcolor)&#039;&#039;&#039; - Colorize/highlight a specified part of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;replace_current_line(start, length, newtext, fgcolor, bgcolor)&#039;&#039;&#039; - Replace a party of the current line with the specified text and color.&lt;br /&gt;
&lt;br /&gt;
===== UI Manipulation =====&lt;br /&gt;
* &#039;&#039;&#039;client.register_custom_tab(tab,container_id)&#039;&#039;&#039; - Make a custom UI tab. &#039;&#039;Please note, this is unsupported.&#039;&#039;&lt;br /&gt;
===== Misc. =====&lt;br /&gt;
* &#039;&#039;&#039;to_number(val)&#039;&#039;&#039; - Convert a string number to a value.&lt;br /&gt;
&lt;br /&gt;
==== Default functions ====&lt;br /&gt;
There are three functions which are called automatically by the client. These are &#039;&#039;&#039;onLoad&#039;&#039;&#039;, called when the settings are loaded, &#039;&#039;&#039;onGMCP&#039;&#039;&#039;, called upon receiving a GMCP message, and &#039;&#039;&#039;onBlock&#039;&#039;&#039;, called upon receiving each text block, allowing you to perform manipulations on it, or kickstart functionality that you want to execute on every prompt.&lt;br /&gt;
The function does not receive any data.&lt;br /&gt;
&lt;br /&gt;
The onGMCP function receives two arguments - &#039;&#039;&#039;args.gmcp_method&#039;&#039;&#039; is the GMCP message name, &#039;&#039;&#039;args.gmcp_args&#039;&#039;&#039; are the parameters (if any).&lt;br /&gt;
&lt;br /&gt;
The onBlock function can make use of the current_block variable, which holds the individual lines (current_block[0] is the first one, current_block[1] is the second one, and so on). The manipulation methods described with triggers are all applicable on these as well.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
For some examples of functions, read the [[examples]] page.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Variables&amp;diff=990</id>
		<title>Variables</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Variables&amp;diff=990"/>
		<updated>2016-02-24T22:53:14Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Variables are storage containers that can hold text, numbers, or other values. For example, you could use variables to store your currently attacked target, the item number of your pack, or anything else. To set a variable, use the following command on the command line or in an alias: @set name value. For example, @set target orc.&lt;br /&gt;
&lt;br /&gt;
Once a variable is set, you can refer to it in aliases and direct command using @name. For example, you could easily make a simple targetting system by creating an alias with Alias text set to t and the Command set to @set t. Then, you would create a separate alias for each attack that you wish to use - for example, an alias with text fl and command cast firelash at @t. With this setup, you could then simply enter t orc to target an orc, and fl to cast firelash at it. Much easier than having to type it all the time by hand!&lt;br /&gt;
&lt;br /&gt;
There may be times when you&#039;ll want to use the contents of a variable appended to some more text. In cases like this, you may use @{variablename}&amp;lt;rest of your text&amp;gt;. For example, if you have a variable called @him, which is either &amp;quot;him&amp;quot; or &amp;quot;her&amp;quot; and want to use that as part of &amp;quot;himself&amp;quot; or &amp;quot;herself&amp;quot;, you can use @{him}self.&lt;br /&gt;
&lt;br /&gt;
Variables can also be set in the settings interface, on the Variables panel.&lt;br /&gt;
&lt;br /&gt;
[[File:tab-variables.png]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
[[Basic Targeting Alias]]: These aliases use variables to target and attack mobiles.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Variables&amp;diff=989</id>
		<title>Variables</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Variables&amp;diff=989"/>
		<updated>2016-02-24T22:52:47Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Variables are storage containers that can hold text, numbers, or other values. For example, you could use variables to store your currently attacked target, the item number of your pack, or anything else. To set a variable, use the following command on the command line or in an alias: @set name value. For example, @set target orc.&lt;br /&gt;
&lt;br /&gt;
Once a variable is set, you can refer to it in aliases and direct command using @name. For example, you could easily make a simple targetting system by creating an alias with Alias text set to t and the Command set to @set t. Then, you would create a separate alias for each attack that you wish to use - for example, an alias with text fl and command cast firelash at @t. With this setup, you could then simply enter t orc to target an orc, and fl to cast firelash at it. Much easier than having to type it all the time by hand!&lt;br /&gt;
&lt;br /&gt;
There may be times when you&#039;ll want to use the contents of a variable appended to some more text. In cases like this, you may use @{variablename}&amp;lt;rest of your text&amp;gt;. For example, if you have a variable called @him, which is either &amp;quot;him&amp;quot; or &amp;quot;her&amp;quot; and want to use that as par of &amp;quot;himself&amp;quot; or &amp;quot;herself&amp;quot;, you can use @{him}self.&lt;br /&gt;
&lt;br /&gt;
Variables can also be set in the settings interface, on the Variables panel.&lt;br /&gt;
&lt;br /&gt;
[[File:tab-variables.png]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
[[Basic Targeting Alias]]: These aliases use variables to target and attack mobiles.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Variables&amp;diff=988</id>
		<title>Variables</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Variables&amp;diff=988"/>
		<updated>2016-02-24T22:51:43Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Variables are storage containers that can hold text, numbers, or other values. For example, you could use variables to store your currently attacked target, the item number of your pack, or anything else. To set a variable, use the following command on the command line or in an alias: @set name value. For example, @set target orc.&lt;br /&gt;
&lt;br /&gt;
Once a variable is set, you can refer to it in aliases and direct command using @name. For example, you could easily make a simple targetting system by creating an alias with Alias text set to t and the Command set to @set t. Then, you would create a separate alias for each attack that you wish to use - for example, an alias with text fl and command cast firelash at @t. With this setup, you could then simply enter t orc to target an orc, and fl to cast firelash at it. Much easier than having to type it all the time by hand!&lt;br /&gt;
&lt;br /&gt;
There may be times when you&#039;ll want to use the contents of a variable appended. In cases like this, you may use @{variablename}&amp;lt;rest of your text&amp;gt;. For example, if you have a variable called @him, which is either &amp;quot;him&amp;quot; or &amp;quot;her&amp;quot; and want to use that as par of &amp;quot;himself&amp;quot; or &amp;quot;herself&amp;quot;, you can use @{him}self.&lt;br /&gt;
&lt;br /&gt;
Variables can also be set in the settings interface, on the Variables panel.&lt;br /&gt;
&lt;br /&gt;
[[File:tab-variables.png]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
[[Basic Targeting Alias]]: These aliases use variables to target and attack mobiles.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Advanced_Scripting&amp;diff=987</id>
		<title>Advanced Scripting</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Advanced_Scripting&amp;diff=987"/>
		<updated>2016-02-23T20:44:50Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Grook.jpg|right|frame|caption|A grook Occultist from Achaea.]] The [[SimplifiedScripting|simplfied scripting]] system in the Nexus client should offer enough options for most players of the game. However, for those of you that may need a bit more power, or have some specific need that Nexus can&#039;t fill, you can use JavaScript to do nearly everything else.&lt;br /&gt;
&lt;br /&gt;
*[[Javascript]]: JavaScript is the scripting language for the Nexus client.&lt;br /&gt;
*[[Functions]]: Create custom JavaScript functions to use in with other [[reflexes]].&lt;br /&gt;
*[[GMCP]]: The game server communicates behind the scenes with the Nexus client using GMCP. You can access this information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hints and tips===&lt;br /&gt;
* Namespacing&lt;br /&gt;
** Each reflex and script is sandboxed. You will want to use the &#039;&#039;&#039;client.&#039;&#039;&#039; object as a shared namespace for custom functions, variables, etc.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=986</id>
		<title>Functions</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=986"/>
		<updated>2016-02-23T20:41:19Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Functions and scripts are the most powerful option that the client has to offer, but also one that is most difficult to use. Functions and scripts are programmed in the [[Javascript]] language. &lt;br /&gt;
&lt;br /&gt;
While we won&#039;t be covering how to code in JavaScript in this section, we&#039;ll cover some of the built-in functions and how to build your own custom code to further expand your reflexes.&lt;br /&gt;
&lt;br /&gt;
==== Scripts vs. Functions ====&lt;br /&gt;
* Scripts are specific code blocks that are fired as a result of a reflex being fired. This can be a trigger, alias, or keybind.&lt;br /&gt;
* Functions are re-usable code blocks that can be called from scripts or directly from the client&#039;s input. &lt;br /&gt;
&lt;br /&gt;
==== Calling functions ====&lt;br /&gt;
Functions can be called from scripts by using &#039;&#039;&#039;run_function(name, args, package)&#039;&#039;&#039;. As mentioned above, they can also be called directly from the client&#039;s input, so you&#039;ll want to make sure your functions are named in such a way that they do not overlap with in-game commands you may wish to use.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
Scripts and functions are generally self-contained, variables are local to the code block and are cleared when the script or function finishes. To interact with variables used in the [SimplifiedScripting] system, you&#039;ll want to use the built-in modules: get_variable, set_variable etc.&lt;br /&gt;
* Functions called in a trigger receive information about the match: &#039;&#039;&#039;args.text, args.match, args.prefix, args.suffix, args.backrefs[1] ...&#039;&#039;&#039;&lt;br /&gt;
* Scripts receive the backrefs (&#039;&#039;&#039;args[0]., args[1],. args[2], ...&#039;&#039;&#039;) and the current_package variable indicating the active package.&lt;br /&gt;
&lt;br /&gt;
==== Built-in modules ====&lt;br /&gt;
&lt;br /&gt;
===== Commands =====&lt;br /&gt;
* &#039;&#039;&#039;send_command(input, no_expansion)&#039;&#039;&#039; - Send a command to the game. Set no_expansion to 1 to send the exact string to the game without expansion.&lt;br /&gt;
* &#039;&#039;&#039;display_notice(text, fgcolor, bgcolor)&#039;&#039;&#039; - display a notice on the output screen.&lt;br /&gt;
&lt;br /&gt;
===== Variables =====&lt;br /&gt;
* &#039;&#039;&#039;get_variable(name)&#039;&#039;&#039; - Retrieve the value of a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;set_variable(name, val)&#039;&#039;&#039; - Set a variable for the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;delete_variable(name)&#039;&#039;&#039; - Delete a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;inc_variable(name, by)&#039;&#039;&#039; - Increment a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;dec_variable(name, by)&#039;&#039;&#039; - Decrement a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;mul_variable(name, by)&#039;&#039;&#039; - Multiply a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;div_variable(name, by)&#039;&#039;&#039; - Divide a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
&lt;br /&gt;
===== Reflex Manipulation =====&lt;br /&gt;
* &#039;&#039;&#039;reflex_find_by_name(type, name, case_sensitive, enabled_only, package))&#039;&#039;&#039; - Search for a specific reflex.&lt;br /&gt;
** &#039;&#039;type&#039;&#039; - Type of reflex: &#039;alias&#039;, &#039;trigger&#039;, &#039;keybind&#039;, ...&lt;br /&gt;
** &#039;&#039;name&#039;&#039; - Name to search for&lt;br /&gt;
** &#039;&#039;case_sensitive&#039;&#039; - Whether the name needs to match case exactly&lt;br /&gt;
** &#039;&#039;enabled_only&#039;&#039; - Set if disabled reflexes (including reflexes in disabled groups) should be ignored&lt;br /&gt;
** &#039;&#039;package&#039;&#039; - Name if a package to search in; omit if searching in the main list&lt;br /&gt;
* &#039;&#039;&#039;reflex_enable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
* &#039;&#039;&#039;reflex_disable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
&lt;br /&gt;
===== Output Manipulation (Trigger Scripts)=====&lt;br /&gt;
* &#039;&#039;&#039;current_text()&#039;&#039;&#039; - An unformatted version of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;gag_line()&#039;&#039;&#039; - Hide the line that fired the trigger from the output window.&lt;br /&gt;
* &#039;&#039;&#039;colorize_current_line(start, length, fgcolor, bgcolor)&#039;&#039;&#039; - Colorize/highlight a specified part of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;replace_current_line(start, length, newtext, fgcolor, bgcolor)&#039;&#039;&#039; - Replace a party of the current line with the specified text and color.&lt;br /&gt;
&lt;br /&gt;
===== UI Manipulation =====&lt;br /&gt;
* &#039;&#039;&#039;client.register_custom_tab(tab,container_id)&#039;&#039;&#039; - Make a custom UI tab. &#039;&#039;Please note, this is unsupported.&#039;&#039;&lt;br /&gt;
===== Misc. =====&lt;br /&gt;
* &#039;&#039;&#039;to_number(val)&#039;&#039;&#039; - Convert a string number to a value.&lt;br /&gt;
&lt;br /&gt;
==== Default functions ====&lt;br /&gt;
There are three functions which are called automatically by the client. These are &#039;&#039;&#039;onLoad&#039;&#039;&#039;, called when the settings are loaded, &#039;&#039;&#039;onGMCP&#039;&#039;&#039;, called upon receiving a GMCP message, and &#039;&#039;&#039;onBlock&#039;&#039;&#039;, called upon receiving each text block, allowing you to perform manipulations on it, or kickstart functionality that you want to execute on every prompt.&lt;br /&gt;
The function does not receive any data.&lt;br /&gt;
&lt;br /&gt;
The onGMCP function receives two arguments - &#039;&#039;&#039;args.gmcp_method&#039;&#039;&#039; is the GMCP message name, &#039;&#039;&#039;args.gmcp_args&#039;&#039;&#039; are the parameters (if any).&lt;br /&gt;
&lt;br /&gt;
The onBlock function can make use of the current_block variable, which holds the individual lines (current_block[0] is the first one, current_block[1] is the second one, and so on). The manipulation methods described with triggers are all applicable on these as well.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
For some examples of functions, read the [[examples]] page.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Advanced_Scripting&amp;diff=985</id>
		<title>Advanced Scripting</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Advanced_Scripting&amp;diff=985"/>
		<updated>2016-02-23T20:37:07Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Grook.jpg|right|frame|caption|A grook Occultist from Achaea.]] The [[SimplifiedScripting|simplfied scripting]] system in the Nexus client should offer enough options for most players of the game. However, for those of you that may need a bit more power, or have some specific need that Nexus can&#039;t fill, you can use javascript to do nearly everything else.&lt;br /&gt;
&lt;br /&gt;
*[[Javascript]]: Javascript is the scripting language for the Nexus client.&lt;br /&gt;
*[[Functions]]: Create custom javascript functions to use in with other [[reflexes]].&lt;br /&gt;
*[[GMCP]]: The game server communicates behind the scenes with the Nexus client using GMCP. You can access this information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Hints and tips:&#039;&#039;&#039;&lt;br /&gt;
** Namespacing&lt;br /&gt;
*** Each reflex and script is sandboxed. You will want to use the &#039;&#039;&#039;client.&#039;&#039;&#039; object as a shared namespace for custom functions, variables, etc.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Advanced_Scripting&amp;diff=984</id>
		<title>Advanced Scripting</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Advanced_Scripting&amp;diff=984"/>
		<updated>2016-02-23T20:36:38Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Grook.jpg|right|frame|caption|A grook Occultist from Achaea.]] The [[SimplifiedScripting|simplfied scripting]] system in the Nexus client should offer enough options for most players of the game. However, for those of you that may need a bit more power, or have some specific need that Nexus can&#039;t fill, you can use javascript to do nearly everything else.&lt;br /&gt;
&lt;br /&gt;
*[[Javascript]]: Javascript is the scripting language for the Nexus client.&lt;br /&gt;
*[[Functions]]: Create custom javascript functions to use in with other [[reflexes]].&lt;br /&gt;
*[[GMCP]]: The game server communicates behind the scenes with the Nexus client using GMCP. You can access this information.&lt;br /&gt;
&lt;br /&gt;
* Hints and tips:&lt;br /&gt;
** Namespacing&lt;br /&gt;
*** Each reflex and script is sandboxed. You will want to use the &#039;&#039;&#039;client.&#039;&#039;&#039; object as a shared namespace for custom functions, variables, etc.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Advanced_Scripting&amp;diff=983</id>
		<title>Advanced Scripting</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Advanced_Scripting&amp;diff=983"/>
		<updated>2016-02-23T20:36:26Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Grook.jpg|right|frame|caption|A grook Occultist from Achaea.]] The [[SimplifiedScripting|simplfied scripting]] system in the Nexus client should offer enough options for most players of the game. However, for those of you that may need a bit more power, or have some specific need that Nexus can&#039;t fill, you can use javascript to do nearly everything else.&lt;br /&gt;
&lt;br /&gt;
*[[Javascript]]: Javascript is the scripting language for the Nexus client.&lt;br /&gt;
*[[Functions]]: Create custom javascript functions to use in with other [[reflexes]].&lt;br /&gt;
*[[GMCP]]: The game server communicates behind the scenes with the Nexus client using GMCP. You can access this information.&lt;br /&gt;
&lt;br /&gt;
* Hints and tips:&lt;br /&gt;
** Namespacing&lt;br /&gt;
Each reflex and script is sandboxed. You will want to use the &#039;&#039;&#039;client.&#039;&#039;&#039; object as a shared namespace for custom functions, variables, etc.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Nexus_2.0&amp;diff=940</id>
		<title>Nexus 2.0</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Nexus_2.0&amp;diff=940"/>
		<updated>2016-02-22T20:28:58Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-8 columns&amp;quot;&amp;gt;&lt;br /&gt;
=== The Iron Realms Nexus Client ===&lt;br /&gt;
&lt;br /&gt;
Welcome to the official documentation wiki for the Iron Realms Nexus client. &lt;br /&gt;
&lt;br /&gt;
This documentation details how to configure the [[The_Game_Client|client basics]] including sound settings, window arrangement, and map settings.&lt;br /&gt;
&lt;br /&gt;
You can also learn how to create basic [[reflexes]]. Reflexes can help automate parts of the game with [[triggers]], [[aliases]], [[keybinds]], and [[variables]]. The Nexus client has a [[SimplifiedScripting|Simplified Scripting]] which allows for easy creation of complex systems. Nexus also supports [[javascript]] as part of our [[AdvancedScripting|advanced scripting]] options.&lt;br /&gt;
&lt;br /&gt;
Another option for advanced scripting is use of [[GMCP]]. GMCP sends basic data from the game to the client behind the scenes. Data such as inventory, health, room items, and more can be tracked with advanced scripting.&lt;br /&gt;
&lt;br /&gt;
==== Tutorial Videos ====&lt;br /&gt;
&amp;lt;embedvideo service=&amp;quot;youtube&amp;quot;&amp;gt;https://www.youtube.com/watch?v=dQTrmHtS0K8&amp;lt;/embedvideo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommended for new players&#039;&#039;&#039;. A just under 7 minute tutorial thoroughly covering all the features of the client accessible from the main page. Does not include much about the extensive Settings window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;embedvideo service=&amp;quot;youtube&amp;quot;&amp;gt;https://youtu.be/eol8F8b_9sk&amp;lt;/embedvideo&amp;gt;&lt;br /&gt;
&#039;&#039;&#039; Recommended for experienced players. &#039;&#039;&#039; A just over 2 minute tutorial for experienced MUD users running down the client features that may not be immediately obvious, such as how to turn off the gauges, using tab-targeting, adding extra communication tabs, and reconfiguring the layout of windows and tabs.&lt;br /&gt;
&lt;br /&gt;
==== Screenshots ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;small-block-grid-3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Client_main_page_-_1280x1024_75p.jpg|thumb|Main Client.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Settings.png|thumb|Settings Window.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Floating-Help.png|thumb|Floating Help Window.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Floating-room.png|thumb|Room Information.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Floating-map.png|thumb|Map Window]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[File:Floating-quests.png|thumb|Quest Information.]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 columns&amp;quot;&amp;gt;&lt;br /&gt;
==== Need Help? ====&lt;br /&gt;
&lt;br /&gt;
Our games can be confusing for new players at first. If you need help, you can ask right in the game on the newbie channel. Just type the command &#039;&#039;&#039;newbie&#039;&#039;&#039;, followed by your question. &lt;br /&gt;
&lt;br /&gt;
For example: &#039;&#039;&#039;newbie Can someone help me?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each of the games has people who are there specifically to help new players, so feel free to ask whatever you need to on the newbie channel. If those dedicated helpers aren&#039;t around, other players in the game will see any questions you enter here and will normally be more then happy to assist you.&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t work, you might try asking on the forums for that game (see below).&lt;br /&gt;
&lt;br /&gt;
And of course, you can always look for the answer in our extensive HELP systems. Just type HELP to see the directory and instructions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Game Clients====&lt;br /&gt;
* [http://play.achaea.com Play Achaea] &lt;br /&gt;
* [http://play.aetolia.com Play Aetolia] &lt;br /&gt;
* [http://play.imperian.com Play Imperian] &lt;br /&gt;
* [http://play.lusternia.com Play Lusternia] &lt;br /&gt;
* [http://play.midkemiaonline.com Play Midkemia Online] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Game Forums====&lt;br /&gt;
Need more help? Try asking on the forums.  &lt;br /&gt;
* [http://forums.achaea.com Achaea Forums] &lt;br /&gt;
* [http://forums.aetolia.com Aetolia Forums] &lt;br /&gt;
* [http://forums.imperian.com Imperian Forums] &lt;br /&gt;
* [http://forums.lusternia.com Lusternia Forums] &lt;br /&gt;
* [http://forums.midkemiaonline.com Midkemia Online Forums] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Game Websites====&lt;br /&gt;
You can also explore the individual game websites.  &lt;br /&gt;
* [http://www.achaea.com www.Achaea.com] &lt;br /&gt;
* [http://www.aetolia.com www.Aetolia.com] &lt;br /&gt;
* [http://www.imperian.com www.Imperian.com] &lt;br /&gt;
* [http://www.lusternia.com www.Lusternia.com] &lt;br /&gt;
* [http://www.midkemiaonline.com www.MidkemiaOnline.com] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=The_Game_Client&amp;diff=931</id>
		<title>The Game Client</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=The_Game_Client&amp;diff=931"/>
		<updated>2016-02-20T22:29:07Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the client. It is the interface through which you play the game world. Let&#039;s take a moment and explore each section of the client.&lt;br /&gt;
[[File:TheClient.png]]&lt;br /&gt;
&lt;br /&gt;
=== Main Output Window ===&lt;br /&gt;
This is the output window. New output will appear from the bottom and scroll up. &lt;br /&gt;
[[File:MainOutput.png]]&lt;br /&gt;
&lt;br /&gt;
==== Scrollback ====&lt;br /&gt;
You can see your scrollback history by using the page-up and page-down keys, by using your mouse wheel, or by clicking on the button in the upper right of the client.&lt;br /&gt;
&lt;br /&gt;
You can adjust the location where the split screen happens with your mouse.&lt;br /&gt;
&lt;br /&gt;
You can close the split screen by clicking on the HIDE button in the top right.&lt;br /&gt;
&lt;br /&gt;
[[File:MainScrollback.png]]&lt;br /&gt;
&lt;br /&gt;
=== Command Line ===&lt;br /&gt;
This is the command input line and is where you input commands to the game.&lt;br /&gt;
&lt;br /&gt;
[[File:MainCommandLine.png]]&lt;br /&gt;
&lt;br /&gt;
=== F-Key Buttons ===&lt;br /&gt;
These are the F-Key buttons, which come pre-filled for new characters. You can edit these keys in [[settings]] menu, which is accessed from the gears icon in the lower-right. &lt;br /&gt;
&lt;br /&gt;
You can activate the buttons by clicking on them with your mouse it pressing the corresponding F-Key on your keyboard.&lt;br /&gt;
&lt;br /&gt;
[[File:MainButtons.png]]&lt;br /&gt;
&lt;br /&gt;
=== Gauges ===&lt;br /&gt;
Above that you’ll see indicators for health, mana, and other stats, depending on which Iron Realms game you’re playing.&lt;br /&gt;
[[File:MainGauges.png]]&lt;br /&gt;
&lt;br /&gt;
=== Balance and Equilibrium Indicators ===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border:0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;50px&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainBalEq.png]] &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
To the left of the gauges are the balance and equilibrium indicators.&lt;br /&gt;
* The hammer icon indicated your balance.&lt;br /&gt;
* The star indicates your equilibrium.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Avatar ===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border:0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainAvatar.png|left]] &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
To the right of the gauges is your character portrait. This is initially set by default. You can select one of ours or upload one of your own by clicking on it.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Map Window ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainMap.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
In our game worlds your character is in a room. You move from room to room by typing in directions like north or southwest. This map window indicates the room you are currently in with a flag. You can also move by clicking on the exits listed in the map window, or by double clicking on a room.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Map Compass ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainCompass.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
You can also move by using the Map Compass which appears in the top right corner of your main output window. This is off by default, but can be turned on in your [[settings]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Character Tab  ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainCharacter.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
That is the character window. As you get damaged, your limbs, body, and head will change colors (not all of our games have this concept). To the right are icons representing different common defenses that your character may have active. You can mouseover them to see their names, and get more info in-game.&lt;br /&gt;
&lt;br /&gt;
Below that you’ll see other kinds of info, as well as a complete list of the afflictions and defences you currently have.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skills Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainSkills.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
The skill tab displays your current skills. Clicking on a skill will popup a display of all your abilities in that skill.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inventory Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainInventory.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
This displays your inventory. Breaking it down by items you are wielding, wearing, and carrying.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Room Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainRoom.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
This is the room tab. It displays all of the items in the room. It is broken down by other players, mobs (these are NPCs and monsters), and items.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Who Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainWho.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
This tab lists all of the current players in the game that you can see. You can also click on any organization you belong to for a filtered list.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quests, Tasks, and Achievement Tabs ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainQuests.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainAchivements.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-6 columns&amp;quot;&amp;gt;&lt;br /&gt;
These tabs display any quests, tasks, and achievements you may accomplish. You can click on the task for a popup to display any information about that task. Not all of the Iron Realms games use all of these activities.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Communications Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainCommunication.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
All chat communication you receive in the game is piped to this window. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Status bar ===&lt;br /&gt;
[[File:MainStatus.png]]&lt;br /&gt;
The status bar is located at the bottom of the client. &lt;br /&gt;
&lt;br /&gt;
From left to right it has:&lt;br /&gt;
# Help: Click this button to access this wiki.&lt;br /&gt;
# Vote: Click this button to vote for your favorite game on the TopMudSites website.&lt;br /&gt;
# Level: This star icon indicated your level and how far you have progressed to the next level.&lt;br /&gt;
# Target: What player or mob you are currently targeting.&lt;br /&gt;
# Gold: How much gold your character is carrying.&lt;br /&gt;
# Bank: How much gold you character has in the bank.&lt;br /&gt;
# Ping: How fast is your connection to our servers. The lower the number, the better.&lt;br /&gt;
# Messages: If the envelop icon is visible, you have a message. Type HELP MESSAGES in the game for more information.&lt;br /&gt;
# News: If the news icon is highlighted, you have unread news. Type HELP NEWS for more information.&lt;br /&gt;
# Day/Night Indicator: This indicated the current time of day in the game. Hovering your mouse over the icon will display more information.&lt;br /&gt;
# Fullscreen Mode: The monitor icon will cause the client to run in fullscreen.&lt;br /&gt;
# Logging: You can log all output from the game to a text file for later use.&lt;br /&gt;
# Scripts On/Off: The lightning icon will turn on and off all of your [[reflexes]].&lt;br /&gt;
# Settings: The gear icon will open another window, allowing you to adjust your [[settings]].&lt;br /&gt;
# Reset: You can reset the client to its default layout by clicking this icon.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=The_Game_Client&amp;diff=930</id>
		<title>The Game Client</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=The_Game_Client&amp;diff=930"/>
		<updated>2016-02-20T22:28:47Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the client. It is the interface through which you play the game world. Let&#039;s take a moment and explore each section of the client.&lt;br /&gt;
[[File:TheClient.png]]&lt;br /&gt;
&lt;br /&gt;
=== Main Output Window ===&lt;br /&gt;
This is the output window. New output will appear from the bottom and scroll up. &lt;br /&gt;
[[File:MainOutput.png]]&lt;br /&gt;
&lt;br /&gt;
==== Scrollback ====&lt;br /&gt;
You can see your scrollback history by using the page-up and page-down keys, by using your mouse wheel, or by clicking on the button in the upper right of the client.&lt;br /&gt;
&lt;br /&gt;
You can adjust the location where the split screen happens with your mouse.&lt;br /&gt;
&lt;br /&gt;
You can close the split screen by clicking on the HIDE button in the top right.&lt;br /&gt;
&lt;br /&gt;
[[File:MainScrollback.png]]&lt;br /&gt;
&lt;br /&gt;
=== Command Line ===&lt;br /&gt;
This is the command input line and is where you input commands to the game.&lt;br /&gt;
&lt;br /&gt;
[[File:MainCommandLine.png]]&lt;br /&gt;
&lt;br /&gt;
=== F-Key Buttons ===&lt;br /&gt;
These are the F-Key buttons, which come pre-filled for new characters. You can edit these keys in [[settings]] menu, which is accessed from the gears icon in the lower-right. &lt;br /&gt;
&lt;br /&gt;
You can activate the buttons by clicking on them with your mouse it pressing the corresponding F-Key on your keyboard.&lt;br /&gt;
&lt;br /&gt;
[[File:MainButtons.png]]&lt;br /&gt;
&lt;br /&gt;
=== Gauges ===&lt;br /&gt;
Above that you’ll see indicators for health, mana, and other stats, depending on which Iron Realms game you’re playing.&lt;br /&gt;
[[File:MainGauges.png]]&lt;br /&gt;
&lt;br /&gt;
=== Balance and Equilibrium Indicators ===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border:0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;50px&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainBalEq.png]] &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
To the left of the gauges are the balance and equilibrium indicators.&lt;br /&gt;
* The hammer icon indicated your balance.&lt;br /&gt;
* The star indicates your equilibrium.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Avatar ===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border:0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainAvatar.png|left]] &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
To the right of the gauges is your character portrait. This is initially set by default. You can select one of ours or upload one of your own by clicking on it.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Map Window ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainMap.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
In our game worlds your character is in a room. You move from room to room by typing in directions like north or southwest. This map window indicates the room you are currently in with a flag. You can also move by clicking on the exits listed in the map window, or by double clicking on a room.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Map Compass ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainCompass.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
You can also move by using the Map Compass which appears in the top right corner of your main output window. This is off by default, but can be turned on in your [[settings]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Character Tab  ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainCharacter.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
That is the character window. As you get damaged, your limbs, body, and head will change colors (not all of our games have this concept). To the right are icons representing different common defenses that your character may have active. You can mouseover them to see their names, and get more info in-game.&lt;br /&gt;
&lt;br /&gt;
Below that you’ll see other kinds of info, as well as a complete list of the afflictions and defences you currently have.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skills Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainSkills.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
The skill tab displays your current skills. Clicking on a skill will popup a display of all your abilities in that skill.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inventory Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainInventory.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
This displays your inventory. Breaking it down by items you are wielding, wearing, and carrying.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Room Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainRoom.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
This is the room tab. It displays all of the items in the room. It is broken down by other players, mobs (these are NPCs and monsters), and items.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Who Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainWho.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
This tab lists all of the current players in the game that you can see. You can also click on any organization you belong to for a filtered list.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quests, Tasks, and Achievement Tabs ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainQuests.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainAchivements.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-6 columns&amp;quot;&amp;gt;&lt;br /&gt;
These tabs display any quests, tasks, and achievements you may accomplish. You can click on the task for a popup to display any information about that task. Not all of the Iron Realms games use all of these activities.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Communications Tab ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-3 columns&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MainCommunication.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-9 columns&amp;quot;&amp;gt;&lt;br /&gt;
All chat communication you receive in the game is piped to this window. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Status bar ===&lt;br /&gt;
[[File:MainStatus.png]]&lt;br /&gt;
The status bar is located at the bottom of the client. &lt;br /&gt;
&lt;br /&gt;
From left to right it has:&lt;br /&gt;
# Help: Click this button to access this wiki.&lt;br /&gt;
# Vote: Click this button to vote for your favorite game on the TopMudSites website.&lt;br /&gt;
# Level: This star icon indicated your level and how far you have progressed to the next level.&lt;br /&gt;
# Target: What player or mob you are currently targeting.&lt;br /&gt;
# Gold: How much gold your character is carrying.&lt;br /&gt;
# Bank: How much gold you character has in the bank.&lt;br /&gt;
# Ping: How fast is your connection to our servers. The lower the number, the better.&lt;br /&gt;
# Messages: If the envelop icon is visible, you have a message. Type HELP MESSAGES in the game for more information.&lt;br /&gt;
# News: If the news icon is highlighted, you have unread news. Type HELP NEWS for more information.&lt;br /&gt;
# Day/Night Indicator: This indicated the current time of day in the game. Hovering your mouse over the icon will display more information.&lt;br /&gt;
# Fullscreen Mode: The monitor icon will cause the client to run in fullscreen.&lt;br /&gt;
# Logging: You can log all output from the game to a text file for later use.&lt;br /&gt;
# Scripts On/Off: The lightning icon will turn on and off all of your [[reflexes]].&lt;br /&gt;
# Settings: The gear icon will open another window, allowing you to adjust your [[settings]].&lt;br /&gt;
# Reset: You can reset the client to its default layout by clicking this icon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;embedvideo service=&amp;quot;youtube&amp;quot;&amp;gt;https://youtu.be/xiC__IjCa2s&amp;lt;/embedvideo&amp;gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Examples&amp;diff=860</id>
		<title>Examples</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Examples&amp;diff=860"/>
		<updated>2016-02-19T06:29:43Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page links to several [[reflexes|reflex]] examples. You can use these directly or use them to help you create new types of reflexes.&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
These are examples of how to create an [[aliases|alias]].&lt;br /&gt;
&lt;br /&gt;
* [[Hello World Alias]]: A simple example of an alias.&lt;br /&gt;
* [[Basic Targeting Alias]]: These aliases use variables to target and attack mobiles.&lt;br /&gt;
* [[Put Pack Alias]]: This alias quickly gets and puts items in packs using the @suffix expansion.&lt;br /&gt;
* [[Disable Group Alias]]: This is an example alias that will disable an entire group or reflexes.&lt;br /&gt;
&lt;br /&gt;
=== Keybinds ===&lt;br /&gt;
These are examples of how to create an [[keybinds|keybind]].&lt;br /&gt;
&lt;br /&gt;
=== Triggers ===&lt;br /&gt;
These are examples of how to create an [[triggers|trigger]].&lt;br /&gt;
* [[Gold Counter]]: This alias will keep track of the amount of gold picked up. It shows how to use wildcards in a trigger text.&lt;br /&gt;
* [[Balance Recovery Attack]]: This is an example of a trigger to automatically attack a target when you recover balance.&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
These are examples of how to create a [[functions|function]].&lt;br /&gt;
* [[GMCP Data|GMCPData]]: This example reads some data coming over via [[GMCP]] and assigns it to variables.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Gold_Counter&amp;diff=858</id>
		<title>Gold Counter</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Gold_Counter&amp;diff=858"/>
		<updated>2016-02-19T05:35:07Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a basic trigger to show how to use basic wildcards in a trigger. This reflex will keep track of the amount of gold picked up.&lt;br /&gt;
&lt;br /&gt;
[[File:GoldTrigger.png]]&lt;br /&gt;
&lt;br /&gt;
As you can see, we use &amp;lt;gold&amp;gt; in place of the number of gold sovereigns picked up. We then use that number to increase the value of our &#039;&#039;totalgold&#039;&#039; variable. &lt;br /&gt;
&lt;br /&gt;
Here is an example of the output:&lt;br /&gt;
[[File:GoldTriggerOutput.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Gold_Counter&amp;diff=857</id>
		<title>Gold Counter</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Gold_Counter&amp;diff=857"/>
		<updated>2016-02-19T05:32:55Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a basic trigger to show how to use basic wildcards in a trigger. This reflex will keep track of the amount of gold picked up.&lt;br /&gt;
&lt;br /&gt;
[[File:GoldTrigger.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:GoldTriggerOutput.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=File:GoldTriggerOutput.png&amp;diff=856</id>
		<title>File:GoldTriggerOutput.png</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=File:GoldTriggerOutput.png&amp;diff=856"/>
		<updated>2016-02-19T05:31:51Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=File:GoldTrigger.png&amp;diff=855</id>
		<title>File:GoldTrigger.png</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=File:GoldTrigger.png&amp;diff=855"/>
		<updated>2016-02-19T05:31:30Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Gold_Counter&amp;diff=854</id>
		<title>Gold Counter</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Gold_Counter&amp;diff=854"/>
		<updated>2016-02-19T05:29:40Z</updated>

		<summary type="html">&lt;p&gt;Justin: Created page with &amp;quot;This is a basic trigger to show how to use basic wildcards in a trigger. This reflex will keep track of the amount of gold picked up.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a basic trigger to show how to use basic wildcards in a trigger. This reflex will keep track of the amount of gold picked up.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Triggers&amp;diff=853</id>
		<title>Triggers</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Triggers&amp;diff=853"/>
		<updated>2016-02-19T05:23:19Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Triggers are a very powerful and versatile type of reflexes. Triggers allow you to automatically react when text (and other events) is sent to your character from the game. &lt;br /&gt;
&lt;br /&gt;
A few brief examples of things triggers can do:&lt;br /&gt;
&lt;br /&gt;
* Automatically send commands to the game when certain text is received.&lt;br /&gt;
* Hide unimportant lines you don&#039;t want to see.&lt;br /&gt;
* Highlight lines of text you do not want to accidentally miss. &lt;br /&gt;
* Modify portions of the lines received from the game.&lt;br /&gt;
* Save data in a variable for later use. Such as how much gold you picked up or the name of a player that hit you.&lt;br /&gt;
&lt;br /&gt;
The basic usage of triggers is similar to that of [[aliases]] or [[keybinds]]. One thing to be careful of is that by default, triggers can match anywhere in the received text, not only at the beginning (you can change the &#039;&#039;Matching Type&#039;&#039; accordingly, if desired).&lt;br /&gt;
&lt;br /&gt;
== How to Create a New Trigger ==&lt;br /&gt;
&lt;br /&gt;
Triggers are a reflex. They are created and managed from the Reflexes tab in the settings window. To open the settings window, click on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your main game screen&lt;br /&gt;
&lt;br /&gt;
=== Step 1. Open the settings page and click the &#039;Reflexes&#039; tab. ===&lt;br /&gt;
&lt;br /&gt;
To create a new trigger, open your settings window by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser. &lt;br /&gt;
&lt;br /&gt;
In the settings window, click on the &#039;Reflexes&#039; tab as shown in the image below.&lt;br /&gt;
&lt;br /&gt;
[[File:tab-reflexes.png|frame|center|Setting window displaying the reflexes tab.]]&lt;br /&gt;
&lt;br /&gt;
=== Step 2. Click the &#039;Add&#039; Button and select &#039;Add a Trigger&#039;. ===&lt;br /&gt;
&lt;br /&gt;
There are several different reflexes you can create. We want to create a trigger. In order to do this, click the &#039;Add&#039; button located in the left pane and then click on &#039;Add a Trigger&#039;. This will create a new, undefined trigger.&lt;br /&gt;
&lt;br /&gt;
Should you want to delete a trigger, you can select the trigger from the list, and then click the &#039;Remove&#039; button.&lt;br /&gt;
&lt;br /&gt;
[[File:Trigger-create.png|frame|center|Example of creating a new trigger.]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Triggers Options. ===&lt;br /&gt;
&lt;br /&gt;
There are two main option sections for triggers; &#039;&#039;&#039;Matching&#039;&#039;&#039; and &#039;&#039;&#039;Actions&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matching&#039;&#039;&#039; is used to find the text you would like to use for this trigger. When the game sends text to your character that matches, it will automatically send the action defined below it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Actions&#039;&#039;&#039; is what will happen when the trigger matches text from the game. Actions can be used to automatically send text to the game, highlight you want to stand out, create complicated functions, and other things.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-blank.png|frame|center|This is a blank trigger. It will not do anything until you add text to match and an action to do when that text is matched.]]&lt;br /&gt;
&lt;br /&gt;
== Matching Options Explained ==&lt;br /&gt;
&lt;br /&gt;
Matching is used to find text sent from the game to create an action for. You can match entire lines of text, single words, partial lines, and lines of text with variable words.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-matching.png]]&lt;br /&gt;
&lt;br /&gt;
There are five options for matching text.&lt;br /&gt;
&lt;br /&gt;
=== Trigger Text ===&lt;br /&gt;
&lt;br /&gt;
This field is required and contains the text to match. &lt;br /&gt;
 &lt;br /&gt;
Examples of Trigger Text:&lt;br /&gt;
* You have recovered balance.&lt;br /&gt;
* You have recovered&lt;br /&gt;
* recovered balance.&lt;br /&gt;
* You have recovered balance.&lt;br /&gt;
&lt;br /&gt;
This works hand in hand with the &#039;&#039;&#039;Matching Type&#039;&#039;&#039; option. See below.&lt;br /&gt;
&lt;br /&gt;
There are times when you&#039;ll want to use wildcard matches in your triggers. Say you want to make an alert when someone enters the room, you can surround a word in &amp;lt;&amp;gt;&#039;s to assign it to a variable. If an example line is &#039;&#039;Jeremy enters from the north&#039;&#039;, you could configure your trigger to match on &#039;&#039;&amp;lt;person&amp;gt; enters from the &amp;lt;direction&amp;gt;&#039;&#039;. As an added bonus, you can then use @person and @direction as variables in the trigger actions.&lt;br /&gt;
&lt;br /&gt;
These simplified triggers do not work with regular expressions, and if using this advanced feature, you&#039;ll want to ensure that you&#039;re using the correct syntax.&lt;br /&gt;
&lt;br /&gt;
=== Matching Type ===&lt;br /&gt;
&lt;br /&gt;
There are four options for matching text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Contains&#039;&#039;&#039;: This will match any line that has your trigger text in it.&lt;br /&gt;
* &#039;&#039;&#039;Begins with&#039;&#039;&#039;: Will only match a line that starts with your trigger text in it.&lt;br /&gt;
* &#039;&#039;&#039;Exact match&#039;&#039;&#039;: Will only match a line that matches exactly like your trigger text.&lt;br /&gt;
* &#039;&#039;&#039;Regular expression&#039;&#039;&#039;: This will match any regular expression patterns. This is advanced, but good to learn. &lt;br /&gt;
&lt;br /&gt;
In most cases you will want to use &#039;&#039;Contains&#039;&#039; option unless you have more complicated situations.&lt;br /&gt;
&lt;br /&gt;
=== Whole Words Only === &lt;br /&gt;
&lt;br /&gt;
If checked, the trigger will only match whole words. &lt;br /&gt;
&lt;br /&gt;
For example; you create a trigger with trigger text set to &#039;You have recovered bal&#039;.&lt;br /&gt;
&lt;br /&gt;
If the game sends the text - You have recovered balance. - it will &#039;&#039;&#039;NOT&#039;&#039;&#039; match, because &#039;balance.&#039; is a different whole word than &#039;bal&#039;.&lt;br /&gt;
&lt;br /&gt;
If I uncheck &#039;Whole words only&#039;, the trigger would work. &lt;br /&gt;
&lt;br /&gt;
In almost all cases you will just want to keep &#039;Whole words only&#039; turned on and be sure to include the full trigger text. Remember that whole words are separated by spaces and punctuation is considered part of a word.&lt;br /&gt;
&lt;br /&gt;
=== Match Case === &lt;br /&gt;
&lt;br /&gt;
If checked, capitalization must match. &lt;br /&gt;
&lt;br /&gt;
For example, if checked, &#039;You have recovered balance&#039; is not the same as &#039;You HAVE reCOvered balance&#039;. &lt;br /&gt;
&lt;br /&gt;
If unchecked, the example above will work.&lt;br /&gt;
&lt;br /&gt;
=== Trigger Name ===&lt;br /&gt;
&lt;br /&gt;
(Optional) The name of the trigger. The name is an identifier that will show up in your list of triggers. It is used for organizing your triggers. It is not required for your trigger and has nothing to do with the actual operation of the trigger.&lt;br /&gt;
&lt;br /&gt;
== Action Options Explained ==&lt;br /&gt;
&lt;br /&gt;
Once you have matched text from the game, you can initiate a single action, or a series of multiple actions. Actions will fire in the order they are listed.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-actions.png]]&lt;br /&gt;
&lt;br /&gt;
Above is a simple example of three separate actions that will happen when a trigger fires.&lt;br /&gt;
&lt;br /&gt;
=== Simplified Scripting ===&lt;br /&gt;
&lt;br /&gt;
The Nexus client allows for fifteen different [[SimplifiedScripting|simplified scripting]] actions. In most cases instantly returning a command is the best option. However, the Nexus client will allow you to loop through commands, use if statements, wait commands, highlight text, and much more.&lt;br /&gt;
&lt;br /&gt;
All of these options, with full explanations and examples can be found here: [[SimplifiedScripting|simplified scripting]].&lt;br /&gt;
&lt;br /&gt;
=== Advanced Scripting ===&lt;br /&gt;
&lt;br /&gt;
There are two main [[AdvancedScripting|advanced scripting]] options. You can &#039;&#039;Call function&#039;&#039; or you can &#039;&#039;Execute script&#039;&#039;. Both options allow for the use of javascript. You can learn more and [[functions]] here and more about [[javascript]] here.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
You can view some example triggers on the [[examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Regular Expression Help ==&lt;br /&gt;
* http://www.regular-expressions.info/&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Triggers&amp;diff=852</id>
		<title>Triggers</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Triggers&amp;diff=852"/>
		<updated>2016-02-19T05:22:00Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Triggers are a very powerful and versatile type of reflexes. Triggers allow you to automatically react when text (and other events) is sent to your character from the game. &lt;br /&gt;
&lt;br /&gt;
A few brief examples of things triggers can do:&lt;br /&gt;
&lt;br /&gt;
* Automatically send commands to the game when certain text is received.&lt;br /&gt;
* Hide unimportant lines you don&#039;t want to see.&lt;br /&gt;
* Highlight lines of text you do not want to accidentally miss. &lt;br /&gt;
* Modify portions of the lines received from the game.&lt;br /&gt;
* Save data in a variable for later use. Such as how much gold you picked up or the name of a player that hit you.&lt;br /&gt;
&lt;br /&gt;
The basic usage of triggers is similar to that of [[aliases]] or [[keybinds]]. One thing to be careful of is that by default, triggers can match anywhere in the received text, not only at the beginning (you can change the &#039;&#039;Matching Type&#039;&#039; accordingly, if desired).&lt;br /&gt;
&lt;br /&gt;
== How to Create a New Trigger ==&lt;br /&gt;
&lt;br /&gt;
Triggers are a reflex. They are created and managed from the Reflexes tab in the settings window. To open the settings window, click on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your main game screen&lt;br /&gt;
&lt;br /&gt;
=== Step 1. Open the settings page and click the &#039;Reflexes&#039; tab. ===&lt;br /&gt;
&lt;br /&gt;
To create a new trigger, open your settings window by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser. &lt;br /&gt;
&lt;br /&gt;
In the settings window, click on the &#039;Reflexes&#039; tab as shown in the image below.&lt;br /&gt;
&lt;br /&gt;
[[File:tab-reflexes.png|frame|center|Setting window displaying the reflexes tab.]]&lt;br /&gt;
&lt;br /&gt;
=== Step 2. Click the &#039;Add&#039; Button and select &#039;Add a Trigger&#039;. ===&lt;br /&gt;
&lt;br /&gt;
There are several different reflexes you can create. We want to create a trigger. In order to do this, click the &#039;Add&#039; button located in the left pane and then click on &#039;Add a Trigger&#039;. This will create a new, undefined trigger.&lt;br /&gt;
&lt;br /&gt;
Should you want to delete a trigger, you can select the trigger from the list, and then click the &#039;Remove&#039; button.&lt;br /&gt;
&lt;br /&gt;
[[File:Trigger-create.png|frame|center|Example of creating a new trigger.]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Triggers Options. ===&lt;br /&gt;
&lt;br /&gt;
There are two main option sections for triggers; &#039;&#039;&#039;Matching&#039;&#039;&#039; and &#039;&#039;&#039;Actions&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matching&#039;&#039;&#039; is used to find the text you would like to use for this trigger. When the game sends text to your character that matches, it will automatically send the action defined below it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Actions&#039;&#039;&#039; is what will happen when the trigger matches text from the game. Actions can be used to automatically send text to the game, highlight you want to stand out, create complicated functions, and other things.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-blank.png|frame|center|This is a blank trigger. It will not do anything until you add text to match and an action to do when that text is matched.]]&lt;br /&gt;
&lt;br /&gt;
== Matching Options Explained ==&lt;br /&gt;
&lt;br /&gt;
Matching is used to find text sent from the game to create an action for. You can match entire lines of text, single words, partial lines, and lines of text with variable words.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-matching.png]]&lt;br /&gt;
&lt;br /&gt;
There are five options for matching text.&lt;br /&gt;
&lt;br /&gt;
=== Trigger Text ===&lt;br /&gt;
&lt;br /&gt;
This field is required and contains the text to match. &lt;br /&gt;
 &lt;br /&gt;
Examples of Trigger Text:&lt;br /&gt;
* You have recovered balance.&lt;br /&gt;
* You have recovered&lt;br /&gt;
* recovered balance.&lt;br /&gt;
* You have recovered balance.&lt;br /&gt;
&lt;br /&gt;
This works hand in hand with the &#039;&#039;&#039;Matching Type&#039;&#039;&#039; option. See below.&lt;br /&gt;
&lt;br /&gt;
There are times when you&#039;ll want to use wildcard matches in your triggers. Say you want to make an alert when someone enters the room, you can surround a word in &amp;lt;&amp;gt;&#039;s to assign it to a variable. If an example line is &#039;&#039;Jeremy enters from the north&#039;&#039;, you could configure your trigger to match on &#039;&#039;&amp;lt;person&amp;gt; enters from the &amp;lt;direction&amp;gt;&#039;&#039;. As an added bonus, you can then use @person and @direction as variables in the trigger actions.&lt;br /&gt;
&lt;br /&gt;
=== Matching Type ===&lt;br /&gt;
&lt;br /&gt;
There are four options for matching text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Contains&#039;&#039;&#039;: This will match any line that has your trigger text in it.&lt;br /&gt;
* &#039;&#039;&#039;Begins with&#039;&#039;&#039;: Will only match a line that starts with your trigger text in it.&lt;br /&gt;
* &#039;&#039;&#039;Exact match&#039;&#039;&#039;: Will only match a line that matches exactly like your trigger text.&lt;br /&gt;
* &#039;&#039;&#039;Regular expression&#039;&#039;&#039;: This will match any regular expression patterns. This is advanced, but good to learn. &lt;br /&gt;
&lt;br /&gt;
In most cases you will want to use &#039;&#039;Contains&#039;&#039; option unless you have more complicated situations.&lt;br /&gt;
&lt;br /&gt;
=== Whole Words Only === &lt;br /&gt;
&lt;br /&gt;
If checked, the trigger will only match whole words. &lt;br /&gt;
&lt;br /&gt;
For example; you create a trigger with trigger text set to &#039;You have recovered bal&#039;.&lt;br /&gt;
&lt;br /&gt;
If the game sends the text - You have recovered balance. - it will &#039;&#039;&#039;NOT&#039;&#039;&#039; match, because &#039;balance.&#039; is a different whole word than &#039;bal&#039;.&lt;br /&gt;
&lt;br /&gt;
If I uncheck &#039;Whole words only&#039;, the trigger would work. &lt;br /&gt;
&lt;br /&gt;
In almost all cases you will just want to keep &#039;Whole words only&#039; turned on and be sure to include the full trigger text. Remember that whole words are separated by spaces and punctuation is considered part of a word.&lt;br /&gt;
&lt;br /&gt;
=== Match Case === &lt;br /&gt;
&lt;br /&gt;
If checked, capitalization must match. &lt;br /&gt;
&lt;br /&gt;
For example, if checked, &#039;You have recovered balance&#039; is not the same as &#039;You HAVE reCOvered balance&#039;. &lt;br /&gt;
&lt;br /&gt;
If unchecked, the example above will work.&lt;br /&gt;
&lt;br /&gt;
=== Trigger Name ===&lt;br /&gt;
&lt;br /&gt;
(Optional) The name of the trigger. The name is an identifier that will show up in your list of triggers. It is used for organizing your triggers. It is not required for your trigger and has nothing to do with the actual operation of the trigger.&lt;br /&gt;
&lt;br /&gt;
== Action Options Explained ==&lt;br /&gt;
&lt;br /&gt;
Once you have matched text from the game, you can initiate a single action, or a series of multiple actions. Actions will fire in the order they are listed.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-actions.png]]&lt;br /&gt;
&lt;br /&gt;
Above is a simple example of three separate actions that will happen when a trigger fires.&lt;br /&gt;
&lt;br /&gt;
=== Simplified Scripting ===&lt;br /&gt;
&lt;br /&gt;
The Nexus client allows for fifteen different [[SimplifiedScripting|simplified scripting]] actions. In most cases instantly returning a command is the best option. However, the Nexus client will allow you to loop through commands, use if statements, wait commands, highlight text, and much more.&lt;br /&gt;
&lt;br /&gt;
All of these options, with full explanations and examples can be found here: [[SimplifiedScripting|simplified scripting]].&lt;br /&gt;
&lt;br /&gt;
=== Advanced Scripting ===&lt;br /&gt;
&lt;br /&gt;
There are two main [[AdvancedScripting|advanced scripting]] options. You can &#039;&#039;Call function&#039;&#039; or you can &#039;&#039;Execute script&#039;&#039;. Both options allow for the use of javascript. You can learn more and [[functions]] here and more about [[javascript]] here.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
You can view some example triggers on the [[examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Regular Expression Help ==&lt;br /&gt;
* http://www.regular-expressions.info/&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Triggers&amp;diff=851</id>
		<title>Triggers</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Triggers&amp;diff=851"/>
		<updated>2016-02-19T05:20:49Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Triggers are a very powerful and versatile type of reflexes. Triggers allow you to automatically react when text (and other events) is sent to your character from the game. &lt;br /&gt;
&lt;br /&gt;
A few brief examples of things triggers can do:&lt;br /&gt;
&lt;br /&gt;
* Automatically send commands to the game when certain text is received.&lt;br /&gt;
* Hide unimportant lines you don&#039;t want to see.&lt;br /&gt;
* Highlight lines of text you do not want to accidentally miss. &lt;br /&gt;
* Modify portions of the lines received from the game.&lt;br /&gt;
* Save data in a variable for later use. Such as how much gold you picked up or the name of a player that hit you.&lt;br /&gt;
&lt;br /&gt;
The basic usage of triggers is similar to that of [[aliases]] or [[keybinds]]. One thing to be careful of is that by default, triggers can match anywhere in the received text, not only at the beginning (you can change the &#039;&#039;Matching Type&#039;&#039; accordingly, if desired).&lt;br /&gt;
&lt;br /&gt;
== How to Create a New Trigger ==&lt;br /&gt;
&lt;br /&gt;
Triggers are a reflex. They are created and managed from the Reflexes tab in the settings window. To open the settings window, click on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your main game screen&lt;br /&gt;
&lt;br /&gt;
=== Step 1. Open the settings page and click the &#039;Reflexes&#039; tab. ===&lt;br /&gt;
&lt;br /&gt;
To create a new trigger, open your settings window by clicking on the gear icon [[File:Settings_icon.jpg|text-bottom]] in the lower right part of your game screen. This will popup a new window in your browser. &lt;br /&gt;
&lt;br /&gt;
In the settings window, click on the &#039;Reflexes&#039; tab as shown in the image below.&lt;br /&gt;
&lt;br /&gt;
[[File:tab-reflexes.png|frame|center|Setting window displaying the reflexes tab.]]&lt;br /&gt;
&lt;br /&gt;
=== Step 2. Click the &#039;Add&#039; Button and select &#039;Add a Trigger&#039;. ===&lt;br /&gt;
&lt;br /&gt;
There are several different reflexes you can create. We want to create a trigger. In order to do this, click the &#039;Add&#039; button located in the left pane and then click on &#039;Add a Trigger&#039;. This will create a new, undefined trigger.&lt;br /&gt;
&lt;br /&gt;
Should you want to delete a trigger, you can select the trigger from the list, and then click the &#039;Remove&#039; button.&lt;br /&gt;
&lt;br /&gt;
[[File:Trigger-create.png|frame|center|Example of creating a new trigger.]]&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Triggers Options. ===&lt;br /&gt;
&lt;br /&gt;
There are two main option sections for triggers; &#039;&#039;&#039;Matching&#039;&#039;&#039; and &#039;&#039;&#039;Actions&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matching&#039;&#039;&#039; is used to find the text you would like to use for this trigger. When the game sends text to your character that matches, it will automatically send the action defined below it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Actions&#039;&#039;&#039; is what will happen when the trigger matches text from the game. Actions can be used to automatically send text to the game, highlight you want to stand out, create complicated functions, and other things.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-blank.png|frame|center|This is a blank trigger. It will not do anything until you add text to match and an action to do when that text is matched.]]&lt;br /&gt;
&lt;br /&gt;
== Matching Options Explained ==&lt;br /&gt;
&lt;br /&gt;
Matching is used to find text sent from the game to create an action for. You can match entire lines of text, single words, partial lines, and lines of text with variable words.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-matching.png]]&lt;br /&gt;
&lt;br /&gt;
There are five options for matching text.&lt;br /&gt;
&lt;br /&gt;
=== Trigger Text ===&lt;br /&gt;
&lt;br /&gt;
This field is required and contains the text to match. &lt;br /&gt;
 &lt;br /&gt;
Examples of Trigger Text:&lt;br /&gt;
* You have recovered balance.&lt;br /&gt;
* You have recovered&lt;br /&gt;
* recovered balance.&lt;br /&gt;
* You have recovered balance.&lt;br /&gt;
&lt;br /&gt;
This works hand in hand with the &#039;&#039;&#039;Matching Type&#039;&#039;&#039; option. See below.&lt;br /&gt;
&lt;br /&gt;
There are times when you&#039;ll want to use wildcard matches in your triggers. Say you want to make an alert when someone enters the room, you can surround a word in &amp;lt;&amp;gt;&#039;s to assign it to a variable. If an example line is &#039;&#039;Jeremy enters from the north&#039;&#039;, you would enter &#039;&#039;&amp;lt;person&amp;gt; enters from the &amp;lt;direction&amp;gt;&#039;&#039; as your trigger text. As an added bonus, you can then use @person and @direction as variables in the trigger.&lt;br /&gt;
&lt;br /&gt;
=== Matching Type ===&lt;br /&gt;
&lt;br /&gt;
There are four options for matching text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Contains&#039;&#039;&#039;: This will match any line that has your trigger text in it.&lt;br /&gt;
* &#039;&#039;&#039;Begins with&#039;&#039;&#039;: Will only match a line that starts with your trigger text in it.&lt;br /&gt;
* &#039;&#039;&#039;Exact match&#039;&#039;&#039;: Will only match a line that matches exactly like your trigger text.&lt;br /&gt;
* &#039;&#039;&#039;Regular expression&#039;&#039;&#039;: This will match any regular expression patterns. This is advanced, but good to learn. &lt;br /&gt;
&lt;br /&gt;
In most cases you will want to use &#039;&#039;Contains&#039;&#039; option unless you have more complicated situations.&lt;br /&gt;
&lt;br /&gt;
=== Whole Words Only === &lt;br /&gt;
&lt;br /&gt;
If checked, the trigger will only match whole words. &lt;br /&gt;
&lt;br /&gt;
For example; you create a trigger with trigger text set to &#039;You have recovered bal&#039;.&lt;br /&gt;
&lt;br /&gt;
If the game sends the text - You have recovered balance. - it will &#039;&#039;&#039;NOT&#039;&#039;&#039; match, because &#039;balance.&#039; is a different whole word than &#039;bal&#039;.&lt;br /&gt;
&lt;br /&gt;
If I uncheck &#039;Whole words only&#039;, the trigger would work. &lt;br /&gt;
&lt;br /&gt;
In almost all cases you will just want to keep &#039;Whole words only&#039; turned on and be sure to include the full trigger text. Remember that whole words are separated by spaces and punctuation is considered part of a word.&lt;br /&gt;
&lt;br /&gt;
=== Match Case === &lt;br /&gt;
&lt;br /&gt;
If checked, capitalization must match. &lt;br /&gt;
&lt;br /&gt;
For example, if checked, &#039;You have recovered balance&#039; is not the same as &#039;You HAVE reCOvered balance&#039;. &lt;br /&gt;
&lt;br /&gt;
If unchecked, the example above will work.&lt;br /&gt;
&lt;br /&gt;
=== Trigger Name ===&lt;br /&gt;
&lt;br /&gt;
(Optional) The name of the trigger. The name is an identifier that will show up in your list of triggers. It is used for organizing your triggers. It is not required for your trigger and has nothing to do with the actual operation of the trigger.&lt;br /&gt;
&lt;br /&gt;
== Action Options Explained ==&lt;br /&gt;
&lt;br /&gt;
Once you have matched text from the game, you can initiate a single action, or a series of multiple actions. Actions will fire in the order they are listed.&lt;br /&gt;
&lt;br /&gt;
[[File:trigger-actions.png]]&lt;br /&gt;
&lt;br /&gt;
Above is a simple example of three separate actions that will happen when a trigger fires.&lt;br /&gt;
&lt;br /&gt;
=== Simplified Scripting ===&lt;br /&gt;
&lt;br /&gt;
The Nexus client allows for fifteen different [[SimplifiedScripting|simplified scripting]] actions. In most cases instantly returning a command is the best option. However, the Nexus client will allow you to loop through commands, use if statements, wait commands, highlight text, and much more.&lt;br /&gt;
&lt;br /&gt;
All of these options, with full explanations and examples can be found here: [[SimplifiedScripting|simplified scripting]].&lt;br /&gt;
&lt;br /&gt;
=== Advanced Scripting ===&lt;br /&gt;
&lt;br /&gt;
There are two main [[AdvancedScripting|advanced scripting]] options. You can &#039;&#039;Call function&#039;&#039; or you can &#039;&#039;Execute script&#039;&#039;. Both options allow for the use of javascript. You can learn more and [[functions]] here and more about [[javascript]] here.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
You can view some example triggers on the [[examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Regular Expression Help ==&lt;br /&gt;
* http://www.regular-expressions.info/&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=778</id>
		<title>GMCP</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=GMCP&amp;diff=778"/>
		<updated>2016-02-16T23:45:58Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aetolia-dwarf.jpg|right|frame|caption|A dwarf Terradrim from Aetolia.]] General MUD Telnet Protocol (GMCP) is a protocol used to send data from the game server to the player client. This data transfer happens behind the scenes and is not seen by the players. This allows the game server to send messages to the client to update basic character, room, and game information. Character health is an example of information that is continually passed to the client from the game.&lt;br /&gt;
&lt;br /&gt;
These messages can also be accessed by the player for use in [[reflexes]]. We are working simplifying the process of capturing GMCP data for use in the client in a future version of the client.&lt;br /&gt;
&lt;br /&gt;
There is a configuration option in the Advanced Settings tab that will allow you to see GMCP messages as they happen.&lt;br /&gt;
&lt;br /&gt;
Module and message names are not case sensitive. JSON key names are case sensitive.&lt;br /&gt;
&lt;br /&gt;
=== Supported modules ===&lt;br /&gt;
&lt;br /&gt;
This documentation covers the following GMCP messages for the Iron Realms Games.&lt;br /&gt;
&lt;br /&gt;
* Core: core functionality&lt;br /&gt;
* Char: information about a character&lt;br /&gt;
* Char.Afflictions: information the characters afflictions&lt;br /&gt;
* Char.Defences- information the characters defences&lt;br /&gt;
* Char.Items: information about items in inventory and room, with live updates&lt;br /&gt;
* Char.Skills: information about skills known by the player&lt;br /&gt;
* Comm.Channel: identification of communication channels and player lists&lt;br /&gt;
* Room: various information about the current room&lt;br /&gt;
* Redirect: redirect outpot to another window&lt;br /&gt;
* IRE.Composer: IRE-specific, used to edit bigger texts client-side&lt;br /&gt;
* IRE.FileStore: used internally by the Nexus client&lt;br /&gt;
* IRE.Misc: used internally by the fMUD and Nexus clients&lt;br /&gt;
* IRE.Rift: IRE-specific, transmits information about the Rift contents&lt;br /&gt;
* IRE.Sound: Yes. Sound can be sent.&lt;br /&gt;
* IRE.Target: information about the current player target.&lt;br /&gt;
* IRE.Tasks: information about tasks, quests, and achievements.&lt;br /&gt;
* IRE.Time: information about the current time and date conditions in the game.&lt;br /&gt;
* IRE.Wiz: used internally by the Nexus client&lt;br /&gt;
&lt;br /&gt;
=== Supported messages by modules ===&lt;br /&gt;
&lt;br /&gt;
==== Core ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Core.Hello&lt;br /&gt;
*** Needs to be the first message that the client sends, used to identify the client&lt;br /&gt;
*** Message body is an object with keys &amp;quot;client&amp;quot; and &amp;quot;version&amp;quot;, containing the client&#039;s name and version&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Hello {&amp;quot;Client&amp;quot;:&amp;quot;Mudlet&amp;quot;,&amp;quot;Version&amp;quot;:&amp;quot;3.0.0&amp;quot;}&lt;br /&gt;
** Core.Supports.Set&lt;br /&gt;
*** Notifies the server about packages supported by the client&lt;br /&gt;
*** If another Core.Supports.*** package has been received earlier, the list is deleted and replaced with the new one&lt;br /&gt;
*** Message body is an array of strings, each consisting of the module name and version, separated by space&lt;br /&gt;
*** Module version is a positive non-zero integer&lt;br /&gt;
*** Most client implementations will only need to send Set once and won&#039;t need Add/Remove; exceptions are module implementations provided by plug-ins&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Set [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Add&lt;br /&gt;
*** Similar to Set, but appends the supported module list to the one sent earlier&lt;br /&gt;
*** If no list was sent yet, the behaviour is identical to Set&lt;br /&gt;
*** If the list includes module names that were already included earlier, the new version number takes precedence over the previously sent one, even if the newly sent number is lower&lt;br /&gt;
*** Message body format is identical to that of Set&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Add [ &amp;quot;Char 1&amp;quot;, &amp;quot;Char.Skills 1&amp;quot;, &amp;quot;Char.Items 1&amp;quot; ]&lt;br /&gt;
** Core.Supports.Remove&lt;br /&gt;
*** Removes specified modules from the list of supported modules&lt;br /&gt;
*** Message body format is similar to Set, except that module version numbers are optional and ignored if given&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Supports.Remove [ &amp;quot;Char&amp;quot;, &amp;quot;Char.Skills&amp;quot;, &amp;quot;Char.Items&amp;quot; ]&lt;br /&gt;
** Core.KeepAlive&lt;br /&gt;
*** Causes the server to reset the timeout for the logged character, no message body&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** causes the server to send a Core.Ping back&lt;br /&gt;
*** message body is a number which indicates average ping time from previous requests, if available&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Ping 120&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Core.Ping&lt;br /&gt;
*** Sent in reply to Core.Ping. No body.&lt;br /&gt;
** Core.Goodbye&lt;br /&gt;
*** Sent by server immediately before terminating a connection&lt;br /&gt;
*** Message body is a string to be shown to the user - it can explain the reason for the disconnect&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Core.Goodbye &amp;quot;Goodbye, adventurer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Char ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Login&lt;br /&gt;
*** Used to log in a character, only interpreted if no character is logged in for that connection&lt;br /&gt;
*** Message body is an object with keys &amp;quot;name&amp;quot; and &amp;quot;password&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Login { &amp;quot;name&amp;quot;: &amp;quot;somename&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;somepassword&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Name&lt;br /&gt;
*** Sends the character name and full name which includes the title. This is only sent on login.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Name { &amp;quot;name&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;Neophyte Olad&amp;quot; }&lt;br /&gt;
** Char.Vitals&lt;br /&gt;
*** Basic character attributes such as health, mana, etc.&lt;br /&gt;
*** Message body is an object containing several variables&lt;br /&gt;
*** Additionally, each variable is included in a string, in the format name:cur/max&lt;br /&gt;
*** Interpretation of the variables is game specific&lt;br /&gt;
*** It is generally safe to assume that the known values are numbers (even though encoded as strings), but other datatypes can be present&lt;br /&gt;
*** The &amp;quot;charstats&amp;quot; attribute, if present, holds a list of strings that the client may choose to display to the player in a client-specific way, these hold information about the character state that the game wishes to show to the player&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Vitals { &amp;quot;hp&amp;quot;: &amp;quot;4500&amp;quot;, &amp;quot;maxhp&amp;quot;: &amp;quot;4800&amp;quot;, &amp;quot;mp&amp;quot;: &amp;quot;1200&amp;quot;, &amp;quot;maxmp&amp;quot;: &amp;quot;2500&amp;quot;, &amp;quot;ep&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;maxep&amp;quot;: &amp;quot;16000&amp;quot;, &amp;quot;wp&amp;quot;: &amp;quot;14000&amp;quot;, &amp;quot;maxwp&amp;quot;: &amp;quot;15000&amp;quot;, &amp;quot;nl&amp;quot;: &amp;quot;10&amp;quot;, &amp;quot;string&amp;quot;: &amp;quot;H:4500/4800 M:1200/2500 E:15000/16000 W:14000/15000 NL:10/100&amp;quot; }&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 columns&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achaea&#039;&#039;&#039;&lt;br /&gt;
* All classes: Bleed, Rage&lt;br /&gt;
* Apostates: Essence&lt;br /&gt;
* Bard: Stance, Voice Balance&lt;br /&gt;
* Blademaster: Stance&lt;br /&gt;
* Druid: Current Morph, Sunlight Energy&lt;br /&gt;
* Infernal: Essence, Weaponmastery Spec&lt;br /&gt;
* Magi: Channels&lt;br /&gt;
* Monk: Kai Energy, Tekura stance&lt;br /&gt;
* Occultist: Karma, Entity Balance&lt;br /&gt;
* Paladin: Devotion, Weaponmastery Spec&lt;br /&gt;
* Priest: Devotion&lt;br /&gt;
* Runewarden: Weaponmastery Spec&lt;br /&gt;
* Sentinel: Current Morph&lt;br /&gt;
* Serpent: Secreted Venom&lt;br /&gt;
* Shaman: Number of spirits bound&lt;br /&gt;
* Sylvan: Elemental Channels, Sunlight Energy&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 columns&amp;quot;&amp;gt;&#039;&#039;&#039;Aetolia&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 columns&amp;quot;&amp;gt;&#039;&#039;&#039;Imperian&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 columns&amp;quot;&amp;gt;&#039;&#039;&#039;Lusternia&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 columns&amp;quot;&amp;gt;&#039;&#039;&#039;MKO&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
** Char.StatusVars&lt;br /&gt;
*** Sent by server after a successful login or after the module is enabled&lt;br /&gt;
*** Contains a list of character variables (level, race, etc)&lt;br /&gt;
*** Message body is an object&lt;br /&gt;
*** Each object element is a name-caption pair, name is the internal name and caption the user-visible one&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.StatusVars { &amp;quot;level&amp;quot;: &amp;quot;Level&amp;quot;, &amp;quot;race&amp;quot;: &amp;quot;Race&amp;quot;, &amp;quot;guild&amp;quot;: &amp;quot;Guild&amp;quot; }&lt;br /&gt;
** Char.Status&lt;br /&gt;
*** Values of character values defined by StatusVars.&lt;br /&gt;
*** A full list is sent by server right after StatusVars, and changes are sent in subsequent messages as they occur.&lt;br /&gt;
*** With the exception of the initial Status message, messages only contain changed values; if a variable is not included, it has not changed since the previous Status message.&lt;br /&gt;
*** Message body is an object.&lt;br /&gt;
*** Each object element is a name-value pair, name is the internal name defined by the StatusVars message and value is the variable value.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Status { &amp;quot;level&amp;quot;: &amp;quot;58&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;Antioch&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
==== Char.Afflictions ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Afflictions.List&lt;br /&gt;
*** Sends an array of current character afflictions.&lt;br /&gt;
**** name: The name of the affliction&lt;br /&gt;
**** cure: The basic cure of the affliction. This is used for links to cure even though other options may exist to cure the affliction.&lt;br /&gt;
**** desc: A description of what this affliction does.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.List [ { &amp;quot;name&amp;quot;: &amp;quot;weariness&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Decreases cutting and blunt damage that you inflict by 30%.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;slow herbs&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;apply epidermal&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Increases the time needed to regain herb balance by 1.25 seconds.&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nausea&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat nightshade&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Causes periodic vomiting, which does damage and increases hunger.&amp;quot; } ]&lt;br /&gt;
** Char.Afflictions.Add&lt;br /&gt;
*** Add an affliction to the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Add { &amp;quot;name&amp;quot;: &amp;quot;asthma&amp;quot;, &amp;quot;cure&amp;quot;: &amp;quot;eat kelp&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Makes you unable to smoke pipes.&amp;quot; }&lt;br /&gt;
** Char.Afflictions.Remove&lt;br /&gt;
*** Removes an affliction from the character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Afflictions.Remove [ &amp;quot;asthma&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
==== Char.Defences====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Defences.List&lt;br /&gt;
*** Send an array of all the defences a character currently has.&lt;br /&gt;
**** name: The name of the defence.&lt;br /&gt;
**** desc: The description of the defence.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.List [ { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;blind&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;blind&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;nightsight&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;nightsight&amp;quot; } ]&lt;br /&gt;
** Char.Defences.Add&lt;br /&gt;
*** Sent when a defence is added to a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Add { &amp;quot;name&amp;quot;: &amp;quot;deaf&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;deaf&amp;quot; }&lt;br /&gt;
** Char.Defences.Remove&lt;br /&gt;
*** Sent when a defence is removed from a character.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Defences.Remove [ &amp;quot;blind&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
==== Char.Items ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Items.Contents&lt;br /&gt;
*** Request for the server to send the list of items located inside another item.&lt;br /&gt;
*** Message body is a number identifying the item.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Item.Contents 12345&lt;br /&gt;
** Char.Items.Inv&lt;br /&gt;
*** Request for the server to send the list of items in player&#039;s inventory.&lt;br /&gt;
*** Message body is empty.&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Inv &amp;quot;&amp;quot;&lt;br /&gt;
** Char.Items.Room&lt;br /&gt;
*** Sent by the client to refresh the items in a room.&lt;br /&gt;
*** Message body is empty&lt;br /&gt;
*** Causes the server to send back an appropriate Char.Items.List message.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Room &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Items.List&lt;br /&gt;
*** List of items at a specified location (room, inv, held container)&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;items&amp;quot;&lt;br /&gt;
*** Location value is a string, &amp;quot;inv&amp;quot;, &amp;quot;room&amp;quot;, or &amp;quot;repNUMBER&amp;quot; - the last one is container identification&lt;br /&gt;
*** Items value is an array, whose each item is an object with keys &amp;quot;id&amp;quot;, &amp;quot;name&amp;quot; and optionally &amp;quot;attrib&amp;quot;&lt;br /&gt;
*** ID is a number identifying the item, name is a string containing a short player-visible item description&lt;br /&gt;
*** Icon is the image the item is associated with in the client.&lt;br /&gt;
*** Attrib is a string consisting of characters describing item properties:&lt;br /&gt;
**** &amp;quot;w&amp;quot; = worn, &lt;br /&gt;
**** &amp;quot;W&amp;quot; = wearable but not worn &lt;br /&gt;
**** &amp;quot;l&amp;quot; = wielded &lt;br /&gt;
**** &amp;quot;g&amp;quot; = groupable&lt;br /&gt;
**** &amp;quot;c&amp;quot; = container&lt;br /&gt;
**** &amp;quot;t&amp;quot; = takeable&lt;br /&gt;
**** &amp;quot;m&amp;quot; = monster&lt;br /&gt;
**** &amp;quot;d&amp;quot; = dead monster&lt;br /&gt;
**** &amp;quot;x&amp;quot; = should not be targeted (guards, ...)&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.List { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;items&amp;quot;: [ { &amp;quot;id&amp;quot;: &amp;quot;12807&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a personal journal&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;scroll&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;l&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } ] }&lt;br /&gt;
** Char.Items.Add&lt;br /&gt;
*** Informs the client about an item being added to the specified location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an object with the same structure as one item from the items array of List&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;c&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Add { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
** Char.Items.Remove&lt;br /&gt;
*** Informs the client about an item being removed from the location&lt;br /&gt;
*** Message body is an object with keys &amp;quot;location&amp;quot; and &amp;quot;item&amp;quot;&lt;br /&gt;
*** Location is same as with List, item is an integer value identifying the item&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;room&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;239602&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an elegant white letter&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;container&amp;quot;, &amp;quot;attrib&amp;quot;: &amp;quot;t&amp;quot; } }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Remove { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;303060&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;a gold nugget&amp;quot;, &amp;quot;icon&amp;quot;: &amp;quot;commodity&amp;quot; } }&lt;br /&gt;
** Char.Items.Update&lt;br /&gt;
*** Informs the client about an item&#039;s attributes being changed - only sent for inventory items&lt;br /&gt;
*** Message body syntax the same as with Add&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Items.Update { &amp;quot;location&amp;quot;: &amp;quot;inv&amp;quot;, &amp;quot;item&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;60572&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;an ornate steel rapier&amp;quot; } }&lt;br /&gt;
&lt;br /&gt;
==== Char.Skills ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Char.Skills.Get&lt;br /&gt;
*** Sent by client to request skill information&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot; and &amp;quot;name&amp;quot;&lt;br /&gt;
*** If both group and name is provided, the server will send Char.Skills.Info for the specified skill&lt;br /&gt;
*** If group is provided but name is not, the server will send Char.Skills.List for that group&lt;br /&gt;
*** Otherwise the server will send Char.Skills.Groups&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;Perception&amp;quot;}&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Get {&amp;quot;group&amp;quot;:&amp;quot;perception&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Deathsight&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Char.Skills.Groups&lt;br /&gt;
*** Groups of skills available to the character&lt;br /&gt;
*** Sent by server on request or at any time (usually if the list changes)&lt;br /&gt;
*** For IRE games, groups are skills like Survival or Elemancy&lt;br /&gt;
*** Message body is an array including the name and current rank of each skill the character has.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Groups [ { &amp;quot;name&amp;quot;: &amp;quot;Perception&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Transcendent (100%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Survival&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Weaponry&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Tattoos&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evasion&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Engineering&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Taming&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Concoctions&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Toxins&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Smithing&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Malignosis&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (1%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Necromancy&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Inept (0%)&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;Evileye&amp;quot;, &amp;quot;rank&amp;quot;: &amp;quot;Adept (40%)&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.List&lt;br /&gt;
*** List of skills in a group available to the character&lt;br /&gt;
*** Sent by server on request only&lt;br /&gt;
*** For IRE games, this is the list visible on AB &amp;lt;skillname&amp;gt;&lt;br /&gt;
*** Message body is an object with keys &amp;quot;group&amp;quot;, &amp;quot;list&amp;quot;, and &amp;quot;desc&amp;quot;.&lt;br /&gt;
*** The list value is an array of strings, each being the name of one skill&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.List { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;list&amp;quot;: [ &amp;quot;Looking&amp;quot;, &amp;quot;Glancing&amp;quot;, &amp;quot;Secrets&amp;quot;, &amp;quot;Decaylist&amp;quot;, &amp;quot;Squinting&amp;quot;, &amp;quot;Flyers&amp;quot;, &amp;quot;Observe&amp;quot;, &amp;quot;Farsight&amp;quot;, &amp;quot;Containerlist&amp;quot;, &amp;quot;Vigilance&amp;quot;, &amp;quot;Treewatch&amp;quot;, &amp;quot;Deathsight&amp;quot;, &amp;quot;Pipelist&amp;quot;, &amp;quot;Elixlist&amp;quot;, &amp;quot;Search&amp;quot;, &amp;quot;Letterlist&amp;quot;, &amp;quot;Booklist&amp;quot;, &amp;quot;Skywatch&amp;quot;, &amp;quot;PowerNodes&amp;quot;, &amp;quot;Keylist&amp;quot;, &amp;quot;Alertness&amp;quot;, &amp;quot;Rites&amp;quot;, &amp;quot;Traps&amp;quot;, &amp;quot;Magicklist&amp;quot;, &amp;quot;Nightsight&amp;quot;, &amp;quot;Hypersight&amp;quot;, &amp;quot;Thirdeye&amp;quot;, &amp;quot;Tattoos&amp;quot;, &amp;quot;Discernment&amp;quot;, &amp;quot;Wormholes&amp;quot;, &amp;quot;Rivensense&amp;quot;, &amp;quot;Contemplation&amp;quot;, &amp;quot;Scan&amp;quot;, &amp;quot;Telesense&amp;quot;, &amp;quot;Appraise&amp;quot;, &amp;quot;Trueassess&amp;quot;, &amp;quot;Artifactlist&amp;quot;, &amp;quot;Warning&amp;quot;, &amp;quot;Viewshrine&amp;quot;, &amp;quot;Landsense&amp;quot; ], &amp;quot;descs&amp;quot;: [ &amp;quot;Gain knowledge of your immediate surroundings.&amp;quot;, &amp;quot;See summarized information about your surroundings.&amp;quot;, &amp;quot;Discover hidden exits.&amp;quot;, &amp;quot;How much more time do those items have?&amp;quot;, &amp;quot;See extended distances in your line of sight.&amp;quot;, &amp;quot;Take notice of those in the skies.&amp;quot;, &amp;quot;Gain information about your extended surroundings.&amp;quot;, &amp;quot;Attempt to locate another player from afar.&amp;quot;, &amp;quot;What do you have in your containers?&amp;quot;, &amp;quot;Increase your resistance to hypnosis.&amp;quot;, &amp;quot;Watch the forest canopies for movement.&amp;quot;, &amp;quot;Attune yourself to the Underworld.&amp;quot;, &amp;quot;Scan your pipes with utmost speed.&amp;quot;, &amp;quot;Quickly discover what elixirs and salves you are holding.&amp;quot;, &amp;quot;Search your location for hidden beings.&amp;quot;, &amp;quot;Quick glance of all your letters.&amp;quot;, &amp;quot;Scan the titles of books you own.&amp;quot;, &amp;quot;Watch the skies for movement.&amp;quot;, &amp;quot;Detect the nodes of power in your area.&amp;quot;, &amp;quot;See a list of your keys and which doors they open.&amp;quot;, &amp;quot;Heightened awareness of your surroundings.&amp;quot;, &amp;quot;View the holy rites operating in your location.&amp;quot;, &amp;quot;The ability to search for traps in your location.&amp;quot;, &amp;quot;Check the status of your magickal items.&amp;quot;, &amp;quot;Use infravision to see in the dark.&amp;quot;, &amp;quot;See the actions of cloaked players.&amp;quot;, &amp;quot;Give yourself the power of the third eye.&amp;quot;, &amp;quot;Discover what tattoos are on another player.&amp;quot;, &amp;quot;Discover what defences are protecting an individual.&amp;quot;, &amp;quot;The ability to sense wormholes in your location.&amp;quot;, &amp;quot;Sense the bodies of the recently slain.&amp;quot;, &amp;quot;Perceive the state of another&#039;s mental strength.&amp;quot;, &amp;quot;Seekout the locations of your allies and enemies.&amp;quot;, &amp;quot;Heighten your awareness to telepathic attempts.&amp;quot;, &amp;quot;Quickly take note of someone&#039;s carried possessions.&amp;quot;, &amp;quot;Gain more detailed information concerning your foe.&amp;quot;, &amp;quot;See what artifact powers surround an individual.&amp;quot;, &amp;quot;Watch for the prying eyes of the enemy.&amp;quot;, &amp;quot;Gain a detailed understanding of a shrine.&amp;quot;, &amp;quot;The ability to recognize mortals entering the realm.&amp;quot; ] }&lt;br /&gt;
&lt;br /&gt;
** Char.Skills.Info&lt;br /&gt;
*** Information about a single skill, only sent upon request&lt;br /&gt;
*** Message body is an object, keys are &amp;quot;group&amp;quot;, &amp;quot;skill&amp;quot;, and &amp;quot;info&amp;quot;, values are strings&lt;br /&gt;
*** Group and skill identify the request, info is a description (usually multi-line) of the skill&#039;s functionality and usage&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Char.Skills.Info { &amp;quot;group&amp;quot;: &amp;quot;perception&amp;quot;, &amp;quot;skill&amp;quot;: &amp;quot;deathsight&amp;quot;, &amp;quot;info&amp;quot;: &amp;quot;Syntax: DEATHSIGHT\n        RELAX DEATHSIGHT\n\nUsing this ability, your mind is now capable of attuning itself to the realm of the dead. While doing so, you will be alerted whenever anyone dies.&amp;quot; }&lt;br /&gt;
==== Comm.Channel ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** Request for the server to send Comm.Channel.Players&lt;br /&gt;
*** No message body.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players &amp;quot;&amp;quot;&lt;br /&gt;
** Comm.Channel.Enable&lt;br /&gt;
*** Used to tell the game to turn on a character channel without typing in a command line command.&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;newbie&amp;quot;&lt;br /&gt;
*** Example: Comm.Channel.Enable &amp;quot;clt Consortium&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Comm.Channel.Players&lt;br /&gt;
*** List of players and organizations (city, guild, ...) that they share with this player&lt;br /&gt;
*** Message body is an array with each element describing one player&lt;br /&gt;
*** Each element is an object with keys &amp;quot;name&amp;quot; and &amp;quot;channels&amp;quot;, name is a string, channels is an array&lt;br /&gt;
*** The channels array may be omitted if empty; if given, it is a list of organization names&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [{&amp;quot;name&amp;quot;: &amp;quot;Player1&amp;quot;, &amp;quot;channels: [&amp;quot;Some city&amp;quot;, &amp;quot;Some guild&amp;quot;]}, {&amp;quot;name&amp;quot;: &amp;quot;Player2&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Players [ { &amp;quot;name&amp;quot;: &amp;quot;Ahkan&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot; ] }, { &amp;quot;name&amp;quot;: &amp;quot;Sharatar&amp;quot;, &amp;quot;channels&amp;quot;: [ &amp;quot;The City of Stavenn&amp;quot;, &amp;quot;The Revenants&amp;quot; ] } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.List&lt;br /&gt;
*** List of communication channels available to the player, sent on login/negotiation and if changed&lt;br /&gt;
*** Message body is an array of objects, each object representing one channel&lt;br /&gt;
*** Each object has keys &amp;quot;name&amp;quot;, &amp;quot;caption&amp;quot; and &amp;quot;command&amp;quot; - name is internal name, caption is player-visible name, command is command used to communicate over this channel&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [{&amp;quot;name&amp;quot;:&amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some city&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;ct&amp;quot;}, {&amp;quot;name&amp;quot;:&amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;:&amp;quot;Some guild&amp;quot;, &amp;quot;command&amp;quot;:&amp;quot;gt&amp;quot;}]&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.List [ { &amp;quot;name&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Newbie&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;newbie&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;market&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Market&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;market&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;ct&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Stavenn&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;ct&amp;quot; }, { &amp;quot;name&amp;quot;: &amp;quot;gt&amp;quot;, &amp;quot;caption&amp;quot;: &amp;quot;Revenants&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;gt&amp;quot; } ]&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Start&lt;br /&gt;
*** Informs the client that text that follows is something said over a communication channel&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** For tells from/to another player, the channel name is &amp;quot;tell Name&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Start &amp;quot;ct&amp;quot;&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039; :Comm.Channel.Start &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
** Comm.Channel.End&lt;br /&gt;
*** Ends a channel text started by Comm.Channel.Start&lt;br /&gt;
*** Message body is a text containing the channel name&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.End &amp;quot;tell Jeremy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** Comm.Channel.Text&lt;br /&gt;
*** The text of the communication that you heard, who spoke, and which channel it was on &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text   {   &amp;quot;channel&amp;quot;:   &amp;quot;says&amp;quot;,   &amp;quot;talker&amp;quot;:   &amp;quot;Tecton&amp;quot;,   &amp;quot;text&amp;quot;: &amp;quot;(Tecton the Terraformer says, \&amp;quot;Are we releasing dragon lairs or the phase artefact first?\&amp;quot;&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;tell Jeremy&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;33mYou tell Jeremy, \&amp;quot;Hi.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Comm.Channel.Text { &amp;quot;channel&amp;quot;: &amp;quot;newbie&amp;quot;, &amp;quot;talker&amp;quot;: &amp;quot;Olad&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;\u001b[0;1;32m(Newbie): You say, \&amp;quot;Hello.\&amp;quot;\u001b[0;37m&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
==== Room ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Room.Info&lt;br /&gt;
*** Contains information about the room that the player is in. Some of these may be IRE-specific&lt;br /&gt;
*** Message body is an object with the following keys&lt;br /&gt;
**** &amp;quot;num&amp;quot; - number identifying the room&lt;br /&gt;
**** &amp;quot;name&amp;quot; - string containing the brief description&lt;br /&gt;
**** &amp;quot;area&amp;quot; - string containing area name&lt;br /&gt;
**** &amp;quot;environment&amp;quot; - string containing environment type (&amp;quot;Hills&amp;quot;, &amp;quot;Ocean&amp;quot;, ...)&lt;br /&gt;
**** &amp;quot;coords&amp;quot; - room coordinates (string of numbers separated by commas - area,X,Y,X,building, building is optional&lt;br /&gt;
**** &amp;quot;map&amp;quot; - map information - URL pointing to a map image, followed by X and Y room (not pixel) coordinates on the map&lt;br /&gt;
**** &amp;quot;details&amp;quot; - array holding further information about a room - shop,bank,...&lt;br /&gt;
**** &amp;quot;exits&amp;quot; - object containing exits, each key is a direction and each value is the number identifying the target room&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Info {&amp;quot;num&amp;quot;: 12345, &amp;quot;name&amp;quot;: &amp;quot;On a hill&amp;quot;, &amp;quot;area&amp;quot;: &amp;quot;Barren hills&amp;quot;, &amp;quot;environment&amp;quot;: &amp;quot;Hills&amp;quot;, &amp;quot;coords&amp;quot;: &amp;quot;45,5,4,3&amp;quot;, &amp;quot;map&amp;quot;: &amp;quot;www.imperian.com/itex/maps/clientmap.php?map=45&amp;amp;level=3 5 4&amp;quot;, &amp;quot;exits&amp;quot;: { &amp;quot;n&amp;quot;: 12344, &amp;quot;se&amp;quot;: 12336 }, &amp;quot;details&amp;quot;: [ &amp;quot;shop&amp;quot;, &amp;quot;bank&amp;quot; ] }&lt;br /&gt;
** Room.WrongDir&lt;br /&gt;
*** Sent if the player attempts to move in a non-existant direction using the standard movement commands&lt;br /&gt;
*** Upon receiving this message, the client can safely assume that the specified direction does not lead anywhere at this time&lt;br /&gt;
*** Message body is a string with the name if the non-existant exit&lt;br /&gt;
*** Example: Room.WrongDir &amp;quot;ne&amp;quot;&lt;br /&gt;
** Room.Players&lt;br /&gt;
*** Object containing player details, each key is the short name of the player and each value is the full name including titles for the player &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.Players {&amp;quot;tecton&amp;quot;:&amp;quot;Tecton, the Terraformer&amp;quot;, &amp;quot;cardan&amp;quot;:&amp;quot;Cardan, the Curious&amp;quot;}!&lt;br /&gt;
** Room.AddPlayer&lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being added to the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.AddPlayer { &amp;quot;name&amp;quot;: &amp;quot;Cardan&amp;quot;, &amp;quot;fullname&amp;quot;: &amp;quot;(Cardan, the Curious)&amp;quot; }!&lt;br /&gt;
** Room.RemovePlayer &lt;br /&gt;
*** Message body has the same object structure as Room.Players except that it only contains the one player being removed from the room. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: Room.RemovePlayer &amp;quot;Cardan&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Redirect ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** Redirect.Window&lt;br /&gt;
*** Specifies a window to redirect further input to&lt;br /&gt;
*** Message body is a string specifying the window to redirect to&lt;br /&gt;
*** The main window is referred to as &amp;quot;main&amp;quot;, and is the default if the message body is omitted or empty&lt;br /&gt;
*** Example: Redirect.Window &amp;quot;map&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Composer ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Composer.Edit&lt;br /&gt;
*** Sent by the server when the player enters an in-game editor. Body is an object, with keys &amp;quot;title&amp;quot; and &amp;quot;text&amp;quot;. Text contains the current buffer, title is a title that can be shown to the user.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.Edit { &amp;quot;title&amp;quot;: &amp;quot;Composer&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Composer.SetBuffer&lt;br /&gt;
*** Sent by the client upon successfully editing a text which was sent to the client in an IRE.Composer.Edit message earlier&lt;br /&gt;
*** Sending this message only changes the edit buffer, but does not end the editing session&lt;br /&gt;
*** On IRE games, the client may send the command ***save to save a text, or command ***quit to abort editing (IRE.Composer.SetBuffer is not sent in this case) - this behaviour is IRE-specific and is one of the reasons why the Composer module is in the IRE namespace&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Composer.SetBuffer  &amp;quot;This is a bunch of text.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Misc ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Misc.Voted&lt;br /&gt;
*** Informs the game a vote button was clicked.&lt;br /&gt;
*** Example: IRE.Misc.Voted &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Misc.RemindVote&lt;br /&gt;
*** Message sent to remind the player to vote.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.RemindVote &amp;quot;http://www.imperian.com/vote&amp;quot;&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.Achievement&lt;br /&gt;
*** Used to send basic achievement data to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Achievement [{&amp;quot;name&amp;quot;: &amp;quot;HighestLevelAchieved&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;89&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.Misc.URL&lt;br /&gt;
*** Sends a url to the client to open in a window when clicked.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.URL[{&amp;quot;url&amp;quot;: &amp;quot;http://www.imperian.com/tos&amp;quot;, &amp;quot;window&amp;quot;: &amp;quot;ire_game_tos&amp;quot; }]&lt;br /&gt;
&lt;br /&gt;
** IRE.MISC.Tip&lt;br /&gt;
*** Sends a line of text to the client.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Misc.Tip &amp;quot;This is a tip!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== IRE.Rift ====&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Rift.List&lt;br /&gt;
*** contents of a Rift storage&lt;br /&gt;
*** sent upon receiving the IRE.Rift.Request message&lt;br /&gt;
*** message body is an array, with each element being an object containing three keys - &amp;quot;name&amp;quot; is item name, &amp;quot;amount&amp;quot; is a number holding the item&#039;s amount, and &amp;quot;desc&amp;quot; is user-visible description&lt;br /&gt;
** IRE.Rift.Change&lt;br /&gt;
*** sent whenever the item amount in a Rift changes&lt;br /&gt;
*** message body is an object with the same structure as one element of an array sent with the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Rift.Request&lt;br /&gt;
*** asks the server to send the Rift contents using the IRE.Rift.List message&lt;br /&gt;
&lt;br /&gt;
==== IRE.Sound ====&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Sound.Play&lt;br /&gt;
** IRE.Sound.Stop&lt;br /&gt;
** IRE.Sound.Stopall&lt;br /&gt;
** IRE.Sound.Preload&lt;br /&gt;
&lt;br /&gt;
==== IRE.Target ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Target.Set&lt;br /&gt;
*** Sends the currently set target to the server to be used by the internal alias system. &lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
* Sent by server&lt;br /&gt;
&lt;br /&gt;
** IRE.Target.Set &lt;br /&gt;
*** Sends the target the client is trying to set. This is called from cycling targets with tab targeting.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Set &amp;quot;1101&amp;quot;&lt;br /&gt;
** IRE.Target.Info &lt;br /&gt;
*** Sends an array with the current target information.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Target.Info { &amp;quot;id&amp;quot;: &amp;quot;1101&amp;quot;, &amp;quot;short_desc&amp;quot;: &amp;quot;a brawny goblin smith&amp;quot;, &amp;quot;hpperc&amp;quot;: &amp;quot;100%&amp;quot; }&lt;br /&gt;
** IRE.Target.Request&lt;br /&gt;
&lt;br /&gt;
==== IRE.Tasks ====&lt;br /&gt;
&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Tasks.Request &lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Tasks.List&lt;br /&gt;
*** This is used to send a list of quest, tasks, and achievements, depending on what the game supports.&lt;br /&gt;
*** Sends an array of items with the following keys:&lt;br /&gt;
**** id: A numeric identifier&lt;br /&gt;
**** name: The name of the quest, task, or achievement.&lt;br /&gt;
**** type: Is this a quest, task, or achievement.&lt;br /&gt;
**** cmd: The command to get more information for the quest. Good for MXP links.&lt;br /&gt;
**** desc: The description of the event.&lt;br /&gt;
**** status: 0 or 1 based on if it is completed or not.&lt;br /&gt;
**** group: What group should this be assigned to. This is mainly for client display purposes.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Tasks.List [ { &amp;quot;id&amp;quot;: &amp;quot;184&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;For the sake of the village&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;The herbs in Maeven&#039;s garden are painstakingly cared for so that her fellow villagers can stay healthy. She won&#039;t object to borrowing a bit of the magick power the bakuls have, if it can help with her work.\n\nThe bakul herbalist might have something Maeven wants.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;quests&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;quest For the sake of the village&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Current Quests&amp;quot; }, { &amp;quot;id&amp;quot;: &amp;quot;313&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Apostate&amp;quot;, &amp;quot;desc&amp;quot;: &amp;quot;Destroy a Shrine.&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;achievements&amp;quot;, &amp;quot;cmd&amp;quot;: &amp;quot;achievement apostate&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;0&amp;quot;, &amp;quot;group&amp;quot;: &amp;quot;Sects&amp;quot; } ]&lt;br /&gt;
** IRE.Tasks.Update &lt;br /&gt;
** IRE.Tasks.Completed&lt;br /&gt;
&lt;br /&gt;
==== IRE.Time ====&lt;br /&gt;
* Sent by client:&lt;br /&gt;
** IRE.Time.Request&lt;br /&gt;
&lt;br /&gt;
* Sent by server:&lt;br /&gt;
** IRE.Time.List&lt;br /&gt;
*** A list of the current time condition in the game world. &lt;br /&gt;
*** Used in the client to display the the day/night indicator.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.List { &amp;quot;day&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;mon&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;month&amp;quot;: &amp;quot;Letum&amp;quot;, &amp;quot;year&amp;quot;: &amp;quot;98&amp;quot;, &amp;quot;hour&amp;quot;: &amp;quot;41&amp;quot;, &amp;quot;daynight&amp;quot;: &amp;quot;80&amp;quot; }&lt;br /&gt;
** IRE.Time.Update&lt;br /&gt;
*** Used to update time conditions.&lt;br /&gt;
*** &#039;&#039;&#039;Example&#039;&#039;&#039;: IRE.Time.Update { &amp;quot;daynight&amp;quot;: &amp;quot;112&amp;quot; }&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
	<entry>
		<id>https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=651</id>
		<title>Functions</title>
		<link rel="alternate" type="text/html" href="https://nexus.ironrealms.com/index.php?title=Functions&amp;diff=651"/>
		<updated>2016-02-16T20:06:42Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Functions and scripts are the most powerful option that the client has to offer, but also one that is most difficult to use. Functions and scripts are programmed in the [[Javascript]] language. &lt;br /&gt;
&lt;br /&gt;
While we won&#039;t be covering how to code in JavaScript in this section, we&#039;ll cover some of the built-in functions and how to build your own custom code to further expand your reflexes.&lt;br /&gt;
&lt;br /&gt;
== Scripts vs. Functions ==&lt;br /&gt;
* Scripts are specific code blocks that are fired as a result of a reflex being fired. This can be a trigger, alias, or keybind.&lt;br /&gt;
* Functions are re-usable code blocks that can be called from scripts or directly from the client&#039;s input. &lt;br /&gt;
&lt;br /&gt;
== Calling functions ==&lt;br /&gt;
Functions can be called from scripts by using &#039;&#039;&#039;run_function(name, args, package)&#039;&#039;&#039;. As mentioned above, they can also be called directly from the client&#039;s input, so you&#039;ll want to make sure your functions are named in such a way that they do not overlap with in-game commands you may wish to use.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
Scripts and functions are generally self-contained, variables are local to the code block and are cleared when the script or function finishes. To interact with variables used in the [SimplifiedScripting] system, you&#039;ll want to use the built-in modules: get_variable, set_variable etc.&lt;br /&gt;
* Functions called in a trigger receive information about the match: &#039;&#039;&#039;args.text, args.match, args.prefix, args.suffix, args.backrefs[1] ...&#039;&#039;&#039;&lt;br /&gt;
* Scripts receive the backrefs (&#039;&#039;&#039;args[0]., args[1],. args[2], ...&#039;&#039;&#039;) and the current_package variable indicating the active package.&lt;br /&gt;
&lt;br /&gt;
== Built-in modules ==&lt;br /&gt;
=== Commands ===&lt;br /&gt;
* &#039;&#039;&#039;send_command(input, no_expansion)&#039;&#039;&#039; - Send a command to the game. Set no_expansion to 1 to send the exact string to the game without expansion.&lt;br /&gt;
* &#039;&#039;&#039;display_notice(text, fgcolor, bgcolor)&#039;&#039;&#039; - display a notice on the output screen.&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
* &#039;&#039;&#039;get_variable(name)&#039;&#039;&#039; - Retrieve the value of a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;set_variable(name, val)&#039;&#039;&#039; - Set a variable for the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;delete_variable(name)&#039;&#039;&#039; - Delete a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;inc_variable(name, by)&#039;&#039;&#039; - Increment a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;dec_variable(name, by)&#039;&#039;&#039; - Decrement a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;mul_variable(name, by)&#039;&#039;&#039; - Multiply a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
* &#039;&#039;&#039;div_variable(name, by)&#039;&#039;&#039; - Divide a variable from the client&#039;s simplified scripting system.&lt;br /&gt;
=== Reflex Manipulation ===&lt;br /&gt;
* &#039;&#039;&#039;reflex_find_by_name(type, name, case_sensitive, enabled_only, package))&#039;&#039;&#039; - Search for a specific reflex.&lt;br /&gt;
** &#039;&#039;type&#039;&#039; - Type of reflex: &#039;alias&#039;, &#039;trigger&#039;, &#039;keybind&#039;, ...&lt;br /&gt;
** &#039;&#039;name&#039;&#039; - Name to search for&lt;br /&gt;
** &#039;&#039;case_sensitive&#039;&#039; - Whether the name needs to match case exactly&lt;br /&gt;
** &#039;&#039;enabled_only&#039;&#039; - Set if disabled reflexes (including reflexes in disabled groups) should be ignored&lt;br /&gt;
** &#039;&#039;package&#039;&#039; - Name if a package to search in; omit if searching in the main list&lt;br /&gt;
* &#039;&#039;&#039;reflex_enable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
* &#039;&#039;&#039;reflex_disable(reflex)&#039;&#039;&#039; - Enable a reflex (reflex is as returned by reflex_find_by_name above).&lt;br /&gt;
&lt;br /&gt;
=== Output Manipulation (Trigger Scripts)===&lt;br /&gt;
* &#039;&#039;&#039;current_text()&#039;&#039;&#039; - An unformatted version of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;gag_line()&#039;&#039;&#039; - Hide the line that fired the trigger from the output window.&lt;br /&gt;
* &#039;&#039;&#039;colorize_current_line(start, length, fgcolor, bgcolor)&#039;&#039;&#039; - Colorize/highlight a specified part of the line that fired the trigger.&lt;br /&gt;
* &#039;&#039;&#039;replace_current_line(start, length, newtext, fgcolor, bgcolor)&#039;&#039;&#039; - Replace a party of the current line with the specified text and color.&lt;br /&gt;
&lt;br /&gt;
=== Misc. ===&lt;br /&gt;
* &#039;&#039;&#039;to_number(val)&#039;&#039;&#039; - Convert a string number to a value.&lt;br /&gt;
&lt;br /&gt;
== Default functions ==&lt;br /&gt;
&lt;br /&gt;
There are three functions which are called automatically by the client. These are &#039;&#039;&#039;onLoad&#039;&#039;&#039;, called when the settings are loaded, &#039;&#039;&#039;onGMCP&#039;&#039;&#039;, called upon receiving a GMCP message, and &#039;&#039;&#039;onBlock&#039;&#039;&#039;, called upon receiving each text block, allowing you to perform manipulations on it, or kickstart functionality that you want to execute on every prompt.&lt;br /&gt;
The function does not receive any data.&lt;br /&gt;
&lt;br /&gt;
The onGMCP function receives two arguments - &#039;&#039;&#039;args.gmcp_method&#039;&#039;&#039; is the GMCP message name, &#039;&#039;&#039;args.gmcp_args&#039;&#039;&#039; are the parameters (if any).&lt;br /&gt;
&lt;br /&gt;
The onBlock function can make use of the current_block variable, which holds the individual lines (current_block[0] is the first one, current_block[1] is the second one, and so on). The manipulation methods described with triggers are all applicable on these as well.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
[[GMCP Data|GMCPData]]: This example reads some data coming over via [[GMCP]] and assigns it to variables.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
	</entry>
</feed>