| Introduction | About goal for operator hierarchy |
| Browsing hierarchy | How to find operations server supports |
| op | Base operator for all operators |
| action | Base operator for operations that might have effects |
| create | Create new things from nothing. |
| combine | Combine existing objects into new objects |
| divide | Divide existing object into pieces |
| spell | Optional tag |
| communicate | Base operator for all kind of communication |
| talk | Talking |
| set | Sets all attributes for existing entity |
| change | Change existing attributes and/or create new attributes |
| move | Change position |
| attack | Generic attack operation |
| use | Use something |
| skill | Use some skill |
| get | Generic operation for getting info about things |
| perceive | Generic base operation for perceiving things by eyes, ears, etc... |
| look | Looking at something |
| listen | Listen something |
| sniff | Sniff something |
| touch | Touch something |
| login | Logging into server |
| delete | Delete something |
| info | Info about something |
| perception | Character perceives something |
| sight | Character sees something |
| appear | Something appears |
| disappear | Something disappears |
| sound | Character hears something |
| smell | Character hears something |
| sense | Character senses something (with fingers usually) |
| imaginary | Placeholder for perceptions of unimplemented actions |
| error | Something went wrong |
Base operator for operations that might have effects.
Create new things from nothing using this operator. Map editor is main user for this.
Parameters: entity describing object that is being created.
Example:
<op><id>create</id>
<from>map-editor</from>
<ent>
<attr name="name">Axe</attr>
<attr name="attack" type="int">3</attr>
</ent>
</op>
Combine existing objects into new objects. This is how normal characters create objects.
Parameters: entity describing object that is being created and list of entities that are used as raw material.
<op><id>combine</id>
<ent>
<type><id>axe</id></type>
<attr name="name">Bjorn's axe</attr>
</ent>
<id>Wood_8898</id>
<id>Iron_6578</id>
</op>
Divide existing object into pieces. One of the pieces might be original object modified.
Parameters: id of original object and entities describing pieces.
<op><id>divide</id>
<id>money12345</>
<ent>
<id href="money12345"/>
<attr name="amount" type="int">10</attr>
</ent>
<ent>
<attr name="amount" type="int">110</attr>
</ent>
</op>
Parameters: communication entity.
Example: see talk
Parameters: sentence(s) entity.
Example:
<op>
<id>talk</id>
<ent>
<attr name="say">What has happened there?</attr>
</ent>
</op>
Talking out of game is same, except you use player id instead of character id.
Sets all attributes for existing entity.
Parameters: entity with id and new attributes.
Example:
<op><id>set</id>
<ent>
<id>9899</id>
<attr name="HP" type="int">50</attr>
<attr name="height" type="float">1.8</attr>
<attr name="width" type="float">0.3</attr>
</ent>
</op>
Change existing attributes and/or create new attributes. Difference with set is that anything previously defined attribute not touched here remain intact.
Parameters: entity with id and changed/new attributes.
Example:
<op><id>change</id>
<ent>
<id>9899</id>
<attr name="HP" type="int">30</attr>
</ent>
</op>
Change position.
Parameters: entity with id and new position.
Example:
<op><id>move</id>
<ent>
<id>9899</id>
<loc><id>11</id><coords>12.3,3,0</coords></loc>
</ent>
</op>
More about movement here.
Derived from move.
Generic attack operation. Base operation for game specific attack operations (like swing, etc...).
Parameters: entity with id, new position and maybe some other attributes.
Example:
<op><id>attack</id>
<ent>
<id>Sword_99</id>
<loc><id>Opponent_11</id><coords>0.2,0.2,1.5</coords></loc>
</ent>
</op>
Use something (tool, skill etc..)
Parameters: id for entity to be used.
Example:
<op><id>use</id>
<id>magic_wand_24</id>
</op>
Use some skill.
Parameters: id of skill and optionally target id's.
Example:
<op><id>skill</id>
<id>woodworking</id>
<id>target_wood_24903</id>
</op>
Generic operation for getting info about things.
Parameters: id of target entity.
Example:
<op><id>get</id>
<id>elf_type_id_45</id>
</op>
Browsing operator hierarchy example:
First start from operator hierarchy root (see op):
<op>
<id>get</id>
<id>op</id>
</op>
Answer might be:
<op>
<id>info</id>
<ent>
<id>op</id>
<instance>
<id>action</id>
<id>info</id>
</instance>
<attr name="description">Base operator for all operators</attr>
</ent>
</op>
Then you can ask about action and info:
<op>
<id>get</id>
<id>action</id>
</op>
<op>
<id>get</id>
<id>info</id>
</op>
Etc...
Generic base operation for perceiving things by eyes, ears, etc...
Parameters: id of target entity.
Example:
<op><id>perceive</id>
<id>elf_3545</id>
</op>
Looking at something.
Parameters: id of target entity (optional).
Example:
<op><id>look</id>
<id>elf_3545</id>
</op>
Listen (something).
Parameters: id of target entity (optional).
Example:
<op><id>listen</id>
<id>elf_3545</id>
</op>
Sniff something.
Parameters: id of target entity (optional).
Example:
<op><id>sniff</id>
<id>flower_3545</id>
</op>
Touch something.
Parameters: id of target entity.
Example:
<op><id>touch</id>
<id>cloth_3545</id>
</op>
Operation for logging into server.
Parameters: entity with player name and password attribute.
Example:
<op><id>login</id>
<ent>
<id>JoeBlatz</id>
<attr name="password">Rqv67.%</attr>
</ent>
</op>
Delete something.
Parameters: id of entity to be deleted.
Example:
<op><id>delete</id>
<id>foo_bar_344</id>
</op>
Info about something.
Parameters: info entity.
Example:
<op><id>info</id>
<ent>
<attr name="msg">Here is some info</attr>
</ent>
</op>
Character perceives something.
Parameters: perceived thing. Base operator for all kind of perceptions.
Example:
<op><id>perception</id>
<id>tree_8374</id>
</op>
Character sees something.
Parameters: object or event character sees.
Common example:
<op><id>sight</id>
<ent>
<id>grass1</id>
<stamp>989.24</stamp>
</ent>
</op>
Reply for looking at 'grass1':
<op><id>sight</id>
<ent>
<id>grass1</id>
<type><id>terrain</id></type>
<contains>
<id>path1</id>
<id>tree1</id>
</contains>
<attr name="description">Grass plains</attr>
<attr name="polygon" type="coords">
<coords>0,0</coords><coords>10,0</coords><coords>10,10</coords>
<coords>0,10</coords><coords>0,0</coords>
</attr>
</ent>
</op>
Event example:
<op><id>sight</id>
<op><id>move</id>
<ent>
<id>orc_23498</id>
<loc><id>grass1</id><coords>0.5,3.0,0.0</coords></loc>
</ent>
</op>
</op>
Character sees something appearing: it literally appears or has it come in visible range.
Parameters: object or event character sees.
Example:
<op><id>appear</id>
<ent>
<id>grass1</id>
<stamp>989.24</stamp>
</ent>
</op>
Character sees something disappearing: it literally disappears or has it gone too far to be visible.
Parameters: object or event character sees.
Example:
<op><id>disappear</id>
<ent>
<id>grass1</id>
<stamp>989.24</stamp>
</ent>
</op>
Character hears something.
Parameters: thing character heard.
Example (every operation might have from, to and time tags, not only this operation):
<op><id>sound</id>
<from>sentry_34</from>
<ent>
<attr name="say">What has happened there?</attr>
</ent>
</op>
Character smells something.
Parameters: thing character smells.
Example (every operation might have from, to and time tags, not only this operation):
<op><id>sound</id>
<from>flower_34</from>
<ent>
<attr name="smell">sweet</attr>
</ent>
</op>
Character senses something (with fingers usually).
Parameters: thing character senses.
<op><id>sound</id>
<ent>
<id>cloth_34</id>
<attr name="surface type">rough</attr>
</ent>
</op>
When something is not yet implemented in server, then character can pretend to do something ;-)
Parameters: event that is supposed to happen.
Example:
<op><id>imaginary</id>
<id>some_unimplemented_action</id>
</op>
Something went wrong.
Parameters: entity describing what went wrong.
Example:
<op><id>error</id>
<ent>
<attr name="op" type="id">foo</attr>
<attr name="msg">Unknown operation</attr>
</ent>
</op>