| <<O>> Difference Topic UsingTheAreaEngine (r1.18 - 04 Feb 2008 - FantoM) |
| Added: | ||||||||
| > > |
Monster Modules
| |||||||
| <<O>> Difference Topic UsingTheAreaEngine (r1.17 - 02 Jun 2007 - ZohaR) |
| Changed: | |
| < < | [specialobjects] |
| > > | [objects] |
| Changed: | |
| < < |
The [specialobjects] section |
| > > |
The [objects] section |
| Changed: | |
| < < | The [specialobjects] section is used to manage the placement of objects that are not defined within the area file; like hand-coded, or specially-coded monsters and treasures, perhaps created with the Blob. |
| > > | The [objects] section is used to manage the placement of objects that are not defined within the area file; like hand-coded, or specially-coded monsters and treasures, perhaps created with the Blob. |
| Changed: | |
| < < | The [specialobjects] section is is broken up into a series of individual objectdefinitions. Each description starts with a line that begins with object: |
| > > | The [objects] section is is broken up into a series of individual objectdefinitions. Each description starts with a line that begins with object: |
| Changed: | |
| < < | [specialobjects] |
| > > | [objects] |
| <<O>> Difference Topic UsingTheAreaEngine (r1.16 - 10 Apr 2007 - FantoM) |
| Added: | |||||
| > > |
| ||||
| <<O>> Difference Topic UsingTheAreaEngine (r1.15 - 19 Mar 2007 - FantoM) |
| Changed: | |
| < < |
|
| > > |
|
| <<O>> Difference Topic UsingTheAreaEngine (r1.14 - 14 Mar 2007 - FantoM) |
| Deleted: | |
| < < | This needs completing: |
| Changed: | |
| < < | ToDo? * domain |
| > > |
An external room block is used to tell the area engine about a room which exists outside the current area.
Examples include rooms that have been hand-coded by a wizard and rooms within other areas controlled by the area engine.
When linking to a room which has been hand coded by a wizard (or builder) you must specify:
|
| Added: | |
| > > |
When linking to a room which is part of another area-engine controlled area you must specify:
|
| <<O>> Difference Topic UsingTheAreaEngine (r1.13 - 07 Mar 2007 - FantoM) |
| Changed: | ||
| < < | The specified MODULE_NAME is the most important bit - it determines which module you are using, and thus what advanced effect you are applying. | |
| > > |
or more simply:
| |
| Changed: | ||
| < < | The KEY/VALUE pairs are used to configure the module. For example in the "exit" module called "guild_block", there is a keys which indicate which guild you have to be in to be able to use the exit. | |
| > > | The specified MODULE_NAME is the most important bit - it determines which module you are using, and thus what advanced effect you are applying. The next most important things is the pair of braces {}. The opening brace MUST appear on the end of the line containing the MODULE_NAME, and the closing brace MUST appear on a line of its own. The KEY/VALUE pairs are used to configure the module. For example in the "exit" module called "guild_block", there is a keys which indicate which guild you have to be in to be able to use the exit, and in the "exit" module called "door" there is a key to indicate whether the door is lockable. | |
| Changed: | ||
| < < | The following is an example of using the "guild_block" module to stop non-thieves from using the exit going "east" from "room1" to "room2". | |
| > > | The following is an example of using the "guild_block" module to stop non-thieves from using the exit going "east" from "room1" to "room2", and the "door" module to make the exit a steel gate. | |
| Changed: | ||
| < < | # use 'guild_block' module to stop non-thieves | |
| > > |
# use 'door' module to add a gate
door {
| |
| <<O>> Difference Topic UsingTheAreaEngine (r1.12 - 06 Mar 2007 - FantoM) |
| Changed: | |||||
| < < | # and closes | ||||
| > > | # and closes. See the 'door' exit module for help on how to do this. | ||||
| Deleted: | |||||
| < < | ToDo?: Describe how to define a door. something like type: door { adj: wooden long: A large wooden door. locked: 0 key: front_door_key } | ||||
| Added: | |||||
| > > |
| ||||
| <<O>> Difference Topic UsingTheAreaEngine (r1.11 - 28 Feb 2007 - FantoM) |
| Changed: | |
| < < | ToDo? |
| > > | This needs completing: * short (brief description) * long (verbose description) * light (0 for dark, 1 for daylight) * inside (0 for outside, 1 for inside) * chat (a message that displays occassionally in the room). Can have many of these * item (an item you can look at). Can have many of these. Format is "itemname":description. You can have the itemname several times and the user will get a randomly chosen one of the descriptions You can have a description of ##otheritemname, then the item is considered to be using the description of the "otheritem" |
| <<O>> Difference Topic UsingTheAreaEngine (r1.10 - 21 Jan 2007 - FantoM) |
| Added: | ||||||
| > > |
Advanced stuffSometimes, or probably reguarly, you want to do more than just make a map and put some monsters and objects in it. For example you might want exits to only be traversable if a certain monster is dead, or you might want a weapon to have a certain special attack, or ability when wielded. This advanced functionality is provided through the use of extension modules . Extension modules are things that you can use on almost anything facet in the Area Engine to make it behave in new and exciting ways. Possible "targets" for extension modules are:
Available ModulesThe actual modules available will grow over time, and this page is likely to fall out of date. But at the time of writing the following modules exist.Exit Modules
Module exampleThe following is an example of using the "guild_block" module to stop non-thieves from using the exit going "east" from "room1" to "room2".
| |||||
| <<O>> Difference Topic UsingTheAreaEngine (r1.9 - 19 Jan 2007 - FantoM) |
| Changed: | |
| < < | [exitnames] # This section defines exit names/doors/etc |
| > > | [exits] # This section defines special exits - doors/blocking/etc |
| Changed: | |
| < < |
The [exitnames] section |
| > > |
The [exits] section |
| Changed: | |
| < < | The [exitnames] section is sort of optional. |
| > > | The [exits] section is sort of optional. |
| Changed: | |
| < < | In this section you define the details of exits. At this time you can only define the "full name" for an exit. |
| > > |
In this section you define the details of exits. Details include things like
|
| Changed: | |
| < < | So, for example, in the map above there are exits described as "e", "w" and so on. In this section you can define the full detail of "east" and "west". |
| > > | So, for example, in the map above there are exits described as "e", "w" and so on. By default this means the exits in the rooms will be exactly that: "e" and "w", not "east" and "west". |
| Changed: | |
| < < | More interestingly the definition for room "lounge" has an exit called "frontdoor", which leads to the outside. For simplicity we could add an entry into the [exitnames] which says "frontdoor" is "east". The player would then never see an exit called "frontdoor", and the lounge would contain an "east" exit. |
| > > | More interestingly the definition for room "lounge" has an exit called "frontdoor", which leads to the outside. It seems unlikely that we want the player to see that - rather we want them to see an "east" exit, and for it to be a wooden door. |
| Added: | |
| > > | The following shows the configuration for the "frontdoor" exit |
| Changed: | |
| < < | [exitnames] # define normal directions e=east w=west n=north s=south u=up d=down |
| > > | [exits] |
| Changed: | |
| < < | frontdoor=east |
| > > | exit: frontdoor direction: east ToDo?: Describe how to define a door. something like type: door { adj: wooden long: A large wooden door. locked: 0 key: front_door_key } |
| <<O>> Difference Topic UsingTheAreaEngine (r1.8 - 19 Jan 2007 - FantoM) |
| Deleted: | ||
| < < | [specialrooms] # This section manages links to hand-coded rooms | |
| Added: | ||
| > > | # and defines the external rooms (links to other areas) | |
| Changed: | ||
| < < |
The [specialrooms] section | |
| > > |
The [rooms] section | |
| Changed: | ||
| < < | The [specialrooms] section is used to define rooms that are not to be controlled by the area engine, but are linked to by the rest of the map. | |
| > > | The [rooms] section defines the appearance of rooms - the description, items, light levels, etc. This section DOES NOT define the exits/connections between rooms - that is done in the [map] section. | |
| Changed: | ||
| < < | In our example map above the "outside" room is such an example. It is not to be created by the area engine, but we want the "lounge" to be able to connect to it. | |
| > > | The [rooms] section is broken up into a series of individual room descriptions. Each room description can apply to one or more of the rooms which are defined in the [map] section. This is deliberately done to allow you to use a generic room description for multiple rooms in your area. | |
| Changed: | ||
| < < | At this time it is only possible to link to hand-coded rooms such as those created by the blob. It is not possible to link to rooms in a different map controlled by the area engine. | |
| > > | The [rooms] section also identifies rooms that are outside your area, or have been specially hand-coded by a wizard. You need to identify these rooms and tell the Area Engine how to find them so that your rooms can link to the rest of the mud. | |
| Changed: | ||
| < < | To link the lounge to a hand-coded room called "thestreet.c" would require the following: | |
| > > |
Rooms that are part of your areaEach such room description starts with a line that begins with room: All subsequent lines until the next room: (or external ) are considered to be part of the room description. | |
| Changed: | ||
| < < |
| |
| > > | [rooms] room: # this is the first room description # and so is this | |
| Changed: | ||
| < < |
| |
| > > | room: # this is the description for the next room | |
| Changed: | ||
| < < |
The [rooms] sectionThe [rooms] section defines the appearance of rooms - the description, items, light levels, etc. This section DOES NOT define the exits/connections between rooms - that is done in the [map] section. The [rooms] section is broken up into a series of individual room descriptions. Each room description can apply to one or more of the rooms which are defined in the [map] section. This is deliberately done to allow you to use a generic room description for multiple rooms in your area. | |
| > > |
Rooms that are outside your area or are hand codedIn our example map above the "outside" room is such an example. It is not to be created by the area engine, but we want the "lounge" to be able to connect to it. | |
| Changed: | ||
| < < | Each room description starts with a line that begins with room: All subsequent lines until the next room: are considered to be part of the room description. | |
| > > | Each external room description starts with a line that begins with external: . All subsequent lines until the next room: or external are considered to be part of identification of the external room. | |
| Added: | ||
| > > | external: outside # this is the 'outside' room and is a room that is probably a room in an adjoining area. # The Area Engine will expect to be told where to find the file/map for the external room. | |
| Changed: | ||
| < < | The Area Engine uses room descriptions whenever it needs to create a room. | |
| > > | The Area Engine uses room descriptions whenever it needs to create a room - it does not use this process when linking to external rooms. | |
| Changed: | ||
| < < | The rooms that get created are totally controlled by the [map] section. | |
| > > | Putting a room in the [rooms] section doesn't cause the room to be created, the actual rooms that get created are controlled by the [map] section. The Area Engine examines the [map] section to work out which rooms should exist. | |
| Changed: | ||
| < < |
| |
| > > |
| |
| Changed: | ||
| < < | The important thing to understand is how the Area Engine performs the second step - the process of working out which room descriptions can apply to a given room. It is possible for you to create an area with a single room description which can apply to all rooms, it is also possible to create an area in which each room has only a single applicable room description (in which case you have as many room descriptions as you do rooms in your [map]), and anywhere in-between. | |
| > > | The important thing to understand is how the Area Engine performs the third step - the process of working out which room descriptions can apply to a given room. It is possible for you to create an area with a single room description which can apply to all rooms, it is also possible to create an area in which each room has only a single applicable room description (in which case you have as many room descriptions as you do rooms in your [map]), and anywhere in-between. | |
| Added: | ||
| > > | # This tells the Area Engine where to find the 'outside' room. # It tells it that it is the 'street1' room in the 'town' domain. external: outside domain: DOM_TOWN file: street1 | |
| Added: | ||
| > > |
What can go into an external room identification blockToDo? * domain * file | |
| <<O>> Difference Topic UsingTheAreaEngine (r1.7 - 30 Nov 2006 - FantoM) |
| Changed: | ||
| < < | Essentially it is a single "controller" that creates the rooms for you based on an area file. As a builder you write the area file and the area generates itself - no more creating rooms. At this time the area file only controls the rooms and their exits, but it will soon provide the ability to place monsters, and then to define monsters. After that, I'm open to suggestions. | |
| > > | Essentially it is a single "controller" that creates the rooms for you based on an area file. As a builder you write the area file and the area generates itself - no more creating rooms. At this time the area file only controls the rooms, their exits and descriptions, and the placement of externally created objects/monsters. It will soon provide the ability to define objects and monsters. After that, I'm open to suggestions. | |
| Changed: | ||
| < < | [specialmonsters] # This section manages hand-coded monsters [monsters] # This section defines monsters for your area | |
| > > | [specialobjects] # This section manages hand-coded objects like monsters # and treasures | |
| Changed: | ||
| < < |
The [specialmonsters] section | |
| > > |
The [specialobjects] section | |
| Changed: | ||
| < < | The [specialmonsters] section is used to manage the placement of monsters that are not defined within the area file; hand-coded, or specially-coded monsters, perhaps created with the Blob. | |
| > > | The [specialobjects] section is used to manage the placement of objects that are not defined within the area file; like hand-coded, or specially-coded monsters and treasures, perhaps created with the Blob. | |
| Changed: | ||
| < < | The [specialmonsters] section is is broken up into a series of individual monster definitions. Each description starts with a line that begins with monster: | |
| > > | The [specialobjects] section is is broken up into a series of individual objectdefinitions. Each description starts with a line that begins with object: | |
| Changed: | ||
| < < | All subsequent lines until the next monster: are considered to be part of the same monster definition. | |
| > > | All subsequent lines until the next object: are considered to be part of the same object definition. | |
| Changed: | ||
| < < | [specialmonsters] monster: rabbit | |
| > > | [specialobjects] object: rabbit | |
| Changed: | ||
| < < | monster: duck # this is the description for the 'duck' monster | |
| > > | object: table # this is the definition for the 'table' treasure | |
| Changed: | ||
| < < | Each monster: line has the format: | |
| > > | Each object: line has the format: | |
| Changed: | ||
| < < | monster: monster_key | |
| > > | object: object_key | |
| Changed: | ||
| < < | The monster_key is a unique keyword used to identify the monster in other parts of the area file. You can use any keyword you like. | |
| > > | The object_key is a unique keyword used to identify the object in other parts of the area file. You can use any keyword you like. | |
| Changed: | ||
| < < |
What can go in a monster description blockEach monster description block is a series of lines which have the form | |
| > > |
What can go in a object description blockEach object description block is a series of lines which have the form | |
| Changed: | ||
| < < |
| |
| > > |
| |
| Changed: | ||
| < < |
| |
| > > |
| |
| Changed: | ||
| < < | At least one room_key must be specified. The room_key can include wildcards. Multiple keys can be specified by separating them with commas. If the specified room_keys match more than one room then the monster will be randomly placed. | |
| > > | At least one room_key must be specified. The room_key can include wildcards. Multiple keys can be specified by separating them with commas. If the specified room_keys match more than one room then the object will be randomly placed. | |
| Changed: | ||
| < < |
| |
| > > |
| |
| Changed: | ||
| < < |
| |
| > > |
| |
| Changed: | ||
| < < | A value of "default" will cause the monster to be recreated (if it is dead) following the normal mud rules. A value of "none" will mean the monster is never recreated after it is killed. This defaults to "default". | |
| > > | A value of "default" will cause the object to be recreated (if it is destroyed) following the normal mud rules. A value of "none" will mean the object is never recreated after it is destroyed. This defaults to "default". | |
| <<O>> Difference Topic UsingTheAreaEngine (r1.6 - 29 Nov 2006 - FantoM) |
| Added: | |||||||||||||||||||
| > > | table.columns { border:1px solid black; } table.columns .header{ border-bottom:1px solid black; background-color:grey; } table.columns td { padding-left:5px; padding-right:5px; border-right:1px solid black; border-bottom: 1px solid black; vertical-align: top; } table.columns th { padding-left:5px; padding-right:5px; border-bottom: 1px solid black; border-right: 1px solid black; background-color:gray; } tr.altrow { background-color:rgb(189,244,244); } | ||||||||||||||||||
| Changed: | |||||||||||||||||||
| < < | background-color:lightgray;\ | ||||||||||||||||||
| > > | background-color:lightgrey;\ | ||||||||||||||||||
| Changed: | |||||||||||||||||||
| < < |
| ||||||||||||||||||
| > > |
| ||||||||||||||||||
| Changed: | |||||||||||||||||||
| < < |
| ||||||||||||||||||
| > > |
| ||||||||||||||||||
| Changed: | |||||||||||||||||||
| < < |
| ||||||||||||||||||
| > > |
| ||||||||||||||||||
| Changed: | |||||||||||||||||||
| < < | The [specialmonsters] section is used to manage the placement of monsters that are not defined within the area file - hand-coded, or specially-coded monsters, perhaps created with the Blob. | ||||||||||||||||||
| > > |
The [specialmonsters] section is used to manage the placement of monsters that are not defined within the area file; hand-coded, or specially-coded monsters, perhaps created with the Blob.
The [specialmonsters] section is is broken up into a series of individual monster definitions. Each description starts with a line that begins with monster:
All subsequent lines until the next monster: are considered to be part of the same monster definition.
What can go in a monster description blockEach monster description block is a series of lines which have the form
| ||||||||||||||||||
| <<O>> Difference Topic UsingTheAreaEngine (r1.5 - 28 Nov 2006 - FantoM) |
| Added: | |
| > > | h3 { background-color:rgb(227, 223, 212); border: 1px solid grey; margin-top: 50px; margin-bottom: 5px; display:block; } h2 { background-color:rgb(200, 200, 190); border: 1px solid grey; display:block; } h1 { background-color:rgb(198, 189, 168); border: 1px solid grey; display:block; } |
| Added: | |
| > > | TOC: No TOC in "Website.UsingTheAreaEngine" |
| Added: | |
| > > | |
| Added: | |
| > > | # This section defines the layout of your area |
| Added: | |
| > > | # This section defines exit names/doors/etc |
| Added: | |
| > > | # This section manages links to hand-coded rooms [rooms] # This section defines what your rooms look like |
| Changed: | |
| < < | [roomdescriptions] |
| > > | [specialmonsters] # This section manages hand-coded monsters [monsters] # This section defines monsters for your area |
| Changed: | |
| < < |
The [roomdescriptions] section |
| > > |
The [rooms] section |
| Changed: | |
| < < | The [roomdescriptions] section defines the appearance of rooms - the description, items, light levels, etc. |
| > > | The [rooms] section defines the appearance of rooms - the description, items, light levels, etc. This section DOES NOT define the exits/connections between rooms - that is done in the [map] section. |
| Changed: | |
| < < | The [roomdescriptions] section is broken up into a series of individual room definitions. Each room definition can apply to one or more of the rooms which are defined in the [map] section. This is deliberately done to allow you to use a generic room description for multiple rooms in your area. |
| > > | The [rooms] section is broken up into a series of individual room descriptions. Each room description can apply to one or more of the rooms which are defined in the [map] section. This is deliberately done to allow you to use a generic room description for multiple rooms in your area. |
| Changed: | |
| < < | Each room definition starts with a line that begins with room: All subsequent lines until the next room: are considered to be part of the room defintion. |
| > > | Each room description starts with a line that begins with room: All subsequent lines until the next room: are considered to be part of the room description. |
| Changed: | |
| < < | [roomdescriptions] |
| > > | [rooms] |
| Changed: | |
| < < | # this is the first room definition |
| > > | # this is the first room description |
| Changed: | |
| < < | # this is the definition for the next room |
| > > | # this is the description for the next room |
room: room_key_pattern,room_key_pattern,room_key_pattern,etc |
[rooms] # This description applies to only the kitchen room: kitchen short: The kitchen long: This is the kitchen, it is full of cooking stuff. # This description can apply to any bedroom. # Note that there are other descriptions below which have the # room_key_patterns that match the bedrooms, and thus the # Area Engine will randomly choose one of these when assigning # a description to each bedroom room: *bedroom* short: A bedroom long: A room with a messy bed in it, someone has slept here recently. # This description can apply to any bedroom, but is specified # using commas instead of a * wildcard. room: bedroom1, bedroom2, masterbedroom short: A bedroom long: A room with a very neat and tidy bed in it. # This description will apply to any room that does not match # any of the other descriptions (IE all non-bedrooms and non-kitchens) room: short: A room long: This room is completely bare. # This description can also apply to any room that does not # match the other definitions with room_key_patterns. # Thus the Area Engine will randomly choose either this description # or the one immediately above when describing all non-bedroom # and non-kitchen rooms. room: short: A room long: This room is tastefully furnished. <nop> | |
| Changed: | |
| < < |
Understanding how room descriptions are allocated |
| > > |
What can go in a room description blockToDo?The [specialmonsters] sectionThe [specialmonsters] section is used to manage the placement of monsters that are not defined within the area file - hand-coded, or specially-coded monsters, perhaps created with the Blob. |
| <<O>> Difference Topic UsingTheAreaEngine (r1.4 - 28 Nov 2006 - FantoM) |
| Added: | ||
| > > | The [roomdescriptions] section defines the appearance of rooms - the description, items, light levels, etc. | |
| Added: | ||
| > > | The [roomdescriptions] section is broken up into a series of individual room definitions. Each room definition can apply to one or more of the rooms which are defined in the [map] section. This is deliberately done to allow you to use a generic room description for multiple rooms in your area. | |
| Added: | ||
| > > |
Each room definition starts with a line that begins with room:
All subsequent lines until the next room: are considered to be part of the room defintion.
Understanding how room descriptions are allocated | |
| <<O>> Difference Topic UsingTheAreaEngine (r1.3 - 23 Nov 2006 - FantoM) |
| Changed: | |||
| < < | # This comment is just describing the layout below, the area creator ignores it completely | ||
| > > | # This comment is just describing the layout below, # the area creator ignores it completely | ||
| Changed: | |||
| < < | lounge: nw=kitchen,n=dining,e=outside | ||
| > > | lounge: nw=kitchen,n=dining,frontdoor=outside | ||
| Added: | |||
| > > |
The [exitnames] section is sort of optional.
In this section you define the details of exits. At this time you can only define the "full name" for an exit.
So, for example, in the map above there are exits described as "e", "w" and so on. In this section you can define the full detail of "east" and "west".
More interestingly the definition for room "lounge" has an exit called "frontdoor", which leads to the outside. For simplicity we could add an entry into the [exitnames] which says "frontdoor" is "east". The player would then never see an exit called "frontdoor", and the lounge would contain an "east" exit.
| ||
| Added: | |||
| > > |
The [specialrooms] section is used to define rooms that are not to be controlled by the area engine, but are linked to by the rest of the map.
In our example map above the "outside" room is such an example. It is not to be created by the area engine,
but we want the "lounge" to be able to connect to it.
At this time it is only possible to link to hand-coded rooms such as those created by the blob. It is not possible to link to rooms in a different map controlled by the area engine.
To link the lounge to a hand-coded room called "thestreet.c" would require the following:
| ||
| Added: | |||
| > > | |||
| <<O>> Difference Topic UsingTheAreaEngine (r1.2 - 21 Nov 2006 - FantoM) |
| Added: | |||
| > > |
The map section is used to define all the rooms in the area and the exits between them.
This section does not define the contents of rooms, nor the room descriptions, just the exits/links between rooms.
Each room is defined on a single line. The line has the format:
| ||
| <<O>> Difference Topic UsingTheAreaEngine (r1.1 - 20 Nov 2006 - FantoM) |
| Added: | ||||||||||
| > > |
%META:TOPICINFO{author="FantoM" date="1164021660" format="1.0" version="1.1"}%
%META:TOPICPARENT{name="BuilderPages"}%
The Area EngineOverviewThe Area Engine is a "device" that allows builders to make areas in an easier fashion - at least that is the idea. Down the track it should even have a graphical interface! Essentially it is a single "controller" that creates the rooms for you based on an area file. As a builder you write the area file and the area generates itself - no more creating rooms. At this time the area file only controls the rooms and their exits, but it will soon provide the ability to place monsters, and then to define monsters. After that, I'm open to suggestions.File FormatThe area file is a normal text file - you can edit the file in notepad, under windows, and using ed inside the mud. The file is broken into a series of sections, each section having a heading and some content. Headings have the form [heading-name], and a section is all the content from its heading until the heading for the next section. Section headings have to be on a single line of their own. The following shows you the outline of the file. A complete area file will probably include the sections shown here as well as having lots of content inside each section
CommentsYou can put comments anywhere in the area file. Comments are notes that are completely ignored by the Area Engine. Comments are lines beginning with a #
The [general] sectionThis section is used to define some global variables: constants and rules that apply across the whola area. Supported constants at this time are:
The [map] sectionThe [exitnames] sectionThe [specialrooms] sectionThe [roomdescriptions] section | |||||||||
| Topic UsingTheAreaEngine . { View | Diffs | r1.18 | > | r1.17 | > | r1.16 | More } |
|
Revision r1.1 - 20 Nov 2006 - 11:21 GMT - FantoM Revision r1.18 - 04 Feb 2008 - 03:08 GMT - FantoM |
Copyright © 2001 by the contributing authors.
All material on this collaboration tool is the property of the contributing authors. Ideas, requests, problems regarding Tharsis? Send feedback. |