https://hazeron.com:443/wiki/api.php?action=feedcontributions&user=Haxus&feedformat=atomHazeron Wiki - User contributions [en]2024-03-29T13:45:51ZUser contributionsMediaWiki 1.41.0https://hazeron.com:443/wiki/index.php?title=File:C_MedicalModule.png&diff=12250File:C MedicalModule.png2024-03-07T23:44:20Z<p>Haxus: Haxus uploaded a new version of File:C MedicalModule.png</p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_MedKit.png&diff=12249File:C MedKit.png2024-03-07T23:43:52Z<p>Haxus: Haxus uploaded a new version of File:C MedKit.png</p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_MetalJewelry.png&diff=12248File:C MetalJewelry.png2024-03-07T23:43:25Z<p>Haxus: Haxus uploaded a new version of File:C MetalJewelry.png</p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_SmartPhone.png&diff=12247File:C SmartPhone.png2024-03-07T23:43:01Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_VacSuitHelmet.png&diff=12246File:C VacSuitHelmet.png2024-03-07T23:42:00Z<p>Haxus: Haxus uploaded a new version of File:C VacSuitHelmet.png</p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_KhakiCoveralls.png&diff=12245File:C KhakiCoveralls.png2024-03-07T23:41:32Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_GreenCoveralls.png&diff=12244File:C GreenCoveralls.png2024-03-07T23:41:15Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_BlueCoveralls.png&diff=12243File:C BlueCoveralls.png2024-03-07T23:40:59Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_GreyCoveralls.png&diff=12242File:C GreyCoveralls.png2024-03-07T23:40:43Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_OrangeCoveralls.png&diff=12241File:C OrangeCoveralls.png2024-03-07T23:40:23Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_RedCoveralls.png&diff=12240File:C RedCoveralls.png2024-03-07T23:40:06Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_Vegemite.png&diff=12239File:C Vegemite.png2024-03-07T23:39:40Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_IceCream.png&diff=12238File:C IceCream.png2024-03-07T23:39:18Z<p>Haxus: Haxus uploaded a new version of File:C IceCream.png</p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_TesloidDissipator.png&diff=12237File:C TesloidDissipator.png2024-03-07T23:38:23Z<p>Haxus: Haxus uploaded a new version of File:C TesloidDissipator.png</p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=Designer&diff=10368Designer2024-02-25T01:35:02Z<p>Haxus: /* Design Checklist */</p>
<hr />
<div>The ''Designer'' is a modeling tool used to design spacecraft and building blueprints. <br />
<br />
The [[Designer Menu]] page describes each individual menu item.<br />
<br />
The [[Design Parts]] page describes each individual kind of part.<br />
<br />
=Architect=<br />
The person who creates a design is the architect of the design.<br />
The person who creates each part is the architect of that part.<br />
Parts retain their architect information with them.<br />
<br />
When multiple architects work on the same design, the architect who initiates the designer instance is the architect of the design.<br />
<br />
The analysis report for a design lists all architects whose parts are included in a design.<br />
<br />
=Blueprints=<br />
A blueprint is a design that has been analyzed and accepted for use in the game. Blueprints contain all of the information needed to make a functional building or spacecraft, such as its 3D model and design specifications. Blueprints are stored in a ''universal library'' where they are accessed by spacecraft and buildings during game play. Blueprints are identified by a unique number, assigned when stored in the library.<br />
<br />
Blueprints can be saved onto media items in an avatar's gear. Blank paper and blank disks can each hold only one blueprint. Storage devices can hold varying numbers of blueprints, depending on the device. <br />
<br />
Spacecraft, buildings, and storage devices reference their blueprints in the library throughout their lifetimes. Blueprints that are in use by game objects cannot be deleted. When a player deletes a blueprint, it may instead be deactivated in the library, until it is no longer referenced and it can be finally removed.<br />
<br />
In the designer and in this wiki, the word blueprint is used generally to refer to any design, whether or not it has been finalized.<br />
<br />
==In-Game Blueprint Exchange==<br />
The blueprint exchange provides a place for players to share blueprints with other players in the online game. Separate exchanges for spacecraft blueprints and building blueprints are accessed in the game. <br />
<br />
At the exchanges, blueprints can be published by architects and they can be purchased by players. Prices are in cronodollars ¢, the money of the game. Cronos are not related to real money. '''Spacecraft and building blueprints do not cost real money.''' <br />
<br />
Publishing is a way to share blueprints with other players. Publishing terms control the price and who is permitted to use the blueprint. <br />
<br />
'''A blueprint does not have to be published to be used in the game.''' A blueprint can be saved onto a storage device in your gear, then used to make buildings or spacecraft. Interfaces that request a blueprint know how to find them in your gear.<br />
<br />
==Web Blueprint Exchange==<br />
The web site offers access to a public blueprint exchange. This exchange is not connected with the in-game exchange in any way.<br />
<br />
The web blueprint exchange offers a place for players to publicly share their .SoH files. There are no publishing terms or restrictions. Blueprints posted to the web exchange are freely available for download by anyone on the Internet.<br />
<br />
===Prepare .SoH for Publishing===<br />
Two things should be done to prepare a .SoH file for publishing to the web blueprint exchange. <br />
<br />
Obstructions should be refreshed. Obstruction data provides volume information necessary to create the design analysis report. The report is presented on a web page in the exchange.<br />
<br />
A nice scene should be present in the view window. A screen grab of the scene is stored with the file. The screen grab is shown on the report. The screen grab is also shown on the button that accesses the report page.<br />
<br />
=Designer Access=<br />
The designer can be accessed both online and when playing offline solo.<br />
<br />
==Online Designer==<br />
Online, a designer is accessed by going to a [[Design_Studio|design studio]] building or by occupying a [[Design_Parts#Station.2C_Designer|designer station]] while aboard a spacecraft.<br />
<br />
To enter a designer at a design studio, display the ''Building'' (<code>F10</code>) window and click on the "Enter" button of a studio. When a studio is "Vacant", you may leave the password box blank or you may enter a password of your choice. The password you enter establishes that studio's password until the studio becomes vacant. To join an "Occupied" design studio, you must enter the password that was established by the first person to enter the studio.<br />
<br />
To enter a designer aboard a spacecraft, move to a designer station and enter the station by pressing the <code>E</code> key. Designers aboard a spacecraft are not password protected. Each designer station creates its own designer instance. People who enter the same designer station are placed in the same designer instance. The avatar enters the designer instance and their body does not remain at the station in the ship, like it does with other stations.<br />
<br />
Players may work together in the same studio to develop a design. In this case, the first player to enter the vacant studio is registered as the architect and owner of the design.<br />
<br />
==Offline Designer==<br />
When the game is launched, the designer can be entered ''solo'', instead of logging in to the game. Overall program performance is better when designing solo because no server is involved. Once a design is completed solo, it can be saved to a .SoH file. That file can be loaded into the on line designer, for storage in the universal library.<br />
<br />
=Design Process=<br />
General steps to making a design go something like this.<br />
* Adjust design properties to establish goals.<br />
* Create an exterior hull.<br />
* Create one or more rooms inside the hull.<br />
* Cut out doors and windows.<br />
* Create finer model details.<br />
* Apply textures and other effects to finish the surfaces.<br />
* Add details: control stations, berths, lights, display screens, etc.<br />
* Add room voids, paths and barriers.<br />
* Make doors operational.<br />
* Finalize the design.<br />
<br />
Designing typically involves creating many [[Design_Parts|''parts'']].<br />
Parts include things like hulls, rooms, jigs, lights, display screens, etc.<br />
<br />
Check design properties from time to time. It shows an assessment of the design, based on what you are trying to design.<br />
<br />
==Design Goal==<br />
Your goal as an architect is to make beautiful looking designs that are functional in the universe of Hazeron.<br />
Emphasis is placed on appearance over technical realism.<br />
<br />
Hull sections do not have to be sculpted to form airtight continuous shells where they join each other.<br />
This is inefficient and difficult to model.<br />
It is much better to butt an engine pylon into the side of the hull, rather than carving a hole so it can make a perfect junction.<br />
Carving that hole breaks the side face into many tiny faces.<br />
It is likely unnecessary, unless people are going to walk or see through the opening.<br />
<br />
A design does not require the interior to conform to the exterior.<br />
Your design may represent a large intricate spacecraft that appears to have many rooms.<br />
It is inefficient and unnecessary to create all of the interior rooms and detail that would exist in real life.<br />
Like a movie set, only a few key areas inside the hull need to be modeled.<br />
This enables the designer to efficiently achieve the look and feel desired, without laborious excess work.<br />
<br />
Interior details have no effect on the mass calculation of the design.<br />
Rich interior designs are encouraged.<br />
There is no performance advantage to making stark minimal interiors.<br />
<br />
Be efficient with your designs.<br />
There is no point in modeling details that can never be seen.<br />
A good example is a cargo hold full of cargo.<br />
An inefficient approach would be to build a huge room and fill it with shipping containers.<br />
Instead of being too literal, think of it like a movie set.<br />
It would be much more efficient to build only an accessible area representative of a cargo hold, with walls modeled and textured to look like stacks of shipping containers.<br />
Use those precious faces where they get the most impact; don't waste them.<br />
<br />
Remove faces that can never be seen. Many parts that contribute to the construction materials requirement of a design are affected by the total surface area of their faces. The amount of materials directly affects the construction time. Reducing faces will reduce the construction time and materials of a design.<br />
<br />
More parts are better than less.<br />
Parts help to manage large 3D models.<br />
Rendering information is collected and consolidated efficiently when the OpenGL model is constructed.<br />
It makes no difference in the final rendering if the information comes from one part or many.<br />
<br />
[[Design_Parts#Turbo_Lift|Turbo lifts]] help to make big designs feel elaborate and detailed on the inside, without extensive modeling effort. They are an effective scene change device in science fiction cinema and they are equally effective in the game, to give the feeling of being aboard a really big ship. They also save a lot of walking.<br />
<br />
==Part Mode vs Face Mode==<br />
Parts are composed of ''faces''.<br />
Faces have vertices and edges.<br />
To edit the faces of one or more selected parts, ''face mode'' is enabled.<br />
In a typical design session, face mode is enabled and disabled often, whenever the need arises to modify the faces that make up a part.<br />
<br />
Actions on the ''Parts'' menu operate on whole parts.<br />
Most actions on the Parts menu are disabled when face mode is enabled.<br />
Some part menu actions are only enabled when one or more parts are selected.<br />
<br />
Actions on the ''Face'' menu operate on faces of selected parts.<br />
Most actions on the Face menu are enabled when face mode is enabled.<br />
Textures are applied in face mode.<br />
<br />
==Geometry==<br />
Parts are represented by geometry that can be painted in an OpenGL scene.<br />
Geometry of parts is described by their vertices, edges and faces.<br />
<br />
===Vertices===<br />
Vertices contain 3D Cartesian coordinate locations that describe the position of edges and faces.<br />
Vertices also contain information needed when rendering.<br />
Texture coordinates are stored at vertices.<br />
Glow is emitted at vertices.<br />
<br />
Render information is interpolated between vertices.<br />
Thus, the glow of a vertex will fade off to a neighboring vertex that does not glow.<br />
<br />
Vertices also contain an up direction, for lighting calculations.<br />
The face menu commands ''Flatten Vertices'' and ''Smooth Vertices'' operate on vertex up directions.<br />
<br />
===Edges===<br />
Edges are the visible lines that go from one vertex to another to reveal the boundaries of faces.<br />
Edges exist for the benefit of the designer, to see the model.<br />
Their presence or absence has no effect on the final rendering result.<br />
<br />
===Faces===<br />
Faces are flat surfaces that compose a 3D model.<br />
OpenGL paints faces in front of each other depending upon their Z-depth in the scene.<br />
This is the essence of how 3D scenes are painted by a computer.<br />
<br />
Faces have a front and a back.<br />
Faces are not visible from the back in the final rendering result.<br />
They can be seen from the back in the designer, if back face visibility is enabled.<br />
The object menu command ''Reverse Faces'' flips their facing back and forth.<br />
<br />
''Facing direction'' is determined by the direction the boundary is drawn. <br />
The boundary is clockwise when viewing the front of a face.<br />
The boundary is counterclockwise when viewing the back of a face.<br />
<br />
All faces are created equal.<br />
A face copied from one part and pasted into another becomes a face of the destination part.<br />
It is irrelevant if it came from a hull and gets added to a room.<br />
The part is the hull or room; the face is just a face.<br />
<br />
Faces do not "know" how they were created. A face created as part of an extrusion is no different from a face that is created individually. The extrusion command merely assembles faces into a desired shape.<br />
<br />
Faces should not be bent. They expect to represent a flat plane. A face should be drawn as multiple faces if a curved surface will be represented.<br />
<br />
Three foundational shapes exist.<br />
<br />
*Triangle - A face defined using a boundary of three vertices.<br />
*Quad - A face defined using a boundary of four vertices.<br />
*Face - A face defined using a boundary with three or more vertices.<br />
<br />
==Shapes==<br />
Shapes use parameter-driven methods to generate faces. Primitive shapes can provide a general starting point for more detailed modeling.<br />
<br />
The resulting shape may be modified like any other set of faces. The faces are in no way different than if an architect painstakingly built the same shape using faces. It is typical to generate a quick shape then rip it apart, to use some portion of it, or embellish it to mold it into what you want.<br />
<br />
===Extrusion===<br />
[[file:ScFigExtrusion.png|right|Extrusion]]<br />
An extrusion is formed by projecting a shape along a straight path. Examples include: rooms, beams. <br />
<br />
The creation of an extrusion begins by entering the shape that will be extruded. After the shape is entered, a window presents options to finalize the extrusion. Straight extrusion is made by simply entering the length. <br />
<br />
Faces are formed at the sides of the extrusion. Stepping allows the sides to be divided along the length of the extrusion.<br />
<br />
When the extrusion is generated, the shape follows a straight line. Both ends of the extrusion are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the extrusion shape.<br />
* Subsequent points are entered to describe the extrusion shape.<br />
* A window offers extrusion options.<br />
* Depending on extrusion options, a point may be entered to indicate the height or direction of the extrusion. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Sphere Lon/Lat===<br />
[[file:ScFigSphereLonLat.png|right|Longitude/Latitude Sphere]]<br />
A longitude/latitude sphere is divided into equal divisions of latitude and longitude. The faces are largest at the equator. The faces converge together at the poles. <br />
<br />
Creation of a longitude/latitude sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of latitude divisions and number of longitude divisions. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Sphere Uniform===<br />
[[file:ScFigSphereUniform.png|right|Uniform Sphere]]<br />
A uniform sphere is divided uniformly into triangle faces. All triangles are close to the same size. <br />
<br />
Creation of a uniform sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of divisions at the equator. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Spindle===<br />
[[file:ScFigSpindle.png|right|Spindle]]<br />
A spindle is created by spinning a shape around an axis. Objects with axial symmetry are created as spindles. Examples include: flying saucer, spool, furniture leg, column, dome, sphere, dinner plate, door knob, dish antenna. <br />
<br />
The creation of a spindle begins by entering the shape that will be spun around an axis. After the shape is entered, a window presents options to finalize the spindle. Options include the number of steps around the axis and the choice of axes. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the spindle shape.<br />
* Subsequent points are entered to describe the spindle shape.<br />
* A window offers spindle options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Tubing===<br />
[[file:ScFigTubing.png|right|Tubing]]<br />
Tubing is very similar to an extrusion except that the path may be complex, instead of simply extruding along a straight line. When the tubing shape is extruded along the path, corners are mitered appropriately.<br />
<br />
Tubing is not just for making water pipes. Tubing is used to make any closed shape that is extruded along a complex path. Examples include: piping, ducts, crown molding, baseboard trim, railroad tracks, hand rails, soffits, wall conforming consoles, base and wall cabinets, and counter tops. <br />
<br />
Creation of tubing begins by entering the path along which the tubing will travel. After the path is entered, a window presents options to finalize the tubing. <br />
<br />
Circular tubing is made by simply entering the diameter and number of sides for the tube. <br />
<br />
Other tubing shapes are created by drawing the cross section shape of the tubing. <br />
<br />
After drawing the shape of the tubing cross section, a guide point is entered on the shape. <br />
<br />
When the tubing is generated, the shape follows the path along the guide. Both ends of the tubing are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the tubing path.<br />
* Subsequent points are entered to describe the tubing path.<br />
* A window offers tubing options.<br />
* Depending on tubing options, a point may be entered to begin the tubing shape.<br />
* Subsequent points are entered to describe the tubing shape.<br />
* Guide point for the tubing shape is entered.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> displays options for completing the tube.<br />
<br />
==Jigs==<br />
<br />
Jigs are found underneath the Part menu button. There are many different types of Jigs, such as Door Jigs, Window Jigs, Launch Tube Jigs, Cutting Jigs, and Decal Jigs. They are created like any other hull or room objects, by selecting the Shape type (Extrusion, Sphere, Tubing, Spindle) and drawing the shape wanted. A physical object is then created and added to the Parts list as a Jig of the type selected. <br />
<br />
Jigs are used by positioning the created Jig object between two rooms, or between a hull and room, ensuring that the Jig penetrates both walls. Once this is positioned correctly, select all 3 objects at once using the Parts panel, and then select "Jig Cut" under the Design Menu button. The jig then cuts the walls in the shape of the jig, allowing you to create tube hallways as an example. The cut walls are then converted to the object type of the jig, such as the walls being converted into transparent glass if using a Window Jig, or door objects if using a Door Jig. <br />
<br />
Jigs can be used in order to create different types of objects, exits or walls between two rooms or the interior and exterior of a design. For example, the Door Jig creates a door between whatever rooms the Jig is placed between. The Window Jig creates a Window between the rooms, while the Launch Tube and Cutting jigs just create holes between the hull and room and cut the faces of each side, respectively. <br />
<br />
All jigs create faces between the two walls that they penetrate, in order to give walls thickness and prevent you from seeing any back-faces.<br />
<br />
==Origin==<br />
<br />
At the center of the design space is a yellow marker, drawn as three intersecting yellow lines.<br />
It does not move when the design grid moves.<br />
The immovable yellow marker is the true origin (0,0,0) location of the design space.<br />
That is the point at which a spacecraft will pivot, when it maneuvers. The origin is the insertion point when placing a building, that determines the altitude of the building on the terrain.<br />
<br />
==Obstructions, Voids, and Barriers==<br />
The obstruction model describes what areas of the design are solid and what areas of the design are not. It is used to determine where a person is standing on the floor and where they are allowed to stand, where vehicles collide with the design and where they go inside, where missiles and gunfire hit or pass through. The obstruction model describes the solid shape of the design and its accessible inside areas.<br />
<br />
The obstruction model cannot be seen. <br />
It exists somewhat like an electrical field around the design.<br />
The presence of the obstruction model can be felt by moving around the design. <br />
The menu toggle ''Blueprint, Solids Obstruct Movement'' must be checked to bump against the obstruction model.<br />
<br />
The obstruction model is created by analyzing the geometry of the design. <br />
A lot of processing effort is required to maintain the model so it is not done automatically with every modification to the design.<br />
The obstruction model is updated using the ''Blueprint, Refresh Obstructions'' menu option.<br />
<br />
The obstruction model is created from hull and landing gear parts, voids, and barriers.<br />
Each state of landing gear is represented so its obstruction shape changes when the gear is extended.<br />
<br />
The obstruction model envelopes each part individually.<br />
To get the best fitting obstruction model, it is beneficial to split elaborate hull parts into<br />
multiple simpler hull parts.<br />
<br />
The obstruction model includes a margin around hull and landing gear parts.<br />
This helps to prevent the eye camera of players from getting close enough to see inside, which breaks the illusion of solidity.<br />
It can also prevent someone from moving close enough to operate a door.<br />
<br />
''Voids'' are used to carve out the spaces accessible to players, from the solid shape created by the hull. Room parts do not contribute to the obstruction model. It is the voids that really determine where people can go inside.<br />
<br />
''Barriers'' are used to create obstructions inside voids. Sometimes it is easier to add a barrier than to change the shape of the room void. Barriers can also be used to create the floor under stairs and ramps.<br />
<br />
==Part Association==<br />
''Association'' is when a part references another part by its id number.<br />
<br />
Certain parts can be associated with certain other parts.<br />
Association is a loose connection between parts.<br />
The meaning of this association depends upon the parts involved.<br />
<br />
A part can be associated with only one other part.<br />
Any number of parts can be associated with the same part.<br />
<br />
Associations are created using the [[Designer_Menu#Associate_Parts|Part, Associate Parts]] command. Associations are removed using the [[Designer_Menu#Dissociate_Parts|Part, Dissociate Parts]].<br />
<br />
Part associations are used by the following parts.<br />
<br />
===Barriers===<br />
[[Design_Parts#Barrier|Barriers]] can be associated with a '''state of a door or landing gear'''.<br />
This determines which barriers are obstructions when the door or landing gear is operated.<br />
<br />
It is ok to associate more than one barrier with a state of a door or landing gear.<br />
<br />
===Berth Name Decals===<br />
[[Design_Parts#Decal.2C_Berth_Name|Berth name decals]] are associated with a '''berth'''.<br />
This determines which name to display on the decal.<br />
''Unassigned'' is displayed when the berth is not assigned.<br />
<br />
It is ok to associate more than one berth name decal to the same berth.<br />
<br />
===FTL Drive Service Panels===<br />
[[Design_Parts#Panel.2C_FTL_Drive|FTL drive service panel]] is associated with an '''engineer station'''.<br />
This determines which FTL drive the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
===Hull Voids===<br />
[[Design_Parts#Void.2C_Hull|Hull voids]] are associated with the '''open state of a door''', when making operable hull doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Association of a hull void and a room void to a door causes it to become a hull door. This enables the interior room void and the exterior hull void to become accessible at once, presumably overlapping each other so a person can move from one void to the other.<br />
<br />
Hull voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Room Life Support Status Panels===<br />
[[Design_Parts#Status.2C_Life_Support|Room life support status panel]] is associated with a '''room void'''.<br />
This determines which room's air pressure reading appears on the panel.<br />
<br />
It is ok to associate more than one life support status panel with a single room.<br />
<br />
===Room Voids===<br />
[[Design_Parts#Void.2C_Room|Room voids]] are associated with the '''open state of a door''', when making operable doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Room voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Walk Paths and Ladder Paths===<br />
[[Design_Parts#Path.2C_Walk|Walk paths]] and [[Design_Parts#Path.2C_Ladder|ladder paths]] are associated with the '''open state of a door''', when making operable doors.<br />
This guides NPCs to find their way through the door when it is open.<br />
<br />
Paths may be associated with any state of a door or landing gear to make access to the void dependent upon those states.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Weapon Service Panels===<br />
[[Design_Parts#Panel.2C_Weapon|Weapon service panel]] is associated with a '''fire control station'''.<br />
This determines which weapon the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
==Walk Paths==<br />
In order for [[NPC]]s to successfully move around the interior of a design with multiple rooms. <br />
<br />
The walk paths need to be above the floor, hip height is usually good. Each end of a walk path is referred to as a ''node'', NPCs will need to always have a clear line to the nearest walk path node in whatever room they are in, or else they will get stuck. Walk paths need to form a full network where each walk path has to start where another ends, so that an NPC that is standing in one room can go to their nearest walk path node and then path through the network to their destination room.<br />
<br />
[[File:WalkPathExample.png|thumb|none|Example of walk paths seen from above. Grey is room voids, blue is door room voids, red is walk path node, and green are the walk paths.]]<br />
<br />
NPC pathing strategy is fairly primitive. When they want to go somewhere, they look for the closest path end point to them that they can move straight to without obstructions. Similar logic is used to find the path node closest to the destination. There must be a complete end-to-end chain of path segments from beginning to end, from there on.<br />
<br />
===Common Mistakes===<br />
Common mistake 1. NPCs will always start by going to the nearest node in their room when they need to path to another room. If the NPC cannot find a path to its destination from its nearest walk path node it will be unable to go anywhere. A walk path is needed to connect the doors across the room from each other, so the NPC can find the closest node at the nearby door, then follow the path to the room containing the destination, then walk across the room straight to destination's room.<br />
<br />
[[File:WalkPathFail.png|thumb|none|Common mistake 1. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
Common mistake 2. NPCs will need a clear line to the nearest node in their room, or they will be unable to leave it. If there are walls or solid furniture inside the room that will prevent a NPC from having a clear line to the nearest walk path node, add a closer walk path node they can use to path to the room's exit.<br />
<br />
[[File:WalkPathFail2.png|thumb|none|Common mistake 2. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
==Finalize==<br />
When a design is complete, it undergoes a finalizing process to insure that it is usable for its intended purpose. The result of the finalize process is presented to the architect in a list. The list may contain green notes, amber warnings and red errors.<br />
<br />
* Green notes are merely informative, providing information about the finalize process.<br />
* Amber warnings bring attention to things that may indicate a design error or oversight was made. Warnings do not prevent a design from being finalized.<br />
* Red errors highlight aspects of the design that must be changed before it can be finalized.<br />
<br />
In the on line designer, a design that finalizes with no errors can be saved into the universal library. Once saved to the library, a unique blueprint number is assigned and reported back to the architect. Then the design can be built in the game and it can be published in the appropriate exchange.<br />
<br />
In the solo designer, a design that finalizes with no errors reports that it could be saved to the library if it was finalized on line.<br />
<br />
=Designer Interface=<br />
The designer interface is dominated by a first person 3D view of the design space. It is in this space that the design will appear as it is created. The mouse pointer is used in this view to select things. The mouse is also used to drag the selected things from one place to another, to move or copy them.<br />
<br />
Hover the mouse pointer over most buttons and controls to see a tool tip. Tool tips on buttons explain their function and they sometimes reveal features that are not obvious at first. The tool tips on some buttons change, depending on current conditions. <br />
<br />
==Grid==<br />
The grid is a tool for drawing, initially visible in the view as a faint grid of lines at floor level. <br />
<br />
The grid is more like a ruler, a measuring tool, than the lines on a piece of graph paper, a static medium. The architect will move and rotate the grid many times during a typical design session, as needed, wherever it helps to draw. <br />
<br />
When more than one person is in the designer, each person sees and interacts with their own grid.<br />
<br />
===Coordinate Systems===<br />
[[file:NumberLine.png|right|Number Line]]<br />
An understanding of coordinate systems is helpful to use the grid effectively. <br />
<br />
Real numbers extend to infinity, both positive and negative. This can be represented visually as a ''number line''. Whole numbers are placed at regular intervals along the line. Fractional numbers fall proportionally between the whole numbers. i.e. 1.5 is 50% of the way between 1 and 2.<br />
<br />
A number can be expressed in units of length, such as meters, in either the positive or negative direction, along the number line. The number is its ordinal value or ''ordinate''. <br />
<br />
That defines a one-dimensional vector. The absolute value of the number is its length. The sign of the number indicates the direction, either positive or negative.<br />
[[file:CoordinateSystem.png|left|Cartesian Coordinate System]]<br />
A ''Cartesian coordinate system'' is created when two number lines are placed perpendicular to each other, so they cross at 0. In a Cartesian coordinate system, each number line is called an ''axis''. They are named X and Y.<br />
<br />
A plane is formed by the intersection of the two axes, called the ''XY plane''. At any location in the plane, the X ordinate and the Y ordinate can be determined by dropping the point perpendicular to the respective axes. Knowing that, we can plot any location in the plane if we know the X ordinate and the Y ordinate at the location.<br />
<br />
The combination of ordinates is called ''coordinates''. Coordinates are expressed using notation like this (X, Y). In the picture, the coordinates of the starship are (-4, -2). The coordinates of the asteroid are (2.5, 3). Coordinates (0,0) are called the ''origin'', because that is where the numbers originate, or begin, for all axes.<br />
<br />
This is a 2 dimensional (2D) coordinate system because it expresses locations as dimensions measured along two axes.<br />
[[file:3DCoordinateSystem.png|right|3D Coordinate System]]<br />
A third axis can be added perpendicular to each of the other two axes. It is named Z. <br />
<br />
Using the coordinates of three axes, any location in space can be described. This is a 3 dimensional (3D) coordinate system because it expresses locations as dimensions measured along three axes. 3D coordinates are expressed like this (X, Y, Z).<br />
<br />
====Right Hand Rule====<br />
Which way does the Z axis go? There are two possible orientations. <br />
<br />
Hazeron uses the right-hand rule for making that determination. It can be visualized by looking at the right hand held out flat. The thumb points in the direction of the positive X axis. The index finger points in the direction of the positive Y axis. Curl the remaining fingers upward, perpendicular to the palm. The middle finger points in the direction of the positive Z axis.<br />
<br />
Mathematically, that means the Z axis is equal to the cross product of the X axis against the Y axis.<br />
<br />
<code>Z = X cross Y</code><br />
<br />
Rotations around axes are also determined using the right hand rule. The positive direction of angular rotation around each axis can be determined by grasping the axis with the right hand, with the thumb pointing in the positive direction. The fingers curl around the axis in the positive angle direction.<br />
<br />
====Absolute Coordinate System====<br />
The ''absolute coordinate system'' underlies all geometry in the designer.<br />
<br />
The absolute coordinate system is indicated by an immovable yellow marker. It is visible in the view as three short intersecting XYZ axis lines.<br />
<br />
That is where the grid starts in a new drawing. To put the grid back to that position, use the [[Designer_Menu#Position_Grid|Position Grid]] command, then choose the '''S=Reset''' option.<br />
<br />
Mathematically, the grid shows the position of a 4x4 transformation matrix. The absolute coordinate system is defined as the identity matrix.<br />
<br />
<code>1 0 0 0</code><br><br />
<code>0 1 0 0</code><br><br />
<code>0 0 1 0</code><br><br />
<code>0 0 0 1</code><br />
<br />
*Origin is at (0,0,0).<br />
*X axis vector is (1,0,0).<br />
*Y axis vector is (0,1,0).<br />
*Z axis vector is (0,0,1).<br />
<br />
===Visible Grid===<br />
The visible grid represents a 3D coordinate system. Axis lines are bright in the positive direction and dim in the negative direction. The position of X is shown as a red line. The position of Y is shown as a green line. The position of Z is shown as a blue line.<br />
<br />
X and Y lines are marked at the ends with the axis name and direction.<br />
<br />
The XY plane contains lines parallel to the X and Y axes, forming a visible grid. Regular interval spacing between the grid lines is controlled by a combo box control on the reference tool bar. <br />
<br />
Grid colors are controlled on the Designer page of the Settings window.<br />
<br />
[[Designer_Menu#Show_Grid|Grid visibility]] can be turned off. <br />
<br />
Grid rounding can be turned on or off, independently of the grid visibility state.<br />
<br />
===Grid as a Tool===<br />
All drawing takes place in the 3D coordinate system of the grid. Position the grid to draw anywhere in the drawing, using coordinates relative to the subject matter. This is typically done frequently while creating a design, using commands accessed on the [[Designer#Reference_Tool_Bar|reference tool bar]] and the [[Designer_Menu#Helpers|helpers menu]].<br />
<br />
[[Designer#Coordinate_Input|Coordinates entered into the input tool bar]] are relative to the grid. <br />
<br />
Freehand drawing happens in the plane of the grid. In the view, the location of the mouse pointer is projected straight into the screen until it intersects the XY plane of the grid, regardless of the visibility state of the grid. If ''Snap to Grid'' is enabled, that location will be rounded to the nearest grid line intersection. Various snapping switches can be enabled. Grid rounding behavior is overridden when the mouse pointer snaps to existing geometry.<br />
<br />
Most drawing commands terminate/replace the current drawing command; grid positioning commands suspend the current drawing command instead. Whenever a drawing command is requesting point input, a grid positioning command can be invoked. Upon termination of the grid positioning command, the suspended drawing command will resume its request for point input.<br />
<br />
When selected geometry is copied to the clipboard, the geometry on the clipboard is in the coordinate space of the grid, at the time of the copy.<br />
<br />
When geometry is pasted from the clipboard, it is placed in the coordinate space of the grid, at its location at the time of the paste.<br />
<br />
For example, move the grid to the center of a selected part. Copy that part to the clipboard. Move the grid. Paste the clipboard; it will be added at the new location of the grid. Use [[Designer_Menu#Paste_At|Paste At]] to place more than one of them.<br />
<br />
==Menu Bar==<br />
[[file:DesignerMenu.png|right|Menu Bar]]<br />
At the top of the designer interface is a menu bar. Most functions of the program can be accessed using the menu bar.<br />
<br />
See [[Designer_Menu|designer menu]] for a list of the items on the menu bar.<br />
<br />
==Input Tool Bar==<br />
[[file:DesignerInputBar.png|right|Input Tool Bar]]<br />
The ''Input Tool Bar'' appears below the menu bar, at the left. It can be moved by dragging the dotted grip at the left end. Tool tips on the buttons explain their function.<br />
<br />
===Design Properties===<br />
Equivalent to the [[Designer_Menu#Properties|Blueprint, Properties]] menu item.<br />
<br />
===Refresh Obstructions===<br />
Equivalent to the [[Designer_Menu#Refresh_Obstructions|Blueprint, Refresh Obstructions]] menu item.<br />
<br />
===Solids Obstruct Movement===<br />
Equivalent to the [[Designer_Menu#Solids_Obstruct_Movement|Blueprint, Solids Obstruct Movment]] menu item.<br />
<br />
===Gravity===<br />
Equivalent to the [[Designer_Menu#Gravity_On.2FOff|Blueprint, Gravity On/Off]] menu item.<br />
<br />
===Preview===<br />
Equivalent to the [[Designer_Menu#Preview_On.2FOff|Blueprint, Preview On/Off]] menu item.<br />
<br />
===Preview Sun Position===<br />
Equivalent to the [[Designer_Menu#Preview_Settings|Blueprint, Preview Settings]] menu item.<br />
<br />
===Construct Building===<br />
Equivalent to the [[Designer_Menu#Preview_Place_Building|Blueprint, Preview Place Building]] menu item.<br />
<br />
===Preview People===<br />
Equivalent to the [[Designer_Menu#Preview_People|Blueprint, Preview People]] menu item.<br />
<br />
===Coordinate Input===<br />
Many design commands will ask the architect to enter a 3D point location. A location can then be entered by clicking with the mouse pointer in the view window. Alternatively, locations can be entered into the coordinate input box, at the end of the [[Designer#Input_Tool_Bar|Input Tool Bar]].<br />
<br />
3D coordinates are entered as '''X,Y,Z''' values, which are positive or negative offsets along the '''X''', '''Y''' and '''Z''' axes. <br />
Coordinates are not bracketed with parentheses.<br />
Omitted values are 0. e.g. <i>1,,2</i> is the same as <i>1,0,2</i>; <i>p2</i> is the same as <i>p2,0,0</i>; <i>a,3</i> is the same as <i>a0,3,0</i>.<br />
<br />
Polar coordinates are entered as '''pD,A,I''' values: '''D''' is distance from the origin; '''A''' is angle around the Z axis, positive counterclockwise and negative clockwise; '''I''' is the angle of inclination off the XY plane, positive above and negative below.<br />
<br />
Coordinates are relative to the location and orientation of the [[Designer#Grid|grid]] unless specified otherwise.<br />
<br />
Coordinates prefixed with '''a''' are ''absolute''. Absolute coordinates are relative to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]] of the design, ignoring the grid. e.g. ''a1.25,2.3,-4.5'' or ''ap2.5,-30,10''.<br />
<br />
Distances are interpreted in units depending upon the ''unit of measure'' setting. Whole numbers are interpreted as whole units of measure. For example, if the unit of measure is meters, which is the default, then 10 means 10 meters. Unit of measure is configured on the Designer page of the Settings window. Unit of measure can be changed at any time while drawing.<br />
<br />
====Rotating====<br />
Some design commands will ask the architect to enter a rotation value. e.g. rotate selected objects.<br />
<br />
Angles are entered in degrees.<br />
<br />
When responding to a request for rotation, input into the Coordinate Input box is interpreted as 3D rotation angles around the X, Y and Z axes. e.g. To rotate 45 degrees around the Z axis, enter 0,0,45, or simply ,,45.<br />
<br />
Positive and negative direction of rotation is determined by the [[Designer#Right_Hand_Rule|right hand rule]].<br />
<br />
====Scaling====<br />
Some design commands will ask the architect to enter a scale value. e.g. stretch selected objects.<br />
<br />
When responding to a request for scaling, input into the Coordinate Input box is interpreted as 3D stretch factors along the X, Y and Z axes. e.g. To double the overall size, enter 2,2,2; to reduce the X dimension by half, enter .5,1,1.<br />
<br />
====Move/Copy====<br />
When no design command is active, the coordinate input box can be used to move or copy the objects that are selected.<br />
* '''Move parts''' by entering a coordinate. The objects that are selected will be moved using the vector entered.<br />
* '''Copy parts''' by entering a coordinate while holding the <code>Ctrl</code> key. The objects that are selected will be copied and moved using the vector entered.<br />
<br />
==Reference Tool Bar==<br />
[[file:DesignerReferenceBar.png|right|Reference Tool Bar]]<br />
The ''Reference Tool Bar'' appears below the menu bar, to the right of the input tool bar. It can be moved by dragging the dotted grip at the left end.<br />
<br />
===Face Mode===<br />
Equivalent to the [[Designer_Menu#Face_Mode|Face, Face Mode]] menu item.<br />
<br />
===Isolate Parts===<br />
Equivalent to the [[Designer_Menu#Isolate_Parts|Face, Isolate Parts]] menu item.<br />
<br />
===Find Vertices===<br />
Equivalent to the [[Designer_Menu#Find_Vertices|Helpers, Find Vertices]] menu item.<br />
<br />
===Find Edges===<br />
Equivalent to the [[Designer_Menu#Find_Edges|Helpers, Find Edges]] menu item.<br />
<br />
===Find Faces===<br />
Equivalent to the [[Designer_Menu#Find_Faces|Helpers, Find Faces]] menu item.<br />
<br />
===Show Edges===<br />
Equivalent to the [[Designer_Menu#Show_Edges|View, Show Edges]] menu item.<br />
<br />
===Show Faces===<br />
Equivalent to the [[Designer_Menu#Show_Faces|View, Show Faces]] menu item.<br />
<br />
===Show Back Faces===<br />
Equivalent to the [[Designer_Menu#Show_Back_Faces|View, Show Back Faces]] menu item.<br />
<br />
===Move Grid===<br />
Equivalent to the [[Designer_Menu#Move_Grid|Helpers, Move Grid]] menu item.<br />
<br />
===XY Grid===<br />
Equivalent to the [[Designer_Menu#XY_Grid|Helpers, XY Grid]] menu item.<br />
<br />
===XZ Grid===<br />
Equivalent to the [[Designer_Menu#XZ_Grid|Helpers, XZ Grid]] menu item.<br />
<br />
===YZ Grid===<br />
Equivalent to the [[Designer_Menu#YZ_Grid|Helpers, YZ Grid]] menu item.<br />
<br />
===Position Grid===<br />
Equivalent to the [[Designer_Menu#Position_Grid|Helpers, Position Grid]] menu item.<br />
<br />
===Grid Spacing===<br />
Changes the spacing between lines in the grid.<br />
<br />
===Show Grid===<br />
Equivalent to the [[Designer_Menu#Show_Grid|Helpers, Show Grid]] menu item.<br />
<br />
===Grid Follows Work===<br />
Equivalent to the [[Designer_Menu#Grid_Follows_Work|Helpers, Grid Follows Work]] menu item.<br />
<br />
===Snap to Grid===<br />
Equivalent to the [[Designer_Menu#Snap_to_Grid|Helpers, Snap to Grid]] menu item.<br />
<br />
===Snap to Edges===<br />
Equivalent to the [[Designer_Menu#Snap_to_Edges|Helpers, Snap to Edges]] menu item.<br />
<br />
===Snap to Vertices===<br />
Equivalent to the [[Designer_Menu#Snap_to_Vertices|Helpers, Snap to Vertices]] menu item.<br />
<br />
===Coordinate Feedback===<br />
Shows coordinates relevant to the current drawing operation.<br />
<br />
When responding to coordinate input, the coordinate at the mouse pointer position is shown, relative to the grid. That coordinate is usually the location where the mouse pointer hits the grid, though it may change if the pointer snaps to an existing object.<br />
<br />
When dragging objects using the mouse pointer, the offset of the drag is shown. Dragging usually occurs in the grid plane, though it may change if the pointer snaps to an existing object.<br />
<br />
==Parts Window==<br />
[[file:DesignerParts.png|right|Parts]]<br />
The ''Parts'' window is displayed using the F6 key or the menu. It is typically docked at the right side of the designer window.<br />
<br />
The parts list contains every [[Design_Parts|part]] that is in the current design. This includes hull objects, imported meshes, rooms, berths, etc. This allows you to easily see everything within the design at once, and also provides buttons for toggling the visibility of each part, as well as other part properties. <br />
<br />
The parts list is also useful for selecting parts and deleting parts.<br />
<br />
===Id Column===<br />
Every part in a design is assigned a unique id number. Part id numbers may range from 1 to 65,535.<br />
<br />
Part id numbers are not preserved when copied and pasted between designs. Parts are assigned new ids when pasted into a design.<br />
<br />
===Name Column===<br />
The name column starts with an icon that indicates the kind of the [[Design_Parts|part]].<br />
<br />
The icon is followed by a text name assigned to the part. Names are assigned by the designer based on the type and properties of the part.<br />
<br />
===Group Column===<br />
The group column shows the name of the group assigned to each part. <br />
<br />
Select one or more parts and right-click to assign them to a group. Group names are chosen by the architect. Parts are assigned to groups as needed.<br />
<br />
Groups organize parts together. <br />
<br />
In building and spacecraft designs, groups define the rooms.<br />
* Group names become room names in the final blueprint, if the group contains a room void.<br />
* Room voids in the same group have the same internal air pressure.<br />
* All parts in the same group are lit similarly, according to room lighting.<br />
The '''Hull''' group is reserved for hull parts; it is never considered to be a room.<br />
Hull parts are lit according to the external environment of the building or spacecraft.<br />
* Parts with a blank group name are grouped with the hull, for lighting.<br />
<br />
In fence and wall blueprints, two groups are required: '''Post''' and '''Section'''.<br />
<br />
The '''Post''' group appears at each post of the final fence.<br />
The blueprint origin is where the post is placed on the ground,<br />
with +Z up according to the direction of gravity at the placement location.<br />
The post is oriented to align with the fence line on the ground.<br />
<br />
The '''Section''' group forms the fence between the posts, from post location to post location.<br />
A section of fence is designed from the origin, extending along the +X axis, with +Z up at each end.<br />
The +X extent of the section defines the typical post spacing of the fence.<br />
<br />
When placed on a world, the fence section is morphed to fit between two post locations.<br />
Post locations may vary in altitude and gravity direction and their spacing may vary from the typical section<br />
that is drawn.<br />
* The section origin, at Z=0, is placed at the first post.<br />
* The section +X extent, at Z=0, is placed at the second post.<br />
* The section geometry stretches accordingly.<br />
<br />
{| class="wikitable"<br />
! <br />
! On<br />
! Off<br />
! Description<br />
|-<br />
! Visibility Toggle<br />
| style="text-align:center;" | [[file:ScShow.png|40px]]<br />
| style="text-align:center;" | [[file:ScHide.png|40px]]<br />
| Toggles whether or not the part is visible.<br />
|-<br />
! Lock Toggle<br />
| style="text-align:center;" | [[file:ScLock.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnlock.png|40px]]<br />
| Toggles whether or not the part can be modified.<br />
|-<br />
! Omit Toggle<br />
| style="text-align:center;" | [[file:ScOmit.png|40px]]<br />
| style="text-align:center;" | [[file:ScInclude.png|40px]]<br />
| Toggles whether or not the part is included in the final design.<br />
|-<br />
! Seal Toggle<br />
| style="text-align:center;" | [[file:ScSeal.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnseal.png|40px]]<br />
| Toggles whether or not the part is sealed.<br />
|}<br />
<br />
==='''V'''isibility Column===<br />
Shows and controls the visibility state of parts. <br />
<br />
Parts can be made invisible to simplify the design view. Invisible parts are not selected when using the mouse in the scene. Editing functions do not operate on invisible parts.<br />
<br />
Left click to toggle the visibility of the selected parts. Right-click to choose visibility from a menu.<br />
<br />
Making a part invisible does not exclude it from the final design. Invisible parts are included in the final design.<br />
<br />
==='''L'''ock Column===<br />
Shows and controls the locked state of parts.<br />
<br />
Lock parts to protect them from accidental editing. The locked state of parts has no effect in the final design.<br />
<br />
Left click to toggle the lock of the selected parts. Right-click to choose the locked or unlocked state from a menu.<br />
<br />
==='''O'''mit Column===<br />
Shows and controls whether a part is omitted from the final design.<br />
<br />
Omit parts to prevent them from being included in the final design. Omitted parts are excluded from the design analysis report. Some parts are always omitted; they cannot be included.<br />
<br />
Excluded parts can be useful for reference purposes, as a way to keep images or geometry in the design that are not intended to be part of the final design. Parts that exist only as design tools are omitted regardless of this setting, e.g. door jigs.<br />
<br />
==='''S'''eal Column===<br />
Shows and controls whether a part is sealed.<br />
<br />
Parts remember who their architect was. Seal parts to prevent other architects from editing them in face mode. '''Only the architect of a part can seal or unseal the part.'''<br />
<br />
Sealed parts can be used in part mode like other whole parts. They can be moved, stretched, rotated, copied to the clipboard and saved into files. Whole part editing operations are mostly disabled when a sealed part is selected, to protect the design of the part from changes.<br />
<br />
A sealed part can be used as a jig but it cannot be cut using a jig.<br />
<br />
Only the architect of a sealed part can enter face mode when the part is selected. This prevents individual faces of sealed parts from being modified or copied to the clipboard by other architects.<br />
<br />
The design report lists all architects whose parts are included in a design.<br />
<br />
===State Column===<br />
Shows the current state of parts that can have multiple states, such as doors that can be open or closed. <br />
<br />
On some kinds of parts, a slide bar is shown for adjusting the transparency of the part.<br />
<br />
==Texture Wrapper Window==<br />
[[file:DesignerTextureWrapper.png|right|Texture Wrapper]]<br />
The ''Texture Wrapper'' window is displayed using the Shift+F6 key or the menu. It can be docked stacked on top of the parts window; tabs will appear at the bottom, to choose between them.<br />
<br />
'''The texture wrapper is only used in face mode.'''<br />
<br />
Texture wrapper is a tool for positioning textures on faces. <br />
Texture wrapper only operates on faces that are selected. <br />
The designer must be in face mode to select faces. <br />
<br />
The viewing area shows the texture applied to the faces. <br />
Edge lines of the faces are painted where the texture is mapped to them. <br />
The viewing area is blank when the texture differs between the selected faces. <br />
<br />
A combo box contains the current texture palette. <br />
Change the texture of faces by choosing a texture in the combo box. <br />
<br />
===Palette===<br />
A design has a palette of textures. <br />
Each face may refer to one of the textures in the palette for its primary surface texture. <br />
<br />
Faces reference palette entries. <br />
If the texture in a palette entry is changed, faces that refer to that palette entry will also change. <br />
<br />
Texture palette entries can be customized. <br />
Each palette entry can be loaded with a custom picture file or it can be configured to use one of the built-in <br />
textures included with the designer. <br />
<br />
The ''Material'' entry changes based on the material used to manufacture the design. <br />
Manufacturing material is configured in the design properties. <br />
The material texture can be overridden by loading a custom texture. <br />
When a custom texture is selected for the material entry, it no longer changes according to the manufacturing <br />
material.<br />
<br />
This is the material entry's only special behavior. <br />
The texture may be used on any faces that should change appearance based on material. <br />
<br />
The textures used for materials exist among the built-in choices included with the designer. <br />
To use one of those textures without it changing due to manufacturing material, <br />
simply assign it to a different palette entry. <br />
<br />
Custom picture files are limited to a size of 256x256 pixels. <br />
Pictures are automatically reduced to fit within that size, while maintaining aspect ratio. <br />
<br />
===Unwrap===<br />
Unwraps the faces onto the texture. A window presents options for unwrapping the faces.<br />
<br />
Texture unwrapper is a tool for automatically positioning textures on faces. <br />
Texture unwrapper only operates on faces that are selected.<br />
The designer must be in face mode to select faces.<br />
<br />
[[file:ScFigUnwrap.png|right|Unwrap Texture]]<br />
The term ''unwrap'' derives from the notion of unwrapping or unfolding the faces of a 3D solid onto a flat surface.<br />
The flat surface is the texture.<br />
<br />
Texture unwrapper is affected by the position and orientation of the grid.<br />
In particular, the texture pattern will start where the grid center corresponds to a face.<br />
<br />
A texture is selected from the design's texture palette.<br />
It will be applied to the selected faces.<br />
The size of the texture is specified, using the ''unit of measure'' configured in settings.<br />
<br />
Texture unwrapper offers several strategies to try keeping a continuous texture pattern around corners.<br />
Sometimes one strategy will produce a better result than another.<br />
<br />
Angle tolerance is used by all unwrap strategies except Unwrap by Face.<br />
Angle tolerance enables the unwrapper to group together faces with similar facing.<br />
<br />
'''Unwrap by Face''' maps each face individually.<br />
Texture is aligned to the plane of each face, with origin aligned to the grid center.<br />
Texture pattern restarts at each new face, without regard to others.<br />
No attempt is made to maintain a continuous texture pattern around corners.<br />
<br />
'''Unwrap by Facing''' maps faces in groups according to their facing.<br />
Texture is mapped to each group using a plane projection, with its origin aligned to the grid center.<br />
Texture pattern is continuous across all faces in each group.<br />
No attempt is made to maintain a continuous texture pattern around corners, between groups.<br />
<br />
'''Unwrap by Edges''' maps faces like Unwrap by Facing.<br />
Texture pattern continues around corners where possible.<br />
<br />
'''Unwrap by Edges Horizontally''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping horizontally rather than vertically.<br />
<br />
'''Unwrap by Edges Vertically''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping vertically rather than horizontally.<br />
<br />
===Plane Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a plane projection. Position of the grid plane affects the result.<br />
<br />
Plane projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a straight parallel projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture. <br />
<br />
The texture is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern is increasingly distorted as the angle of faces gets closer to perpendicular to the <br />
direction the texture is projected. <br />
The pattern smears along perpendicular faces.<br />
<br />
===Cylindrical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a cylindrical projection. Position of the grid plane affects the result.<br />
<br />
Cylindrical projection texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a cylindrical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture and the number of times the texture repeats around the cylinder. <br />
<br />
The texture is stretched into a cylinder that is aligned with the red X axis of the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows around the cylinder with distance from the axis. <br />
The pattern is sized along the X axis according to user choices, so it does not stretch in the X axis direction. <br />
<br />
Cylindrical mapping is useful for applying textures to spindles. <br />
Center the grid on the spindle's rotation axis, with the red X axis aligned to the spindle's rotation axis. <br />
Cylindrically apply a texture.<br />
<br />
===Spherical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a spherical projection. Position of the grid plane affects the result.<br />
<br />
Spherical projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a spherical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the number of times the texture repeats around the equator of a sphere. <br />
<br />
The texture is stretched into a sphere that is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
The center of the projection is the center of the grid plane. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows with distance from the center.<br />
<br />
===Repeat===<br />
Toggles a repeating pattern of the texture image, to aid in positioning. All textures repeat, regardless of this setting. <br />
<br />
The viewing area only shows faces that are selected in the scene. Vertices are highlighted when selected. Vertex selection matches the vertices selected in the scene. Vertices can be selected/deselected in the scene also. <br />
<br />
===Mouse Controls===<br />
* Left click an unselected vertex to select it. <br />
* Ctrl+left click a vertex to toggle its selection. <br />
* Left click a selected vertex, then drag, to move all selected vertices. <br />
* Left click in empty space to deselect all vertices; then drag, to drag a box to select vertices. <br />
* Ctrl+left click in empty space, then drag, to drag a box to toggle selection of vertices. <br />
* Right click then drag to pan the display. <br />
* Wheel to change view magnification. <br />
* Ctrl+wheel to change view magnification in larger steps. <br />
<br />
===Key Commands===<br />
*<code>A</code> selects all vertices. <br />
*<code>G</code> grabs selected vertices to move them. <br />
*<code>R</code> rotates selected vertices. <br />
*<code>S</code> stretches selected vertices. <br />
*<code>X</code> constraint. While moving, moves in X only. While stretching, stretches in X only. <br />
*<code>Y</code> constraint. While moving, moves in Y only. While stretching, stretches in Y only.<br />
<br />
=Spacecraft Design=<br />
For spacecraft designer specific information, see the [[Spacecraft Design]] page.<br />
<br />
==Design Checklist==<br />
The designer offers a checklist as a guide to completing a design. It provides general how-to instructions on how to design a spacecraft.<br />
<br />
Following is the text of the spacecraft design checklist. <br />
<br />
===Properties===<br />
Configure the structure. '''Required.'''<br />
<br />
The ''structure'' tells the designer what you are trying to make. Configure this right away. <br />
<br />
The structure affects the design analysis. It also affects the spacecraft when viewed in ''Preview Mode''. <br />
<br />
===Hull===<br />
Construct the hull. '''Required.'''<br />
<br />
''Hull'' parts are the most visible part of a spacecraft when it is seen from the outside. This is the spacecraft people see; make the hull look nice. <br />
<br />
Hull parts determine the volume of the spacecraft. Internal subsystems are allocated from this volume. Parts inside the hull do not reduce hull volume. <br />
<br />
Hull parts may overlap each other. Hull parts may not form separated pieces of a spacecraft. Hull parts must form a single contiguous spacecraft. <br />
<br />
Do not ''join'' hull parts together when done. Collision logic prefers simple hull parts instead of complicated hull parts.<br />
<br />
A concave depression into a hull part is always obstructed. Use hull voids to gain access to obstructed areas if needed. <br />
<br />
Hull parts are not required to form airtight shells; they can have holes. <br />
<br />
If you can see completely through a hull part, through an area that should be solid, its calculated volume may be incorrect. ''Door'', ''window'', ''room'' and ''room void'' parts inside the hull part will block such openings during volume calculations. It may be necessary to add faces, rooms, or room voids to a hull part with holes through it. <br />
<br />
A hull can be created by importing a 3DS or STL file. Many free spacecraft models are available on the Internet. They typically define only the outside shell and they rarely include textures, which makes them ideal for use here. <br />
<br />
The origin (0,0) location after the grid is reset is the center of gravity (CG) of the spacecraft. The CG is the point about which the spacecraft will pitch, roll, and yaw. <br />
<br />
To move the CG of a spacecraft, all the parts must be moved. Unhide and unlock all parts before proceeding. Position the grid at the desired CG and orientation: +X is starboard, +Y is forward, +Z is up. Select all the parts and ''Edit, Cut'' them. Use the ''Position Grid'' function and press '''S''' to reset the grid. ''Edit, Paste'' the parts at their new location. <br />
<br />
===Turrets===<br />
Construct gun turrets.<br />
<br />
A turret consists of a base that spins and an optional gun that tilts. The turret is remotely operated by a troop at a control station aboard the spacecraft. <br />
<br />
Turrets need an unobstructed field of fire. Turrets can hit their own hull and its occupants; NPCs avoid doing so. <br />
<br />
Draw the base of a turret on the hull using a mesh part. Select the base and use the ''Make Turret'' function. The function prompts for the base pivot point and pivot axis. If the turret spins backward when operated, use the ''Properties, Turret Base Position'' function to flip the pivot axis in the opposite direction. <br />
<br />
At this point the turret can be used. Gunfire will emit from the center of the turret base.<br />
<br />
To add a gun to a turret, right-click the Turret in the parts list and select ''Add State'' to add a Gun. Change the turret to the Gun state and draw a gun in face mode. Use the ''Properties, Turret Gun Position'' function to configure where the gun tilts, where it shoots, and where the gunner sees out when operating the turret. <br />
<br />
In the designer, a turret shows the faces of both the base and gun only when it is in the Gunner Screen state. Otherwise a turret only shows the faces appropriate to its current state.<br />
<br />
===Lights===<br />
Construct exterior lights.<br />
<br />
Exterior lights add visibility and draw attention. Interior lights are not represented by any part. <br />
<br />
The appearance of exterior lights can be created using mesh or hull parts. Hull parts have the advantage of adding hull volume. <br />
<br />
''Light Lens'' parts glow when the headlight of the spacecraft is on. Use ''Make Light Lens'' to convert each selected part into a light lens. Each lit light lens adds a glow sprite at the center of the part. <br />
<br />
''Nav Light Lens'' parts glow when the nav lights of the spacecraft are on. Use ''Make Navigation Light Lens'' to convert each selected part into a nav light lens. Each lit nav light lens adds a glow sprite at the center of the part. <br />
<br />
''Rotating Beacon Lens'' parts glow when the rotating beacons of the spacecraft are on. Position the grid to establish the beacon rotation axis, which will align with the Z axis when the beacon is made. Use ''Make Rotating Beacon Lens'' to convert each selected part into a rotating beacon. Each lit rotating beacon adds a rotating glow sprite at the center of the part. <br />
<br />
''Strobe Lens'' parts blink when the strobe lights of the spacecraft are on. Use ''Make Strobe Lens'' to convert each selected part into a strobe. Each lit strobe adds a glow sprite at the center of the part. <br />
<br />
===Landing Gear===<br />
Construct landing gear.<br />
<br />
Landing gear is optional. The spacecraft will settle on its hull without landing gear. <br />
<br />
Landing altitude is determined by the bottom extent of the spacecraft. Landing gear changes the extents of the spacecraft. In the presence of more than one landing gear part, the one that reaches the farthest down will determine the landing altitude. <br />
<br />
Build each landing gear using a mesh part. Use the ''Make Landing Gear'' function to convert the mesh into a ''Landing Gear'' part. <br />
===Rooms===<br />
Construct rooms inside the hull. '''Required.'''<br />
<br />
''Room'' parts do not contribute to collision logic. They exist only for appearance. Rooms are what players see most of the time they are aboard; make them look nice. <br />
<br />
Separate rooms should be spaced apart slightly, to allow for wall thickness between them. <br />
<br />
If the design will incorporate turbo lifts, draw one room for each turbo lift at only one of its stops. That room will become a turbo lift car in another step, after more parts have been added. <br />
<br />
===Meshes===<br />
Construct details.<br />
<br />
Use meshes to create '''control stations''', furnishings, equipment, and other interesting details. <br />
<br />
Meshes do not create an obstacle to movement. They exist only for appearance. Make them look nice. <br />
<br />
===Doorways===<br />
Cut doorways. '''Required.'''<br />
<br />
A ''door jig'' cuts a doorway from one room to another room, or from a room to a hull. The door jig cuts the faces, adds a lining of faces to the hole, and creates a ''Door'' part in the hole. <br />
<br />
Place a door jig into each room that will become a turbo lift. '''Do not cut doors into turbo lifts at this time.'''<br />
<br />
Jigs do not work when placed flat against a face. Raise jigs slightly above the floor before cutting doors.<br />
<br />
Jigs aren't perfect; they sometimes create too many or not enough faces when lining the hole. You may have to delete excess faces or draw missing faces there. <br />
<br />
===Windows===<br />
Cut windows. '''Required.'''<br />
<br />
A ''window jig'' cuts a window opening from one room to another room, or from a room to a hull. A window jig can also cut a window into a hull where no room exists on the inside. The window jig cuts the faces, adds a lining of faces to the hole, and creates a ''Window'' part in the hole. <br />
<br />
Windows are for human players. People like to see out; make lots of windows. NPCs do not need windows to operate a spacecraft. <br />
<br />
Translucent windows give the appearance of occupancy in areas where there may be no rooms at all. They do this by lighting and darkening while the spacecraft has power, which gives the impression that someone is in there. <br />
<br />
In some cases an entire hull part or some faces on a hull part would make a nice window. Use ''Split Faces'' in face mode to make a separate part from selected faces. The ''Make Window'' function converts the part into a window. <br />
<br />
===Control Stations===<br />
Add control stations. '''Required.'''<br />
<br />
Control stations are used by players and NPCs to operate subsystems of the spacecraft. In some cases the creation of the control station causes the appropriate subsystem to exist in the design. <br />
<br />
The simplest control stations to draw are the swivel consoles with chairs. They are simple because a built in model of a control station is used. You only have to specify the location and spin of the control station.<br />
<br />
Meshes are used to create the appearance of integrated control stations. The functions that create integrated control stations will prompt for the operator's location and body position. <br />
<br />
Some stations request additional information such as the screen position. The screen position can be changed by moving the face in face mode. Additional information can be changed using properties functions. <br />
<br />
Turrets require an integrated control station to operate them. Select a turret to add an integrated turret control station. <br />
<br />
Weapon stations request the weapon emit location. These weapons are omnidirectional and they do not hit their own hull or its contents. <br />
<br />
Troop posts provide a location for troops to be stationed when they are not operating a turret. <br />
<br />
===Panels===<br />
Add service and other panels.<br />
<br />
Service panels create a place at which a subsystem of the spacecraft can be repaired manually. In the absence of a service panel, a subsystem can only be repaired by an airport repair shop. Other panels simply provide information. <br />
<br />
Some service panels must be associated with the control station of the appropriate subsystem, to know what subsystem the panel is intended to service.<br />
<br />
''Alert Status Panels'' act as the speaker grill for alert tones. Alert sounds are emitted from alert status panels.<br />
<br />
''Room Life Support Panel'' must be associated with the room void it monitors. <br />
<br />
''World Map Panel'' aspect ratio is 2:1 for spherical worlds. Aspect ratio is 10:1 for ringworld arc sections. <br />
<br />
===Vehicles===<br />
Add vehicle parking spots.<br />
<br />
''Specific vehicle parking spots'' show a solid vehicle model in the spot with a small icon beneath them. <br />
<br />
''General vehicle parking spots'' show a bounding box that fits any vehicle that can park there. e.g. ''Ground vehicle parking spot'' shows a box large enough for any ground vehicle in the game. <br />
<br />
Spacecraft fill their vehicle parking spots by teleporting new vehicles from buildings in trade range. <br />
<br />
With a ''vehicle transporter'' in the design, vehicle parking spots act as vehicle transporter pads. A vehicle does not have to be able to move from its parking spot. The driver simply calls for transport on the comm. <br />
<br />
''Space vehicle launcher'' creates a launch pad and a launch path. While launching, a space vehicle travels along the path. It is not obstructed by the hull or anything else while launching. Voids are not required at the launcher or along the path. The exit end of the path must be clear of the hull. <br />
<br />
When a pilot requests launch, their space vehicle is teleported to an available launch pad. Doors associated with the launcher are opened and the vehicle is launched along the path. The departure speed of the vehicle is determined by the length of the path. Launcher doors close automatically after the vehicle is launched. <br />
<br />
''Space vehicle recovery subsystem'' creates a virtual runway for arriving space vehicles. It should be placed outside the hull. Allow for botched landings; sometimes a pilot has to go around. A space vehicle that stops along the centerline of the runway is teleported to an empty parking spot. <br />
<br />
===Details===<br />
Add berths and other details.<br />
<br />
''Berths'' define the accommodations for captain, officers, crew, troops and passengers. Berths are optional. <br />
<br />
When an avatar dies who has taken a berth aboard a spacecraft, they reappear in their berth aboard that spacecraft if the life support subsystem is functioning and the spacecraft has not been captured by an enemy. On a spacecraft with no berths, the avatar reappears at the helm. <br />
<br />
''Contrail emitters'' help to see and identify spacecraft. Contrails are much easier to see than a fast moving sparkling pixel. Contrails are colored according to each empire's preferences. The size of the contrail emitter part determines the size of the contrail.<br />
<br />
If no contrail emitters are added, a single contrail emitter will automatically be added at the center of the aft extents. This is not done for space stations. <br />
<br />
''Light bulb'' is the source of light emitted by the spacecraft when the headlights switch is on. The light can be omnidirectional or focused into a cone. The light bulb part is not visible in the final spacecraft. Emitted light is not shadowed by faces of the spacecraft. <br />
<br />
''Remote cameras'' are accessed by players using the command station. <br />
<br />
''Items'' can be placed in the design. Items are populated from the city's inventory when the spacecraft is manufactured. Players can take these items. Items are replenished from the spacecraft's cargo. <br />
<br />
===Voids===<br />
Carve out void spaces and add barriers. '''Required.'''<br />
<br />
The hull is treated as a solid mass through and through. Room meshes have no effect on this. <br />
<br />
Voids carve out the areas in which people, vehicles and other spacecraft can go. Barriers create obstacles inside those carved out areas. Voids and barriers are not visible in the final model. <br />
<br />
When two voids are placed next to each other, overlap them slightly. This assures a positive handoff as something moves from one void to another, without bouncing off an infinitesimally thin wall in between.<br />
<br />
Each void and barrier must form a single airtight bubble. There can be no holes or missing faces. Overlapping or excess faces will cause trouble. Concave areas are ok. <br />
<br />
Do not ''join'' voids together. It is better to have a few simple intersecting voids than one single complicated void. <br />
<br />
''Room Voids'' are placed inside rooms, turbo lifts and on ramps. Each operable door must have a room void in the doorway to connect the room voids accessed by the door. <br />
<br />
Voids must be as simple as possible with very few faces. Rooms can be very complex, bumpy, curvy and full of holes. Do not conform to every bump and bulge in the walls. Build simple voids just inside the bumps and most people will never notice. <br />
<br />
''Hull Voids'' allow access to areas of the hull that should '''not''' obstruct movement. <br />
<br />
''Barriers'' create obstacles to movement inside room voids. Barriers can be used to create stairs and ramps or to surround things the player should not walk through. Barriers should use extremely few faces. <br />
<br />
When blocking a large portion of a room void, consider making the room void smaller instead.<br />
<br />
Stairs can be created using a mesh that looks like stairs and a ramp-shaped barrier, instead of shaping the barrier to fit every step. Less faces are needed to make the barrier and movement on the stairs is smoother; it is also easier for small or legless creatures. <br />
<br />
===Turbo Lifts===<br />
Make turbo lifts functional.<br />
<br />
This step is required if you are building any turbo lifts in the design. Two concepts are introduced: doors and paths. They are discussed in detail in the following '''Doors''' and '''Paths''' steps. <br />
<br />
Select the turbo lift room, room void, and door jig for one turbo lift. Use the ''Make Turbo Lift'' function to fuse them together into a ''Turbo Lift'' part.<br />
<br />
Right-click on the turbo lift in the parts list and select ''Add Stop''. Provide a name for the current stop of the turbo lift. Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. The turbo lift must be outside a room to cut into it. The turbo lift must be inside a hull to cut out of it. <br />
<br />
Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
For each additional stop, do the following. <br />
<br />
* Add a stop name for the next stop position. The current stop of the car does not matter. <br />
<br />
* Use the ''Align Turbo Lift Stop'' function to position the car at the newly added stop. The turbo lift can be moved more than once while aligning it; only the final position matters. It is essential to use the ''Align Turbo Lift Stop'' command. Mouse drag moving and cut/copy/paste will change the positions of all stops at once. <br />
<br />
* Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. <br />
<br />
* Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
* When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
Repeat this step for each turbo lift in the design.<br />
<br />
===Paths===<br />
Add walk paths and ladder paths. '''Required.'''<br />
<br />
NPCs do not analyze or even see rooms or obstacles. They blindly trust paths to get them where they want to go. Simple well planned paths enable NPCs to quickly and efficiently move to any room. <br />
<br />
To get from one room to another, an NPC walks straight to the closest path node in their room. Then they follow the path to the closest node to the destination location in the final room. Then they walk directly to the destination location. Any obstruction along the way will physically stop them and their ability to recover from this is poor. Any break in the path along the way is uncrossable. <br />
<br />
NPCs know how to use doors, ladders and turbo lifts. NPCs do not know how to use multiple transporters; they won't beam from one transporter to another to move about, without orders. <br />
<br />
Walk paths should not be placed directly on the floor. A meter or less above the floor works well.<br />
<br />
Paths should be kept as simple as possible. <br />
<br />
Walk paths and ladder paths must form one continuous branching structure throughout the design, wherever NPCs are expected to find their way. It is ok to loop and branch as much as needed. <br />
<br />
Ladder paths are placed where the body is to travel, not inside the ladder rungs. When moving along a ladder path, the body is centered on the path and all obstructions are ignored. <br />
<br />
Each operable interior door needs a walk path that passes through the doorway and ends a short distance inside the room void on each side. Walk paths through hull doors have one end inside a room void and the other end outside the hull. <br />
<br />
Operable floor and ceiling hatches are created using doors. However they should incorporate a ladder path instead of a walk path, even if no ladder is depicted. <br />
<br />
===Doors===<br />
Make doors functional. '''Required.'''<br />
<br />
By now every doorway should have a door, a room void, and a path. The door jig created a ''Door'' part. If a jig was not used, draw a door using a mesh. Then use the ''Make Door'' command to convert the mesh into a ''Door'' that can open and close.<br />
<br />
Change the current state of the door to ''Open''. Select the door, room void and path together. Use the ''Associate Parts'' command to make them accessible only when the door is open.<br />
<br />
When making a hull door, the associated door parts must include a hull void. This distinguishes a hull door from an interior door. The hull void is usually needed to get through the collision margin around the hull. The hull void and room void associated with the hull door should overlap slightly near the middle of the doorway. <br />
<br />
To make a window in a door, simply make the appropriate faces transparent. This will serve as a window but it will not share lighting behavior with ''Window'' parts.<br />
<br />
When making a ramp, create the faces in the open state of the door. Then place a room void on the ramp to access the area on top of the ramp. Associate the room void with the open state of the door. Leave the group name of the room void blank so air pressure will match that of the outside. <br />
<br />
Door switches start out in the center of the door. Every door has two door switches that can be positioned using ''Properties, Door Switch Positions''. This is useful for large doors. <br />
<br />
When a switch is moved, a visual indicator of the new switch position should be created using a mesh, e.g. a small glowing box or ball. <br />
<br />
Paths in the room should have a node close enough to the switch to enable an NPC to operate the switch while standing at the node. Ideally this would be one of the nodes of the path segment associated with the open door. <br />
<br />
The icon for the door part shows what kind of door it is. Some changes require a door to be reanalyzed to determine what kind of door it has become. To reanalyze a door and set other properties, use the ''Properties, Door'' function. <br />
<br />
===Textures===<br />
Texture the faces. '''Required.'''<br />
<br />
Textures should be applied after all changes to the faces are completed. This saves retexturing later after edits are made. <br />
<br />
Textures are applied in face mode. Select faces in face mode and apply textures to them using various methods on the Texture Wrapper. <br />
<br />
The position of the grid affects every texturing command. A technique to insure all floor and ceiling tiles align throughout all rooms is to reset the grid before applying those textures. <br />
<br />
In addition to the base texture, faces have an effects texture layer that responds to the activity of certain subsystems. e.g. The appearance of active lit transporter pads is achieved in this way. <br />
<br />
===Decals===<br />
Add decals.<br />
<br />
Decals are textured faces that apply special rendering behavior to improve their appearance when placed on an underlying face.<br />
<br />
Decals are blended with underlying faces. This enables them to smoothly merge with underlying faces when the decal texture has transparent areas. Normally the transparent areas of textures are discarded which creates a crunchy edge on transparent areas. <br />
<br />
Decals are rendered with a slight offset from the face. That enables them to be drawn coplanar with the underlying faces without unsightly face collisions. <br />
<br />
A few generated decals are available, to display empire flag, empire name, and a few others. The color of word decals can be controlled by painting the faces. The decal that shows the name of a berth occupant must be associated with a berth. <br />
<br />
===Group Names===<br />
Assign group names. '''Required.'''<br />
<br />
Room voids are grouped to assign a name to the room. These room names appear in various user interfaces throughout the game. <br />
<br />
Room voids in the same group will have the same air pressure and lighting. Lighting is controlled by the player using Bright/Dim/Dark controls and it may come in through the windows. Room lighting can be preset using ''Properties, Room Lighting''. That is also where you specify if the room is normally exposed to sunlight. <br />
<br />
Meshes, rooms, control stations, windows, and items should be grouped with the room void they occupy so they will be lit appropriately. Doors can only be in one group; both sides of the door will be lit according to the chosen group. <br />
<br />
Translucent windows can be grouped together to cause them to be lit synchronously. This gives them the appearance of belonging to the same room, even if no room exists. <br />
<br />
Parts with no group name or the reserved name ''Hull'' will have atmosphere and lighting determined by the external environment. <br />
<br />
===Review===<br />
Review properties and design analysis. '''Required.'''<br />
<br />
Use the properties window to configure all settings and to adjust how much of the hull volume is allocated to each subsystem.<br />
<br />
===Finalize===<br />
Finalize the blueprint. '''Required.'''<br />
<br />
Finalize a blueprint to analyze it for errors and inconsistencies. Errors must be fixed before the blueprint can be used in the game. Warnings should be reviewed; changes may be needed but warnings do not prevent use of a blueprint. <br />
<br />
Finalize grabs a screen image to accompany the blueprint in the library. You can provide this image yourself. Use Preview mode to get a screen grab of your design the way it will look in the game. <br />
<br />
The finalize process is slow. It may produce a large number of errors and warnings that need to be fixed or analyzed. ''Previous Finalize Result'' shows the result of the last finalize attempt.<br />
<br />
===Preview===<br />
Preview the design. '''Required.'''<br />
<br />
Land on a world. Try to get out and see if you can get back aboard. <br />
<br />
Create crew to see that they can get to their stations.<br />
<br />
=Building Design=<br />
For building designer specific information, see the [[Building Design]] page.<br />
<br />
==Design Checklist==<br />
The designer offers a checklist as a guide to completing a design. It provides general how-to instructions on how to design a building.<br />
<br />
Following is the text of the building design checklist. <br />
<br />
===Properties===<br />
Configure the structure. '''Required.'''<br />
<br />
The ''structure'' tells the designer what you are trying to make. Configure this right away. <br />
<br />
'''The structure controls what parts can be used in the design.''' The structure also affects the design analysis. <br />
<br />
===Site===<br />
Create a site. '''Required.'''<br />
<br />
''Building'', ''street light'', ''bridge'', ''biodome'', and ''ground platform'' structures require a site on which to be built. The site provides information about how to grade the terrain and what to do with the rocks and plants there. <br />
<br />
A site is created using one or more site meshes. Each portion of a building that touches the ground should rest on a site for proper ground prep. Bridges usually have two sites, one at each end of the bridge. <br />
<br />
The origin (0,0) location after the grid is reset is the insertion point when placing the building on terrain in the game. Use the ''Position Grid'' function and press '''S''' to reset the grid. The front of the building faces in the +Y direction. <br />
<br />
The altitude of the insertion point determines the altitude of the entire site. This makes building sites easy to place at a comfortable altitude next to roads. Terrain modification caused by site meshes proceeds from that placement altitude. <br />
<br />
Coastal sites are drawn with the insertion point at the back of the building. These buildings are placed on the shore facing the water. The back offers a better location to determine the altitude than the water side. <br />
<br />
Terrain uses large triangles. A site mesh cannot cut a detailed excavation into the terrain, such as a swimming pool. Instead a site mesh could push the terrain down out of the way. Then a model of a pool with a broad span of concrete around it could make that rough pit look nice. <br />
<br />
===Hull===<br />
Construct the hull. '''Required.'''<br />
<br />
''Hull'' parts are the most visible part of a building when it is seen from the outside. This is the building people see; make the hull look nice. <br />
<br />
Hull parts determine the volume of the building. Internal subsystems are allocated from this volume. Parts inside the hull do not reduce hull volume. <br />
<br />
Hull parts may overlap each other. Hull parts may form multiple separate buildings on a site. No part of a building is required to touch the ground. <br />
<br />
Do not ''join'' hull parts together when done. Collision logic prefers simple hull parts instead of complicated hull parts.<br />
<br />
A concave depression into a hull part is always obstructed. Use hull voids to gain access to obstructed areas if needed. <br />
<br />
Hull parts are not required to form airtight shells; they can have holes. <br />
<br />
If you can see completely through a hull part, through an area that should be solid, its calculated volume may be incorrect. ''Door'', ''window'', ''room'' and ''room void'' parts inside the hull part will block such openings during volume calculations. It may be necessary to add faces, rooms, or room voids to a hull part with holes through it. <br />
<br />
A hull can be created by importing a 3DS or STL file. <br />
<br />
===Turrets===<br />
Construct gun turret.<br />
<br />
The only building that allows a gun turret is a ''military guard tower''. <br />
<br />
A turret consists of a base that spins and an optional gun that tilts. The turret is operated automatically by the building. <br />
<br />
Turrets need an unobstructed field of fire. Turrets can hit their own hull and its occupants; NPCs avoid doing so. <br />
<br />
Draw the base of a turret on the hull using a mesh part. Select the base and use the ''Make Turret'' function. The function prompts for the base pivot point and pivot axis. <br />
<br />
At this point the turret can be used. Gunfire will emit from the center of the turret base.<br />
<br />
To add a gun to a turret, right-click the Turret in the parts list and select ''Add State'' to add a Gun. Change the turret to the Gun state and draw a gun in face mode. Use the ''Properties, Turret Gun Position'' function to configure where the gun tilts, where it shoots, and where the gunner sees out when operating the turret. <br />
<br />
In the designer, a turret shows the faces of both the base and gun only when it is in the Gunner Screen state. Otherwise a turret only shows the faces appropriate to its current state.<br />
<br />
===Lights===<br />
Construct exterior lights.<br />
<br />
Exterior lights add visibility and draw attention. Interior lights are not represented by any part. <br />
<br />
The appearance of exterior lights can be created using mesh or hull parts. <br />
<br />
''Light Lens'' parts can only be used on a street light. They glow when it is dark outside; the glow is bright if the city has power. Use ''Make Light Lens'' to convert each selected part into a light lens. Each lit light lens adds a glow sprite at the center of the part. <br />
<br />
''Nav Light Lens'' parts glow when it is dark; building power is not needed. Use ''Make Navigation Light Lens'' to convert each selected part into a nav light lens. Each lit nav light lens adds a glow sprite at the center of the part. <br />
<br />
''Rotating Beacon Lens'' parts glow all the time light or dark; building power is not needed. Position the grid to establish the beacon rotation axis, which will align with the Z axis when the beacon is made. Use ''Make Rotating Beacon Lens'' to convert each selected part into a rotating beacon. Each lit rotating beacon adds a rotating glow sprite at the center of the part. <br />
<br />
''Strobe Lens'' parts blink all the time light or dark; building power is not needed. Use ''Make Strobe Lens'' to convert each selected part into a strobe. Each lit strobe adds a glow sprite at the center of the part. <br />
<br />
===Rooms===<br />
Construct rooms inside the hull.<br />
<br />
''Room'' parts do not contribute to collision logic. They exist only for appearance. Rooms of buildings are not often seen because players rarely enter buildings. <br />
<br />
Some building control stations are accessible to players. Those control stations must be placed in a room. <br />
<br />
Separate rooms should be spaced apart slightly, to allow for wall thickness between them. <br />
<br />
If the design will incorporate turbo lifts, draw one room for each turbo lift at only one of its stops. That room will become a turbo lift car in another step, after more parts have been added. <br />
<br />
===Meshes===<br />
Construct details.<br />
<br />
Use meshes to create '''control stations''', furnishings, equipment, and other interesting details. <br />
<br />
Meshes do not create an obstacle to movement. They exist only for appearance. Make them look nice. <br />
<br />
===Doorways===<br />
Cut doorways.<br />
<br />
A ''door jig'' cuts a doorway from one room to another room, or from a room to a hull. The door jig cuts the faces, adds a lining of faces to the hole, and creates a ''Door'' part in the hole. <br />
<br />
Place a door jig into each room that will become a turbo lift. '''Do not cut doors into turbo lifts at this time.'''<br />
<br />
Jigs do not work when placed flat against a face. Raise jigs slightly above the floor before cutting doors.<br />
<br />
Jigs aren't perfect; they sometimes create too many or not enough faces when lining the hole. You may have to delete excess faces or draw missing faces there. <br />
<br />
===Windows===<br />
Cut or construct windows.<br />
<br />
A ''window jig'' cuts a window opening from one room to another room, or from a room to a hull. A window jig can also cut a window into a hull where no room exists on the inside. The window jig cuts the faces, adds a lining of faces to the hole, and creates a ''Window'' part in the hole. <br />
<br />
Translucent windows give the appearance of occupancy in areas where there may be no rooms at all. They do this by lighting and darkening at night while the building has power, which gives the impression that someone is in there. <br />
<br />
In some cases an entire hull part or some faces on a hull part would make a nice window. Use ''Split Faces'' in face mode to make a separate part from selected faces. The ''Make Window'' function converts the part into a window. <br />
<br />
Windows for flat walled buildings can also be created as a surface detail. A window frame with a translucent window part raised slightly away from the wall surface works well. Then the window can be copy/pasted all over the building without cutting any faces. <br />
<br />
===Control Stations===<br />
Add control stations.<br />
<br />
Very few buildings need control stations. Control stations are used by players and NPCs to operate subsystems of the building. In some cases the creation of the control station causes the appropriate subsystem to exist in the design. <br />
<br />
The simplest control stations to draw are the swivel consoles with chairs. They are simple because a built in model of a control station is used. You only have to specify the location and spin of the control station.<br />
<br />
Meshes are used to create the appearance of integrated control stations. The functions that create integrated control stations will prompt for the operator's location and body position. <br />
<br />
Some stations request additional information such as the screen position. The screen position can be changed by moving the face in face mode. Additional information can be changed using properties functions. <br />
<br />
Turrets require an integrated control station to define the module present. Select a turret to add an integrated turret control station. The station cannot be manned; it should be embedded in the building. <br />
<br />
Weapon stations request the weapon emit location. These weapons are omnidirectional and they do not hit their own hull or its contents. Weapon stations are never manned so they can be embedded in the building. <br />
<br />
Troop posts provide a location for troops to be stationed. <br />
<br />
===Panels===<br />
Add panels.<br />
<br />
''Room Life Support Panel'' must be associated with the room void it monitors. <br />
<br />
''World Map Panel'' aspect ratio is 2:1 for spherical worlds. Aspect ratio is 10:1 for ringworld arc sections. <br />
<br />
===Vehicles===<br />
Add vehicle parking spots.<br />
<br />
''Specific vehicle parking spots'' show a solid vehicle model in the spot with a small icon beneath them. <br />
<br />
''General vehicle parking spots'' show a bounding box that fits any vehicle that can park there. e.g. ''Ground vehicle parking spot'' shows a box large enough for any ground vehicle in the game. <br />
<br />
Buildings fill their vehicle parking spots by teleporting new vehicles from factories to which they are connected. Vehicle factories fill their vehicle parking spots by manufacturing vehicles. <br />
<br />
With a ''vehicle transporter'' in the design, vehicle parking spots act as vehicle transporter pads. A vehicle does not have to be able to move from its parking spot. The driver simply calls for transport on the comm. <br />
<br />
''Space vehicle launcher'' creates a launch pad and a launch path. While launching, a space vehicle travels along the path. It is not obstructed by the hull or anything else while launching. Voids are not required at the launcher or along the path. The exit end of the path must be clear of the hull. <br />
<br />
When a pilot requests launch, their space vehicle is teleported to an available launch pad. Doors associated with the launcher are opened and the vehicle is launched along the path. The departure speed of the vehicle is determined by the length of the path. Launcher doors close automatically after the vehicle is launched. <br />
<br />
''Space vehicle recovery subsystem'' creates a virtual runway for arriving space vehicles. It should be placed outside the hull. Allow for botched landings; sometimes a pilot has to go around. A space vehicle that stops along the centerline of the runway is teleported to an empty parking spot. <br />
<br />
===Details===<br />
Add berths and other details.<br />
<br />
''Light bulb'' is the source of light emitted by the street light building when it gets dark. The light can be omnidirectional or focused into a cone. The light bulb part is not visible in the final building. Emitted light is not shadowed by faces of the building. <br />
<br />
''Items'' can be placed in the design. Items are populated from the city's inventory when the building is constructed. Players can take these items. Items are replenished from the city's inventory. <br />
<br />
===Voids===<br />
Carve out void spaces and add barriers.<br />
<br />
The hull is treated as a solid mass through and through. Room meshes have no effect on this. <br />
<br />
Voids carve out the areas in which people, vehicles and spacecraft can go. Barriers create obstacles inside those carved out areas. Voids and barriers are not visible in the final model. <br />
<br />
When two voids are placed next to each other, overlap them slightly. This assures a positive handoff as something moves from one void to another, without bouncing off an infinitesimally thin wall in between.<br />
<br />
Each void and barrier must form a single airtight bubble. There can be no holes or missing faces. Overlapping or excess faces will cause trouble. Concave areas are ok. <br />
<br />
Do not ''join'' voids together. It is better to have a few simple intersecting voids than one single complicated void. <br />
<br />
''Room Voids'' are placed inside rooms, turbo lifts and on ramps. Each operable door must have a room void in the doorway to connect the room voids accessed by the door. <br />
<br />
Voids must be as simple as possible with very few faces. Rooms can be very complex, bumpy, curvy and full of holes. Do not conform to every bump and bulge in the walls. Build simple voids just inside the bumps and most people will never notice. <br />
<br />
''Hull Voids'' allow access to areas of the hull that should '''not''' obstruct movement. <br />
<br />
''Barriers'' create obstacles to movement inside room voids. Barriers can be used to create stairs and ramps or to surround things the player should not walk through. Barriers should use extremely few faces. <br />
<br />
When blocking a large portion of a room void, consider making the room void smaller instead.<br />
<br />
Stairs can be created using a mesh that looks like stairs and a ramp-shaped barrier, instead of shaping the barrier to fit every step. Less faces are needed to make the barrier and movement on the stairs is smoother; it is also easier for small or legless creatures. <br />
<br />
===Turbo Lifts===<br />
Make turbo lifts functional.<br />
<br />
This step is required if you are building any turbo lifts in the design. Two concepts are introduced: doors and paths. They are discussed in detail in the following '''Doors''' and '''Paths''' steps. <br />
<br />
Select the turbo lift room, room void, and door jig for one turbo lift. Use the ''Make Turbo Lift'' function to fuse them together into a ''Turbo Lift'' part.<br />
<br />
Right-click on the turbo lift in the parts list and select ''Add Stop''. Provide a name for the current stop of the turbo lift. Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. The turbo lift must be outside a room to cut into it. The turbo lift must be inside a hull to cut out of it. <br />
<br />
Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
For each additional stop, do the following. <br />
<br />
* Add a stop name for the next stop position. The current stop of the car does not matter. <br />
<br />
* Use the ''Align Turbo Lift Stop'' function to position the car at the newly added stop. The turbo lift can be moved more than once while aligning it; only the final position matters. It is essential to use the ''Align Turbo Lift Stop'' command. Mouse drag moving and cut/copy/paste will change the positions of all stops at once. <br />
<br />
* Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. <br />
<br />
* Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
* When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
Repeat this step for each turbo lift in the design.<br />
<br />
===Paths===<br />
Add walk paths and ladder paths.<br />
<br />
This step is required if you have built any interior rooms. <br />
<br />
NPCs do not analyze or even see rooms or obstacles. They blindly trust paths to get them where they want to go. Simple well planned paths enable NPCs to quickly and efficiently move to any room. <br />
<br />
To get from one room to another, an NPC walks straight to the closest path node in their room. Then they follow the path to the closest node to the destination location in the final room. Then they walk directly to the destination location. Any obstruction along the way will physically stop them and their ability to recover from this is poor. Any break in the path along the way is uncrossable. <br />
<br />
NPCs know how to use doors, ladders and turbo lifts. NPCs do not know how to use multiple transporters; they won't beam from one transporter to another to move about, without orders. <br />
<br />
Walk paths should not be placed directly on the floor. A meter or less above the floor works well.<br />
<br />
Paths should be kept as simple as possible. <br />
<br />
Walk paths and ladder paths must form one continuous branching structure throughout the design, wherever NPCs are expected to find their way. It is ok to loop and branch as much as needed. <br />
<br />
Ladder paths are placed where the body is to travel, not inside the ladder rungs. When moving along a ladder path, the body is centered on the path and all obstructions are ignored. <br />
<br />
Each operable interior door needs a walk path that passes through the doorway and ends a short distance inside the room void on each side. Walk paths through hull doors have one end inside a room void and the other end outside the hull. <br />
<br />
Operable floor and ceiling hatches are created using doors. However they should incorporate a ladder path instead of a walk path, even if no ladder is depicted. <br />
<br />
===Doors===<br />
Make doors functional.<br />
<br />
This step is required if you have built any doors. <br />
<br />
By now every doorway should have a door, a room void, and a path. The door jig created a ''Door'' part. If a jig was not used, draw a door using a mesh. Then use the ''Make Door'' command to convert the mesh into a ''Door'' that can open and close.<br />
<br />
Change the current state of the door to ''Open''. Select the door, room void and path together. Use the ''Associate Parts'' command to make them accessible only when the door is open.<br />
<br />
When making a hull door, the associated door parts must include a hull void. This distinguishes a hull door from an interior door. The hull void is usually needed to get through the collision margin around the hull. The hull void and room void associated with the hull door should overlap slightly near the middle of the doorway. <br />
<br />
To make a window in a door, simply make the appropriate faces transparent. This will serve as a window but it will not share lighting behavior with ''Window'' parts.<br />
<br />
When making a ramp, create the faces in the open state of the door. Then place a room void on the ramp to access the area on top of the ramp. Associate the room void with the open state of the door. Leave the group name of the room void blank so air pressure will match that of the outside. <br />
<br />
Door switches start out in the center of the door. Every door has two door switches that can be positioned using ''Properties, Door Switch Positions''. This is useful for large doors. <br />
<br />
When a switch is moved, a visual indicator of the new switch position should be created using a mesh, e.g. a small glowing box or ball. <br />
<br />
Paths in the room should have a node close enough to the switch to enable an NPC to operate the switch while standing at the node. Ideally this would be one of the nodes of the path segment associated with the open door. <br />
<br />
The icon for the door part shows what kind of door it is. Some changes require a door to be reanalyzed to determine what kind of door it has become. To reanalyze a door and set other properties, use the ''Properties, Door'' function. <br />
<br />
===Textures===<br />
Texture the faces. '''Required.'''<br />
<br />
Textures should be applied after all changes to the faces are completed. This saves retexturing later after edits are made. <br />
<br />
Textures are applied in face mode. Select faces in face mode and apply textures to them using various methods on the Texture Wrapper. <br />
<br />
The position of the grid affects every texturing command. A technique to insure all floor and ceiling tiles align throughout all rooms is to reset the grid before applying those textures. <br />
<br />
In addition to the base texture, faces have an effects texture layer that responds to the activity of certain subsystems. e.g. The appearance of active lit transporter pads is achieved in this way. <br />
<br />
===Decals===<br />
Add decals.<br />
<br />
Decals are textured faces that apply special rendering behavior to improve their appearance when placed on an underlying face.<br />
<br />
Decals are blended with underlying faces. This enables them to smoothly merge with underlying faces when the decal texture has transparent areas. Normally the transparent areas of textures are discarded which creates a crunchy edge on transparent areas. <br />
<br />
Decals are rendered with a slight offset from the face. That enables them to be drawn coplanar with the underlying faces without unsightly face collisions. <br />
<br />
Two generated decals are available, to display empire flag and empire name. The color of the empire name decal can be controlled by painting the faces. <br />
<br />
===Group Names===<br />
Assign group names.<br />
<br />
This step is required if you have built any interior rooms. <br />
<br />
Room voids are grouped to assign a name to the room. These room names appear in various user interfaces throughout the game. <br />
<br />
Room voids in the same group will have the same air pressure and lighting. Lighting is controlled by the player using Bright/Dim/Dark controls and it may come in through the windows. Room lighting can be preset using ''Properties, Room Lighting''. That is also where you specify if the room is normally exposed to sunlight. <br />
<br />
Meshes, rooms, control stations, windows, and items should be grouped with the room void they occupy so they will be lit appropriately. Doors can only be in one group; both sides of the door will be lit according to the chosen group. <br />
<br />
Translucent windows can be grouped together to cause them to be lit synchronously. This gives them the appearance of belonging to the same room, even if no room exists. <br />
<br />
Parts with no group name or the reserved name ''Hull'' will have atmosphere and lighting determined by the external environment. <br />
<br />
===Review===<br />
Review properties and design analysis. '''Required.'''<br />
<br />
Use the properties window to configure all settings and to adjust how much of the hull volume is allocated to each subsystem.<br />
<br />
===Finalize===<br />
Finalize the blueprint. '''Required.'''<br />
<br />
Finalize a blueprint to analyze it for errors and inconsistencies. Errors must be fixed before the blueprint can be used in the game. Warnings should be reviewed; changes may be needed but warnings do not prevent use of a blueprint. <br />
<br />
Finalize grabs a screen image to accompany the blueprint in the library. You can provide this image yourself. Use Preview mode to get a screen grab of your design the way it will look in the game. <br />
<br />
The finalize process is slow. It may produce a large number of errors and warnings that need to be fixed or analyzed. ''Previous Finalize Result'' shows the result of the last finalize attempt.<br />
<br />
===Preview===<br />
Preview the design. '''Required.'''<br />
<br />
Place the building on terrain. See if the terrain is modified by the site meshes the way you expect. <br />
<br />
<br />
[[Category:Designer]]<br />
[[Category:Spacecraft]]<br />
[[Category:Buildings]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Designer&diff=10367Designer2024-02-25T01:34:11Z<p>Haxus: /* Design Checklist */</p>
<hr />
<div>The ''Designer'' is a modeling tool used to design spacecraft and building blueprints. <br />
<br />
The [[Designer Menu]] page describes each individual menu item.<br />
<br />
The [[Design Parts]] page describes each individual kind of part.<br />
<br />
=Architect=<br />
The person who creates a design is the architect of the design.<br />
The person who creates each part is the architect of that part.<br />
Parts retain their architect information with them.<br />
<br />
When multiple architects work on the same design, the architect who initiates the designer instance is the architect of the design.<br />
<br />
The analysis report for a design lists all architects whose parts are included in a design.<br />
<br />
=Blueprints=<br />
A blueprint is a design that has been analyzed and accepted for use in the game. Blueprints contain all of the information needed to make a functional building or spacecraft, such as its 3D model and design specifications. Blueprints are stored in a ''universal library'' where they are accessed by spacecraft and buildings during game play. Blueprints are identified by a unique number, assigned when stored in the library.<br />
<br />
Blueprints can be saved onto media items in an avatar's gear. Blank paper and blank disks can each hold only one blueprint. Storage devices can hold varying numbers of blueprints, depending on the device. <br />
<br />
Spacecraft, buildings, and storage devices reference their blueprints in the library throughout their lifetimes. Blueprints that are in use by game objects cannot be deleted. When a player deletes a blueprint, it may instead be deactivated in the library, until it is no longer referenced and it can be finally removed.<br />
<br />
In the designer and in this wiki, the word blueprint is used generally to refer to any design, whether or not it has been finalized.<br />
<br />
==In-Game Blueprint Exchange==<br />
The blueprint exchange provides a place for players to share blueprints with other players in the online game. Separate exchanges for spacecraft blueprints and building blueprints are accessed in the game. <br />
<br />
At the exchanges, blueprints can be published by architects and they can be purchased by players. Prices are in cronodollars ¢, the money of the game. Cronos are not related to real money. '''Spacecraft and building blueprints do not cost real money.''' <br />
<br />
Publishing is a way to share blueprints with other players. Publishing terms control the price and who is permitted to use the blueprint. <br />
<br />
'''A blueprint does not have to be published to be used in the game.''' A blueprint can be saved onto a storage device in your gear, then used to make buildings or spacecraft. Interfaces that request a blueprint know how to find them in your gear.<br />
<br />
==Web Blueprint Exchange==<br />
The web site offers access to a public blueprint exchange. This exchange is not connected with the in-game exchange in any way.<br />
<br />
The web blueprint exchange offers a place for players to publicly share their .SoH files. There are no publishing terms or restrictions. Blueprints posted to the web exchange are freely available for download by anyone on the Internet.<br />
<br />
===Prepare .SoH for Publishing===<br />
Two things should be done to prepare a .SoH file for publishing to the web blueprint exchange. <br />
<br />
Obstructions should be refreshed. Obstruction data provides volume information necessary to create the design analysis report. The report is presented on a web page in the exchange.<br />
<br />
A nice scene should be present in the view window. A screen grab of the scene is stored with the file. The screen grab is shown on the report. The screen grab is also shown on the button that accesses the report page.<br />
<br />
=Designer Access=<br />
The designer can be accessed both online and when playing offline solo.<br />
<br />
==Online Designer==<br />
Online, a designer is accessed by going to a [[Design_Studio|design studio]] building or by occupying a [[Design_Parts#Station.2C_Designer|designer station]] while aboard a spacecraft.<br />
<br />
To enter a designer at a design studio, display the ''Building'' (<code>F10</code>) window and click on the "Enter" button of a studio. When a studio is "Vacant", you may leave the password box blank or you may enter a password of your choice. The password you enter establishes that studio's password until the studio becomes vacant. To join an "Occupied" design studio, you must enter the password that was established by the first person to enter the studio.<br />
<br />
To enter a designer aboard a spacecraft, move to a designer station and enter the station by pressing the <code>E</code> key. Designers aboard a spacecraft are not password protected. Each designer station creates its own designer instance. People who enter the same designer station are placed in the same designer instance. The avatar enters the designer instance and their body does not remain at the station in the ship, like it does with other stations.<br />
<br />
Players may work together in the same studio to develop a design. In this case, the first player to enter the vacant studio is registered as the architect and owner of the design.<br />
<br />
==Offline Designer==<br />
When the game is launched, the designer can be entered ''solo'', instead of logging in to the game. Overall program performance is better when designing solo because no server is involved. Once a design is completed solo, it can be saved to a .SoH file. That file can be loaded into the on line designer, for storage in the universal library.<br />
<br />
=Design Process=<br />
General steps to making a design go something like this.<br />
* Adjust design properties to establish goals.<br />
* Create an exterior hull.<br />
* Create one or more rooms inside the hull.<br />
* Cut out doors and windows.<br />
* Create finer model details.<br />
* Apply textures and other effects to finish the surfaces.<br />
* Add details: control stations, berths, lights, display screens, etc.<br />
* Add room voids, paths and barriers.<br />
* Make doors operational.<br />
* Finalize the design.<br />
<br />
Designing typically involves creating many [[Design_Parts|''parts'']].<br />
Parts include things like hulls, rooms, jigs, lights, display screens, etc.<br />
<br />
Check design properties from time to time. It shows an assessment of the design, based on what you are trying to design.<br />
<br />
==Design Goal==<br />
Your goal as an architect is to make beautiful looking designs that are functional in the universe of Hazeron.<br />
Emphasis is placed on appearance over technical realism.<br />
<br />
Hull sections do not have to be sculpted to form airtight continuous shells where they join each other.<br />
This is inefficient and difficult to model.<br />
It is much better to butt an engine pylon into the side of the hull, rather than carving a hole so it can make a perfect junction.<br />
Carving that hole breaks the side face into many tiny faces.<br />
It is likely unnecessary, unless people are going to walk or see through the opening.<br />
<br />
A design does not require the interior to conform to the exterior.<br />
Your design may represent a large intricate spacecraft that appears to have many rooms.<br />
It is inefficient and unnecessary to create all of the interior rooms and detail that would exist in real life.<br />
Like a movie set, only a few key areas inside the hull need to be modeled.<br />
This enables the designer to efficiently achieve the look and feel desired, without laborious excess work.<br />
<br />
Interior details have no effect on the mass calculation of the design.<br />
Rich interior designs are encouraged.<br />
There is no performance advantage to making stark minimal interiors.<br />
<br />
Be efficient with your designs.<br />
There is no point in modeling details that can never be seen.<br />
A good example is a cargo hold full of cargo.<br />
An inefficient approach would be to build a huge room and fill it with shipping containers.<br />
Instead of being too literal, think of it like a movie set.<br />
It would be much more efficient to build only an accessible area representative of a cargo hold, with walls modeled and textured to look like stacks of shipping containers.<br />
Use those precious faces where they get the most impact; don't waste them.<br />
<br />
Remove faces that can never be seen. Many parts that contribute to the construction materials requirement of a design are affected by the total surface area of their faces. The amount of materials directly affects the construction time. Reducing faces will reduce the construction time and materials of a design.<br />
<br />
More parts are better than less.<br />
Parts help to manage large 3D models.<br />
Rendering information is collected and consolidated efficiently when the OpenGL model is constructed.<br />
It makes no difference in the final rendering if the information comes from one part or many.<br />
<br />
[[Design_Parts#Turbo_Lift|Turbo lifts]] help to make big designs feel elaborate and detailed on the inside, without extensive modeling effort. They are an effective scene change device in science fiction cinema and they are equally effective in the game, to give the feeling of being aboard a really big ship. They also save a lot of walking.<br />
<br />
==Part Mode vs Face Mode==<br />
Parts are composed of ''faces''.<br />
Faces have vertices and edges.<br />
To edit the faces of one or more selected parts, ''face mode'' is enabled.<br />
In a typical design session, face mode is enabled and disabled often, whenever the need arises to modify the faces that make up a part.<br />
<br />
Actions on the ''Parts'' menu operate on whole parts.<br />
Most actions on the Parts menu are disabled when face mode is enabled.<br />
Some part menu actions are only enabled when one or more parts are selected.<br />
<br />
Actions on the ''Face'' menu operate on faces of selected parts.<br />
Most actions on the Face menu are enabled when face mode is enabled.<br />
Textures are applied in face mode.<br />
<br />
==Geometry==<br />
Parts are represented by geometry that can be painted in an OpenGL scene.<br />
Geometry of parts is described by their vertices, edges and faces.<br />
<br />
===Vertices===<br />
Vertices contain 3D Cartesian coordinate locations that describe the position of edges and faces.<br />
Vertices also contain information needed when rendering.<br />
Texture coordinates are stored at vertices.<br />
Glow is emitted at vertices.<br />
<br />
Render information is interpolated between vertices.<br />
Thus, the glow of a vertex will fade off to a neighboring vertex that does not glow.<br />
<br />
Vertices also contain an up direction, for lighting calculations.<br />
The face menu commands ''Flatten Vertices'' and ''Smooth Vertices'' operate on vertex up directions.<br />
<br />
===Edges===<br />
Edges are the visible lines that go from one vertex to another to reveal the boundaries of faces.<br />
Edges exist for the benefit of the designer, to see the model.<br />
Their presence or absence has no effect on the final rendering result.<br />
<br />
===Faces===<br />
Faces are flat surfaces that compose a 3D model.<br />
OpenGL paints faces in front of each other depending upon their Z-depth in the scene.<br />
This is the essence of how 3D scenes are painted by a computer.<br />
<br />
Faces have a front and a back.<br />
Faces are not visible from the back in the final rendering result.<br />
They can be seen from the back in the designer, if back face visibility is enabled.<br />
The object menu command ''Reverse Faces'' flips their facing back and forth.<br />
<br />
''Facing direction'' is determined by the direction the boundary is drawn. <br />
The boundary is clockwise when viewing the front of a face.<br />
The boundary is counterclockwise when viewing the back of a face.<br />
<br />
All faces are created equal.<br />
A face copied from one part and pasted into another becomes a face of the destination part.<br />
It is irrelevant if it came from a hull and gets added to a room.<br />
The part is the hull or room; the face is just a face.<br />
<br />
Faces do not "know" how they were created. A face created as part of an extrusion is no different from a face that is created individually. The extrusion command merely assembles faces into a desired shape.<br />
<br />
Faces should not be bent. They expect to represent a flat plane. A face should be drawn as multiple faces if a curved surface will be represented.<br />
<br />
Three foundational shapes exist.<br />
<br />
*Triangle - A face defined using a boundary of three vertices.<br />
*Quad - A face defined using a boundary of four vertices.<br />
*Face - A face defined using a boundary with three or more vertices.<br />
<br />
==Shapes==<br />
Shapes use parameter-driven methods to generate faces. Primitive shapes can provide a general starting point for more detailed modeling.<br />
<br />
The resulting shape may be modified like any other set of faces. The faces are in no way different than if an architect painstakingly built the same shape using faces. It is typical to generate a quick shape then rip it apart, to use some portion of it, or embellish it to mold it into what you want.<br />
<br />
===Extrusion===<br />
[[file:ScFigExtrusion.png|right|Extrusion]]<br />
An extrusion is formed by projecting a shape along a straight path. Examples include: rooms, beams. <br />
<br />
The creation of an extrusion begins by entering the shape that will be extruded. After the shape is entered, a window presents options to finalize the extrusion. Straight extrusion is made by simply entering the length. <br />
<br />
Faces are formed at the sides of the extrusion. Stepping allows the sides to be divided along the length of the extrusion.<br />
<br />
When the extrusion is generated, the shape follows a straight line. Both ends of the extrusion are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the extrusion shape.<br />
* Subsequent points are entered to describe the extrusion shape.<br />
* A window offers extrusion options.<br />
* Depending on extrusion options, a point may be entered to indicate the height or direction of the extrusion. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Sphere Lon/Lat===<br />
[[file:ScFigSphereLonLat.png|right|Longitude/Latitude Sphere]]<br />
A longitude/latitude sphere is divided into equal divisions of latitude and longitude. The faces are largest at the equator. The faces converge together at the poles. <br />
<br />
Creation of a longitude/latitude sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of latitude divisions and number of longitude divisions. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Sphere Uniform===<br />
[[file:ScFigSphereUniform.png|right|Uniform Sphere]]<br />
A uniform sphere is divided uniformly into triangle faces. All triangles are close to the same size. <br />
<br />
Creation of a uniform sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of divisions at the equator. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Spindle===<br />
[[file:ScFigSpindle.png|right|Spindle]]<br />
A spindle is created by spinning a shape around an axis. Objects with axial symmetry are created as spindles. Examples include: flying saucer, spool, furniture leg, column, dome, sphere, dinner plate, door knob, dish antenna. <br />
<br />
The creation of a spindle begins by entering the shape that will be spun around an axis. After the shape is entered, a window presents options to finalize the spindle. Options include the number of steps around the axis and the choice of axes. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the spindle shape.<br />
* Subsequent points are entered to describe the spindle shape.<br />
* A window offers spindle options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Tubing===<br />
[[file:ScFigTubing.png|right|Tubing]]<br />
Tubing is very similar to an extrusion except that the path may be complex, instead of simply extruding along a straight line. When the tubing shape is extruded along the path, corners are mitered appropriately.<br />
<br />
Tubing is not just for making water pipes. Tubing is used to make any closed shape that is extruded along a complex path. Examples include: piping, ducts, crown molding, baseboard trim, railroad tracks, hand rails, soffits, wall conforming consoles, base and wall cabinets, and counter tops. <br />
<br />
Creation of tubing begins by entering the path along which the tubing will travel. After the path is entered, a window presents options to finalize the tubing. <br />
<br />
Circular tubing is made by simply entering the diameter and number of sides for the tube. <br />
<br />
Other tubing shapes are created by drawing the cross section shape of the tubing. <br />
<br />
After drawing the shape of the tubing cross section, a guide point is entered on the shape. <br />
<br />
When the tubing is generated, the shape follows the path along the guide. Both ends of the tubing are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the tubing path.<br />
* Subsequent points are entered to describe the tubing path.<br />
* A window offers tubing options.<br />
* Depending on tubing options, a point may be entered to begin the tubing shape.<br />
* Subsequent points are entered to describe the tubing shape.<br />
* Guide point for the tubing shape is entered.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> displays options for completing the tube.<br />
<br />
==Jigs==<br />
<br />
Jigs are found underneath the Part menu button. There are many different types of Jigs, such as Door Jigs, Window Jigs, Launch Tube Jigs, Cutting Jigs, and Decal Jigs. They are created like any other hull or room objects, by selecting the Shape type (Extrusion, Sphere, Tubing, Spindle) and drawing the shape wanted. A physical object is then created and added to the Parts list as a Jig of the type selected. <br />
<br />
Jigs are used by positioning the created Jig object between two rooms, or between a hull and room, ensuring that the Jig penetrates both walls. Once this is positioned correctly, select all 3 objects at once using the Parts panel, and then select "Jig Cut" under the Design Menu button. The jig then cuts the walls in the shape of the jig, allowing you to create tube hallways as an example. The cut walls are then converted to the object type of the jig, such as the walls being converted into transparent glass if using a Window Jig, or door objects if using a Door Jig. <br />
<br />
Jigs can be used in order to create different types of objects, exits or walls between two rooms or the interior and exterior of a design. For example, the Door Jig creates a door between whatever rooms the Jig is placed between. The Window Jig creates a Window between the rooms, while the Launch Tube and Cutting jigs just create holes between the hull and room and cut the faces of each side, respectively. <br />
<br />
All jigs create faces between the two walls that they penetrate, in order to give walls thickness and prevent you from seeing any back-faces.<br />
<br />
==Origin==<br />
<br />
At the center of the design space is a yellow marker, drawn as three intersecting yellow lines.<br />
It does not move when the design grid moves.<br />
The immovable yellow marker is the true origin (0,0,0) location of the design space.<br />
That is the point at which a spacecraft will pivot, when it maneuvers. The origin is the insertion point when placing a building, that determines the altitude of the building on the terrain.<br />
<br />
==Obstructions, Voids, and Barriers==<br />
The obstruction model describes what areas of the design are solid and what areas of the design are not. It is used to determine where a person is standing on the floor and where they are allowed to stand, where vehicles collide with the design and where they go inside, where missiles and gunfire hit or pass through. The obstruction model describes the solid shape of the design and its accessible inside areas.<br />
<br />
The obstruction model cannot be seen. <br />
It exists somewhat like an electrical field around the design.<br />
The presence of the obstruction model can be felt by moving around the design. <br />
The menu toggle ''Blueprint, Solids Obstruct Movement'' must be checked to bump against the obstruction model.<br />
<br />
The obstruction model is created by analyzing the geometry of the design. <br />
A lot of processing effort is required to maintain the model so it is not done automatically with every modification to the design.<br />
The obstruction model is updated using the ''Blueprint, Refresh Obstructions'' menu option.<br />
<br />
The obstruction model is created from hull and landing gear parts, voids, and barriers.<br />
Each state of landing gear is represented so its obstruction shape changes when the gear is extended.<br />
<br />
The obstruction model envelopes each part individually.<br />
To get the best fitting obstruction model, it is beneficial to split elaborate hull parts into<br />
multiple simpler hull parts.<br />
<br />
The obstruction model includes a margin around hull and landing gear parts.<br />
This helps to prevent the eye camera of players from getting close enough to see inside, which breaks the illusion of solidity.<br />
It can also prevent someone from moving close enough to operate a door.<br />
<br />
''Voids'' are used to carve out the spaces accessible to players, from the solid shape created by the hull. Room parts do not contribute to the obstruction model. It is the voids that really determine where people can go inside.<br />
<br />
''Barriers'' are used to create obstructions inside voids. Sometimes it is easier to add a barrier than to change the shape of the room void. Barriers can also be used to create the floor under stairs and ramps.<br />
<br />
==Part Association==<br />
''Association'' is when a part references another part by its id number.<br />
<br />
Certain parts can be associated with certain other parts.<br />
Association is a loose connection between parts.<br />
The meaning of this association depends upon the parts involved.<br />
<br />
A part can be associated with only one other part.<br />
Any number of parts can be associated with the same part.<br />
<br />
Associations are created using the [[Designer_Menu#Associate_Parts|Part, Associate Parts]] command. Associations are removed using the [[Designer_Menu#Dissociate_Parts|Part, Dissociate Parts]].<br />
<br />
Part associations are used by the following parts.<br />
<br />
===Barriers===<br />
[[Design_Parts#Barrier|Barriers]] can be associated with a '''state of a door or landing gear'''.<br />
This determines which barriers are obstructions when the door or landing gear is operated.<br />
<br />
It is ok to associate more than one barrier with a state of a door or landing gear.<br />
<br />
===Berth Name Decals===<br />
[[Design_Parts#Decal.2C_Berth_Name|Berth name decals]] are associated with a '''berth'''.<br />
This determines which name to display on the decal.<br />
''Unassigned'' is displayed when the berth is not assigned.<br />
<br />
It is ok to associate more than one berth name decal to the same berth.<br />
<br />
===FTL Drive Service Panels===<br />
[[Design_Parts#Panel.2C_FTL_Drive|FTL drive service panel]] is associated with an '''engineer station'''.<br />
This determines which FTL drive the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
===Hull Voids===<br />
[[Design_Parts#Void.2C_Hull|Hull voids]] are associated with the '''open state of a door''', when making operable hull doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Association of a hull void and a room void to a door causes it to become a hull door. This enables the interior room void and the exterior hull void to become accessible at once, presumably overlapping each other so a person can move from one void to the other.<br />
<br />
Hull voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Room Life Support Status Panels===<br />
[[Design_Parts#Status.2C_Life_Support|Room life support status panel]] is associated with a '''room void'''.<br />
This determines which room's air pressure reading appears on the panel.<br />
<br />
It is ok to associate more than one life support status panel with a single room.<br />
<br />
===Room Voids===<br />
[[Design_Parts#Void.2C_Room|Room voids]] are associated with the '''open state of a door''', when making operable doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Room voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Walk Paths and Ladder Paths===<br />
[[Design_Parts#Path.2C_Walk|Walk paths]] and [[Design_Parts#Path.2C_Ladder|ladder paths]] are associated with the '''open state of a door''', when making operable doors.<br />
This guides NPCs to find their way through the door when it is open.<br />
<br />
Paths may be associated with any state of a door or landing gear to make access to the void dependent upon those states.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Weapon Service Panels===<br />
[[Design_Parts#Panel.2C_Weapon|Weapon service panel]] is associated with a '''fire control station'''.<br />
This determines which weapon the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
==Walk Paths==<br />
In order for [[NPC]]s to successfully move around the interior of a design with multiple rooms. <br />
<br />
The walk paths need to be above the floor, hip height is usually good. Each end of a walk path is referred to as a ''node'', NPCs will need to always have a clear line to the nearest walk path node in whatever room they are in, or else they will get stuck. Walk paths need to form a full network where each walk path has to start where another ends, so that an NPC that is standing in one room can go to their nearest walk path node and then path through the network to their destination room.<br />
<br />
[[File:WalkPathExample.png|thumb|none|Example of walk paths seen from above. Grey is room voids, blue is door room voids, red is walk path node, and green are the walk paths.]]<br />
<br />
NPC pathing strategy is fairly primitive. When they want to go somewhere, they look for the closest path end point to them that they can move straight to without obstructions. Similar logic is used to find the path node closest to the destination. There must be a complete end-to-end chain of path segments from beginning to end, from there on.<br />
<br />
===Common Mistakes===<br />
Common mistake 1. NPCs will always start by going to the nearest node in their room when they need to path to another room. If the NPC cannot find a path to its destination from its nearest walk path node it will be unable to go anywhere. A walk path is needed to connect the doors across the room from each other, so the NPC can find the closest node at the nearby door, then follow the path to the room containing the destination, then walk across the room straight to destination's room.<br />
<br />
[[File:WalkPathFail.png|thumb|none|Common mistake 1. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
Common mistake 2. NPCs will need a clear line to the nearest node in their room, or they will be unable to leave it. If there are walls or solid furniture inside the room that will prevent a NPC from having a clear line to the nearest walk path node, add a closer walk path node they can use to path to the room's exit.<br />
<br />
[[File:WalkPathFail2.png|thumb|none|Common mistake 2. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
==Finalize==<br />
When a design is complete, it undergoes a finalizing process to insure that it is usable for its intended purpose. The result of the finalize process is presented to the architect in a list. The list may contain green notes, amber warnings and red errors.<br />
<br />
* Green notes are merely informative, providing information about the finalize process.<br />
* Amber warnings bring attention to things that may indicate a design error or oversight was made. Warnings do not prevent a design from being finalized.<br />
* Red errors highlight aspects of the design that must be changed before it can be finalized.<br />
<br />
In the on line designer, a design that finalizes with no errors can be saved into the universal library. Once saved to the library, a unique blueprint number is assigned and reported back to the architect. Then the design can be built in the game and it can be published in the appropriate exchange.<br />
<br />
In the solo designer, a design that finalizes with no errors reports that it could be saved to the library if it was finalized on line.<br />
<br />
=Designer Interface=<br />
The designer interface is dominated by a first person 3D view of the design space. It is in this space that the design will appear as it is created. The mouse pointer is used in this view to select things. The mouse is also used to drag the selected things from one place to another, to move or copy them.<br />
<br />
Hover the mouse pointer over most buttons and controls to see a tool tip. Tool tips on buttons explain their function and they sometimes reveal features that are not obvious at first. The tool tips on some buttons change, depending on current conditions. <br />
<br />
==Grid==<br />
The grid is a tool for drawing, initially visible in the view as a faint grid of lines at floor level. <br />
<br />
The grid is more like a ruler, a measuring tool, than the lines on a piece of graph paper, a static medium. The architect will move and rotate the grid many times during a typical design session, as needed, wherever it helps to draw. <br />
<br />
When more than one person is in the designer, each person sees and interacts with their own grid.<br />
<br />
===Coordinate Systems===<br />
[[file:NumberLine.png|right|Number Line]]<br />
An understanding of coordinate systems is helpful to use the grid effectively. <br />
<br />
Real numbers extend to infinity, both positive and negative. This can be represented visually as a ''number line''. Whole numbers are placed at regular intervals along the line. Fractional numbers fall proportionally between the whole numbers. i.e. 1.5 is 50% of the way between 1 and 2.<br />
<br />
A number can be expressed in units of length, such as meters, in either the positive or negative direction, along the number line. The number is its ordinal value or ''ordinate''. <br />
<br />
That defines a one-dimensional vector. The absolute value of the number is its length. The sign of the number indicates the direction, either positive or negative.<br />
[[file:CoordinateSystem.png|left|Cartesian Coordinate System]]<br />
A ''Cartesian coordinate system'' is created when two number lines are placed perpendicular to each other, so they cross at 0. In a Cartesian coordinate system, each number line is called an ''axis''. They are named X and Y.<br />
<br />
A plane is formed by the intersection of the two axes, called the ''XY plane''. At any location in the plane, the X ordinate and the Y ordinate can be determined by dropping the point perpendicular to the respective axes. Knowing that, we can plot any location in the plane if we know the X ordinate and the Y ordinate at the location.<br />
<br />
The combination of ordinates is called ''coordinates''. Coordinates are expressed using notation like this (X, Y). In the picture, the coordinates of the starship are (-4, -2). The coordinates of the asteroid are (2.5, 3). Coordinates (0,0) are called the ''origin'', because that is where the numbers originate, or begin, for all axes.<br />
<br />
This is a 2 dimensional (2D) coordinate system because it expresses locations as dimensions measured along two axes.<br />
[[file:3DCoordinateSystem.png|right|3D Coordinate System]]<br />
A third axis can be added perpendicular to each of the other two axes. It is named Z. <br />
<br />
Using the coordinates of three axes, any location in space can be described. This is a 3 dimensional (3D) coordinate system because it expresses locations as dimensions measured along three axes. 3D coordinates are expressed like this (X, Y, Z).<br />
<br />
====Right Hand Rule====<br />
Which way does the Z axis go? There are two possible orientations. <br />
<br />
Hazeron uses the right-hand rule for making that determination. It can be visualized by looking at the right hand held out flat. The thumb points in the direction of the positive X axis. The index finger points in the direction of the positive Y axis. Curl the remaining fingers upward, perpendicular to the palm. The middle finger points in the direction of the positive Z axis.<br />
<br />
Mathematically, that means the Z axis is equal to the cross product of the X axis against the Y axis.<br />
<br />
<code>Z = X cross Y</code><br />
<br />
Rotations around axes are also determined using the right hand rule. The positive direction of angular rotation around each axis can be determined by grasping the axis with the right hand, with the thumb pointing in the positive direction. The fingers curl around the axis in the positive angle direction.<br />
<br />
====Absolute Coordinate System====<br />
The ''absolute coordinate system'' underlies all geometry in the designer.<br />
<br />
The absolute coordinate system is indicated by an immovable yellow marker. It is visible in the view as three short intersecting XYZ axis lines.<br />
<br />
That is where the grid starts in a new drawing. To put the grid back to that position, use the [[Designer_Menu#Position_Grid|Position Grid]] command, then choose the '''S=Reset''' option.<br />
<br />
Mathematically, the grid shows the position of a 4x4 transformation matrix. The absolute coordinate system is defined as the identity matrix.<br />
<br />
<code>1 0 0 0</code><br><br />
<code>0 1 0 0</code><br><br />
<code>0 0 1 0</code><br><br />
<code>0 0 0 1</code><br />
<br />
*Origin is at (0,0,0).<br />
*X axis vector is (1,0,0).<br />
*Y axis vector is (0,1,0).<br />
*Z axis vector is (0,0,1).<br />
<br />
===Visible Grid===<br />
The visible grid represents a 3D coordinate system. Axis lines are bright in the positive direction and dim in the negative direction. The position of X is shown as a red line. The position of Y is shown as a green line. The position of Z is shown as a blue line.<br />
<br />
X and Y lines are marked at the ends with the axis name and direction.<br />
<br />
The XY plane contains lines parallel to the X and Y axes, forming a visible grid. Regular interval spacing between the grid lines is controlled by a combo box control on the reference tool bar. <br />
<br />
Grid colors are controlled on the Designer page of the Settings window.<br />
<br />
[[Designer_Menu#Show_Grid|Grid visibility]] can be turned off. <br />
<br />
Grid rounding can be turned on or off, independently of the grid visibility state.<br />
<br />
===Grid as a Tool===<br />
All drawing takes place in the 3D coordinate system of the grid. Position the grid to draw anywhere in the drawing, using coordinates relative to the subject matter. This is typically done frequently while creating a design, using commands accessed on the [[Designer#Reference_Tool_Bar|reference tool bar]] and the [[Designer_Menu#Helpers|helpers menu]].<br />
<br />
[[Designer#Coordinate_Input|Coordinates entered into the input tool bar]] are relative to the grid. <br />
<br />
Freehand drawing happens in the plane of the grid. In the view, the location of the mouse pointer is projected straight into the screen until it intersects the XY plane of the grid, regardless of the visibility state of the grid. If ''Snap to Grid'' is enabled, that location will be rounded to the nearest grid line intersection. Various snapping switches can be enabled. Grid rounding behavior is overridden when the mouse pointer snaps to existing geometry.<br />
<br />
Most drawing commands terminate/replace the current drawing command; grid positioning commands suspend the current drawing command instead. Whenever a drawing command is requesting point input, a grid positioning command can be invoked. Upon termination of the grid positioning command, the suspended drawing command will resume its request for point input.<br />
<br />
When selected geometry is copied to the clipboard, the geometry on the clipboard is in the coordinate space of the grid, at the time of the copy.<br />
<br />
When geometry is pasted from the clipboard, it is placed in the coordinate space of the grid, at its location at the time of the paste.<br />
<br />
For example, move the grid to the center of a selected part. Copy that part to the clipboard. Move the grid. Paste the clipboard; it will be added at the new location of the grid. Use [[Designer_Menu#Paste_At|Paste At]] to place more than one of them.<br />
<br />
==Menu Bar==<br />
[[file:DesignerMenu.png|right|Menu Bar]]<br />
At the top of the designer interface is a menu bar. Most functions of the program can be accessed using the menu bar.<br />
<br />
See [[Designer_Menu|designer menu]] for a list of the items on the menu bar.<br />
<br />
==Input Tool Bar==<br />
[[file:DesignerInputBar.png|right|Input Tool Bar]]<br />
The ''Input Tool Bar'' appears below the menu bar, at the left. It can be moved by dragging the dotted grip at the left end. Tool tips on the buttons explain their function.<br />
<br />
===Design Properties===<br />
Equivalent to the [[Designer_Menu#Properties|Blueprint, Properties]] menu item.<br />
<br />
===Refresh Obstructions===<br />
Equivalent to the [[Designer_Menu#Refresh_Obstructions|Blueprint, Refresh Obstructions]] menu item.<br />
<br />
===Solids Obstruct Movement===<br />
Equivalent to the [[Designer_Menu#Solids_Obstruct_Movement|Blueprint, Solids Obstruct Movment]] menu item.<br />
<br />
===Gravity===<br />
Equivalent to the [[Designer_Menu#Gravity_On.2FOff|Blueprint, Gravity On/Off]] menu item.<br />
<br />
===Preview===<br />
Equivalent to the [[Designer_Menu#Preview_On.2FOff|Blueprint, Preview On/Off]] menu item.<br />
<br />
===Preview Sun Position===<br />
Equivalent to the [[Designer_Menu#Preview_Settings|Blueprint, Preview Settings]] menu item.<br />
<br />
===Construct Building===<br />
Equivalent to the [[Designer_Menu#Preview_Place_Building|Blueprint, Preview Place Building]] menu item.<br />
<br />
===Preview People===<br />
Equivalent to the [[Designer_Menu#Preview_People|Blueprint, Preview People]] menu item.<br />
<br />
===Coordinate Input===<br />
Many design commands will ask the architect to enter a 3D point location. A location can then be entered by clicking with the mouse pointer in the view window. Alternatively, locations can be entered into the coordinate input box, at the end of the [[Designer#Input_Tool_Bar|Input Tool Bar]].<br />
<br />
3D coordinates are entered as '''X,Y,Z''' values, which are positive or negative offsets along the '''X''', '''Y''' and '''Z''' axes. <br />
Coordinates are not bracketed with parentheses.<br />
Omitted values are 0. e.g. <i>1,,2</i> is the same as <i>1,0,2</i>; <i>p2</i> is the same as <i>p2,0,0</i>; <i>a,3</i> is the same as <i>a0,3,0</i>.<br />
<br />
Polar coordinates are entered as '''pD,A,I''' values: '''D''' is distance from the origin; '''A''' is angle around the Z axis, positive counterclockwise and negative clockwise; '''I''' is the angle of inclination off the XY plane, positive above and negative below.<br />
<br />
Coordinates are relative to the location and orientation of the [[Designer#Grid|grid]] unless specified otherwise.<br />
<br />
Coordinates prefixed with '''a''' are ''absolute''. Absolute coordinates are relative to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]] of the design, ignoring the grid. e.g. ''a1.25,2.3,-4.5'' or ''ap2.5,-30,10''.<br />
<br />
Distances are interpreted in units depending upon the ''unit of measure'' setting. Whole numbers are interpreted as whole units of measure. For example, if the unit of measure is meters, which is the default, then 10 means 10 meters. Unit of measure is configured on the Designer page of the Settings window. Unit of measure can be changed at any time while drawing.<br />
<br />
====Rotating====<br />
Some design commands will ask the architect to enter a rotation value. e.g. rotate selected objects.<br />
<br />
Angles are entered in degrees.<br />
<br />
When responding to a request for rotation, input into the Coordinate Input box is interpreted as 3D rotation angles around the X, Y and Z axes. e.g. To rotate 45 degrees around the Z axis, enter 0,0,45, or simply ,,45.<br />
<br />
Positive and negative direction of rotation is determined by the [[Designer#Right_Hand_Rule|right hand rule]].<br />
<br />
====Scaling====<br />
Some design commands will ask the architect to enter a scale value. e.g. stretch selected objects.<br />
<br />
When responding to a request for scaling, input into the Coordinate Input box is interpreted as 3D stretch factors along the X, Y and Z axes. e.g. To double the overall size, enter 2,2,2; to reduce the X dimension by half, enter .5,1,1.<br />
<br />
====Move/Copy====<br />
When no design command is active, the coordinate input box can be used to move or copy the objects that are selected.<br />
* '''Move parts''' by entering a coordinate. The objects that are selected will be moved using the vector entered.<br />
* '''Copy parts''' by entering a coordinate while holding the <code>Ctrl</code> key. The objects that are selected will be copied and moved using the vector entered.<br />
<br />
==Reference Tool Bar==<br />
[[file:DesignerReferenceBar.png|right|Reference Tool Bar]]<br />
The ''Reference Tool Bar'' appears below the menu bar, to the right of the input tool bar. It can be moved by dragging the dotted grip at the left end.<br />
<br />
===Face Mode===<br />
Equivalent to the [[Designer_Menu#Face_Mode|Face, Face Mode]] menu item.<br />
<br />
===Isolate Parts===<br />
Equivalent to the [[Designer_Menu#Isolate_Parts|Face, Isolate Parts]] menu item.<br />
<br />
===Find Vertices===<br />
Equivalent to the [[Designer_Menu#Find_Vertices|Helpers, Find Vertices]] menu item.<br />
<br />
===Find Edges===<br />
Equivalent to the [[Designer_Menu#Find_Edges|Helpers, Find Edges]] menu item.<br />
<br />
===Find Faces===<br />
Equivalent to the [[Designer_Menu#Find_Faces|Helpers, Find Faces]] menu item.<br />
<br />
===Show Edges===<br />
Equivalent to the [[Designer_Menu#Show_Edges|View, Show Edges]] menu item.<br />
<br />
===Show Faces===<br />
Equivalent to the [[Designer_Menu#Show_Faces|View, Show Faces]] menu item.<br />
<br />
===Show Back Faces===<br />
Equivalent to the [[Designer_Menu#Show_Back_Faces|View, Show Back Faces]] menu item.<br />
<br />
===Move Grid===<br />
Equivalent to the [[Designer_Menu#Move_Grid|Helpers, Move Grid]] menu item.<br />
<br />
===XY Grid===<br />
Equivalent to the [[Designer_Menu#XY_Grid|Helpers, XY Grid]] menu item.<br />
<br />
===XZ Grid===<br />
Equivalent to the [[Designer_Menu#XZ_Grid|Helpers, XZ Grid]] menu item.<br />
<br />
===YZ Grid===<br />
Equivalent to the [[Designer_Menu#YZ_Grid|Helpers, YZ Grid]] menu item.<br />
<br />
===Position Grid===<br />
Equivalent to the [[Designer_Menu#Position_Grid|Helpers, Position Grid]] menu item.<br />
<br />
===Grid Spacing===<br />
Changes the spacing between lines in the grid.<br />
<br />
===Show Grid===<br />
Equivalent to the [[Designer_Menu#Show_Grid|Helpers, Show Grid]] menu item.<br />
<br />
===Grid Follows Work===<br />
Equivalent to the [[Designer_Menu#Grid_Follows_Work|Helpers, Grid Follows Work]] menu item.<br />
<br />
===Snap to Grid===<br />
Equivalent to the [[Designer_Menu#Snap_to_Grid|Helpers, Snap to Grid]] menu item.<br />
<br />
===Snap to Edges===<br />
Equivalent to the [[Designer_Menu#Snap_to_Edges|Helpers, Snap to Edges]] menu item.<br />
<br />
===Snap to Vertices===<br />
Equivalent to the [[Designer_Menu#Snap_to_Vertices|Helpers, Snap to Vertices]] menu item.<br />
<br />
===Coordinate Feedback===<br />
Shows coordinates relevant to the current drawing operation.<br />
<br />
When responding to coordinate input, the coordinate at the mouse pointer position is shown, relative to the grid. That coordinate is usually the location where the mouse pointer hits the grid, though it may change if the pointer snaps to an existing object.<br />
<br />
When dragging objects using the mouse pointer, the offset of the drag is shown. Dragging usually occurs in the grid plane, though it may change if the pointer snaps to an existing object.<br />
<br />
==Parts Window==<br />
[[file:DesignerParts.png|right|Parts]]<br />
The ''Parts'' window is displayed using the F6 key or the menu. It is typically docked at the right side of the designer window.<br />
<br />
The parts list contains every [[Design_Parts|part]] that is in the current design. This includes hull objects, imported meshes, rooms, berths, etc. This allows you to easily see everything within the design at once, and also provides buttons for toggling the visibility of each part, as well as other part properties. <br />
<br />
The parts list is also useful for selecting parts and deleting parts.<br />
<br />
===Id Column===<br />
Every part in a design is assigned a unique id number. Part id numbers may range from 1 to 65,535.<br />
<br />
Part id numbers are not preserved when copied and pasted between designs. Parts are assigned new ids when pasted into a design.<br />
<br />
===Name Column===<br />
The name column starts with an icon that indicates the kind of the [[Design_Parts|part]].<br />
<br />
The icon is followed by a text name assigned to the part. Names are assigned by the designer based on the type and properties of the part.<br />
<br />
===Group Column===<br />
The group column shows the name of the group assigned to each part. <br />
<br />
Select one or more parts and right-click to assign them to a group. Group names are chosen by the architect. Parts are assigned to groups as needed.<br />
<br />
Groups organize parts together. <br />
<br />
In building and spacecraft designs, groups define the rooms.<br />
* Group names become room names in the final blueprint, if the group contains a room void.<br />
* Room voids in the same group have the same internal air pressure.<br />
* All parts in the same group are lit similarly, according to room lighting.<br />
The '''Hull''' group is reserved for hull parts; it is never considered to be a room.<br />
Hull parts are lit according to the external environment of the building or spacecraft.<br />
* Parts with a blank group name are grouped with the hull, for lighting.<br />
<br />
In fence and wall blueprints, two groups are required: '''Post''' and '''Section'''.<br />
<br />
The '''Post''' group appears at each post of the final fence.<br />
The blueprint origin is where the post is placed on the ground,<br />
with +Z up according to the direction of gravity at the placement location.<br />
The post is oriented to align with the fence line on the ground.<br />
<br />
The '''Section''' group forms the fence between the posts, from post location to post location.<br />
A section of fence is designed from the origin, extending along the +X axis, with +Z up at each end.<br />
The +X extent of the section defines the typical post spacing of the fence.<br />
<br />
When placed on a world, the fence section is morphed to fit between two post locations.<br />
Post locations may vary in altitude and gravity direction and their spacing may vary from the typical section<br />
that is drawn.<br />
* The section origin, at Z=0, is placed at the first post.<br />
* The section +X extent, at Z=0, is placed at the second post.<br />
* The section geometry stretches accordingly.<br />
<br />
{| class="wikitable"<br />
! <br />
! On<br />
! Off<br />
! Description<br />
|-<br />
! Visibility Toggle<br />
| style="text-align:center;" | [[file:ScShow.png|40px]]<br />
| style="text-align:center;" | [[file:ScHide.png|40px]]<br />
| Toggles whether or not the part is visible.<br />
|-<br />
! Lock Toggle<br />
| style="text-align:center;" | [[file:ScLock.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnlock.png|40px]]<br />
| Toggles whether or not the part can be modified.<br />
|-<br />
! Omit Toggle<br />
| style="text-align:center;" | [[file:ScOmit.png|40px]]<br />
| style="text-align:center;" | [[file:ScInclude.png|40px]]<br />
| Toggles whether or not the part is included in the final design.<br />
|-<br />
! Seal Toggle<br />
| style="text-align:center;" | [[file:ScSeal.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnseal.png|40px]]<br />
| Toggles whether or not the part is sealed.<br />
|}<br />
<br />
==='''V'''isibility Column===<br />
Shows and controls the visibility state of parts. <br />
<br />
Parts can be made invisible to simplify the design view. Invisible parts are not selected when using the mouse in the scene. Editing functions do not operate on invisible parts.<br />
<br />
Left click to toggle the visibility of the selected parts. Right-click to choose visibility from a menu.<br />
<br />
Making a part invisible does not exclude it from the final design. Invisible parts are included in the final design.<br />
<br />
==='''L'''ock Column===<br />
Shows and controls the locked state of parts.<br />
<br />
Lock parts to protect them from accidental editing. The locked state of parts has no effect in the final design.<br />
<br />
Left click to toggle the lock of the selected parts. Right-click to choose the locked or unlocked state from a menu.<br />
<br />
==='''O'''mit Column===<br />
Shows and controls whether a part is omitted from the final design.<br />
<br />
Omit parts to prevent them from being included in the final design. Omitted parts are excluded from the design analysis report. Some parts are always omitted; they cannot be included.<br />
<br />
Excluded parts can be useful for reference purposes, as a way to keep images or geometry in the design that are not intended to be part of the final design. Parts that exist only as design tools are omitted regardless of this setting, e.g. door jigs.<br />
<br />
==='''S'''eal Column===<br />
Shows and controls whether a part is sealed.<br />
<br />
Parts remember who their architect was. Seal parts to prevent other architects from editing them in face mode. '''Only the architect of a part can seal or unseal the part.'''<br />
<br />
Sealed parts can be used in part mode like other whole parts. They can be moved, stretched, rotated, copied to the clipboard and saved into files. Whole part editing operations are mostly disabled when a sealed part is selected, to protect the design of the part from changes.<br />
<br />
A sealed part can be used as a jig but it cannot be cut using a jig.<br />
<br />
Only the architect of a sealed part can enter face mode when the part is selected. This prevents individual faces of sealed parts from being modified or copied to the clipboard by other architects.<br />
<br />
The design report lists all architects whose parts are included in a design.<br />
<br />
===State Column===<br />
Shows the current state of parts that can have multiple states, such as doors that can be open or closed. <br />
<br />
On some kinds of parts, a slide bar is shown for adjusting the transparency of the part.<br />
<br />
==Texture Wrapper Window==<br />
[[file:DesignerTextureWrapper.png|right|Texture Wrapper]]<br />
The ''Texture Wrapper'' window is displayed using the Shift+F6 key or the menu. It can be docked stacked on top of the parts window; tabs will appear at the bottom, to choose between them.<br />
<br />
'''The texture wrapper is only used in face mode.'''<br />
<br />
Texture wrapper is a tool for positioning textures on faces. <br />
Texture wrapper only operates on faces that are selected. <br />
The designer must be in face mode to select faces. <br />
<br />
The viewing area shows the texture applied to the faces. <br />
Edge lines of the faces are painted where the texture is mapped to them. <br />
The viewing area is blank when the texture differs between the selected faces. <br />
<br />
A combo box contains the current texture palette. <br />
Change the texture of faces by choosing a texture in the combo box. <br />
<br />
===Palette===<br />
A design has a palette of textures. <br />
Each face may refer to one of the textures in the palette for its primary surface texture. <br />
<br />
Faces reference palette entries. <br />
If the texture in a palette entry is changed, faces that refer to that palette entry will also change. <br />
<br />
Texture palette entries can be customized. <br />
Each palette entry can be loaded with a custom picture file or it can be configured to use one of the built-in <br />
textures included with the designer. <br />
<br />
The ''Material'' entry changes based on the material used to manufacture the design. <br />
Manufacturing material is configured in the design properties. <br />
The material texture can be overridden by loading a custom texture. <br />
When a custom texture is selected for the material entry, it no longer changes according to the manufacturing <br />
material.<br />
<br />
This is the material entry's only special behavior. <br />
The texture may be used on any faces that should change appearance based on material. <br />
<br />
The textures used for materials exist among the built-in choices included with the designer. <br />
To use one of those textures without it changing due to manufacturing material, <br />
simply assign it to a different palette entry. <br />
<br />
Custom picture files are limited to a size of 256x256 pixels. <br />
Pictures are automatically reduced to fit within that size, while maintaining aspect ratio. <br />
<br />
===Unwrap===<br />
Unwraps the faces onto the texture. A window presents options for unwrapping the faces.<br />
<br />
Texture unwrapper is a tool for automatically positioning textures on faces. <br />
Texture unwrapper only operates on faces that are selected.<br />
The designer must be in face mode to select faces.<br />
<br />
[[file:ScFigUnwrap.png|right|Unwrap Texture]]<br />
The term ''unwrap'' derives from the notion of unwrapping or unfolding the faces of a 3D solid onto a flat surface.<br />
The flat surface is the texture.<br />
<br />
Texture unwrapper is affected by the position and orientation of the grid.<br />
In particular, the texture pattern will start where the grid center corresponds to a face.<br />
<br />
A texture is selected from the design's texture palette.<br />
It will be applied to the selected faces.<br />
The size of the texture is specified, using the ''unit of measure'' configured in settings.<br />
<br />
Texture unwrapper offers several strategies to try keeping a continuous texture pattern around corners.<br />
Sometimes one strategy will produce a better result than another.<br />
<br />
Angle tolerance is used by all unwrap strategies except Unwrap by Face.<br />
Angle tolerance enables the unwrapper to group together faces with similar facing.<br />
<br />
'''Unwrap by Face''' maps each face individually.<br />
Texture is aligned to the plane of each face, with origin aligned to the grid center.<br />
Texture pattern restarts at each new face, without regard to others.<br />
No attempt is made to maintain a continuous texture pattern around corners.<br />
<br />
'''Unwrap by Facing''' maps faces in groups according to their facing.<br />
Texture is mapped to each group using a plane projection, with its origin aligned to the grid center.<br />
Texture pattern is continuous across all faces in each group.<br />
No attempt is made to maintain a continuous texture pattern around corners, between groups.<br />
<br />
'''Unwrap by Edges''' maps faces like Unwrap by Facing.<br />
Texture pattern continues around corners where possible.<br />
<br />
'''Unwrap by Edges Horizontally''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping horizontally rather than vertically.<br />
<br />
'''Unwrap by Edges Vertically''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping vertically rather than horizontally.<br />
<br />
===Plane Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a plane projection. Position of the grid plane affects the result.<br />
<br />
Plane projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a straight parallel projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture. <br />
<br />
The texture is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern is increasingly distorted as the angle of faces gets closer to perpendicular to the <br />
direction the texture is projected. <br />
The pattern smears along perpendicular faces.<br />
<br />
===Cylindrical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a cylindrical projection. Position of the grid plane affects the result.<br />
<br />
Cylindrical projection texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a cylindrical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture and the number of times the texture repeats around the cylinder. <br />
<br />
The texture is stretched into a cylinder that is aligned with the red X axis of the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows around the cylinder with distance from the axis. <br />
The pattern is sized along the X axis according to user choices, so it does not stretch in the X axis direction. <br />
<br />
Cylindrical mapping is useful for applying textures to spindles. <br />
Center the grid on the spindle's rotation axis, with the red X axis aligned to the spindle's rotation axis. <br />
Cylindrically apply a texture.<br />
<br />
===Spherical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a spherical projection. Position of the grid plane affects the result.<br />
<br />
Spherical projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a spherical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the number of times the texture repeats around the equator of a sphere. <br />
<br />
The texture is stretched into a sphere that is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
The center of the projection is the center of the grid plane. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows with distance from the center.<br />
<br />
===Repeat===<br />
Toggles a repeating pattern of the texture image, to aid in positioning. All textures repeat, regardless of this setting. <br />
<br />
The viewing area only shows faces that are selected in the scene. Vertices are highlighted when selected. Vertex selection matches the vertices selected in the scene. Vertices can be selected/deselected in the scene also. <br />
<br />
===Mouse Controls===<br />
* Left click an unselected vertex to select it. <br />
* Ctrl+left click a vertex to toggle its selection. <br />
* Left click a selected vertex, then drag, to move all selected vertices. <br />
* Left click in empty space to deselect all vertices; then drag, to drag a box to select vertices. <br />
* Ctrl+left click in empty space, then drag, to drag a box to toggle selection of vertices. <br />
* Right click then drag to pan the display. <br />
* Wheel to change view magnification. <br />
* Ctrl+wheel to change view magnification in larger steps. <br />
<br />
===Key Commands===<br />
*<code>A</code> selects all vertices. <br />
*<code>G</code> grabs selected vertices to move them. <br />
*<code>R</code> rotates selected vertices. <br />
*<code>S</code> stretches selected vertices. <br />
*<code>X</code> constraint. While moving, moves in X only. While stretching, stretches in X only. <br />
*<code>Y</code> constraint. While moving, moves in Y only. While stretching, stretches in Y only.<br />
<br />
=Spacecraft Design=<br />
For spacecraft designer specific information, see the [[Spacecraft Design]] page.<br />
<br />
==Design Checklist==<br />
The designer offers a checklist as a guide to completing a design. It provides general how-to instructions on how to design a spacecraft.<br />
<br />
Following is the text of the spacecraft design checklist. <br />
<br />
===Properties===<br />
Configure the structure. '''Required.'''<br />
<br />
The ''structure'' tells the designer what you are trying to make. Configure this right away. <br />
<br />
The structure affects the design analysis. It also affects the spacecraft when viewed in ''Preview Mode''. <br />
<br />
===Hull===<br />
Construct the hull. '''Required.'''<br />
<br />
''Hull'' parts are the most visible part of a spacecraft when it is seen from the outside. This is the spacecraft people see; make the hull look nice. <br />
<br />
Hull parts determine the volume of the spacecraft. Internal subsystems are allocated from this volume. Parts inside the hull do not reduce hull volume. <br />
<br />
Hull parts may overlap each other. Hull parts may not form separated pieces of a spacecraft. Hull parts must form a single contiguous spacecraft. <br />
<br />
Do not ''join'' hull parts together when done. Collision logic prefers simple hull parts instead of complicated hull parts.<br />
<br />
A concave depression into a hull part is always obstructed. Use hull voids to gain access to obstructed areas if needed. <br />
<br />
Hull parts are not required to form airtight shells; they can have holes. <br />
<br />
If you can see completely through a hull part, through an area that should be solid, its calculated volume may be incorrect. ''Door'', ''window'', ''room'' and ''room void'' parts inside the hull part will block such openings during volume calculations. It may be necessary to add faces, rooms, or room voids to a hull part with holes through it. <br />
<br />
A hull can be created by importing a 3DS or STL file. Many free spacecraft models are available on the Internet. They typically define only the outside shell and they rarely include textures, which makes them ideal for use here. <br />
<br />
The origin (0,0) location after the grid is reset is the center of gravity (CG) of the spacecraft. The CG is the point about which the spacecraft will pitch, roll, and yaw. <br />
<br />
To move the CG of a spacecraft, all the parts must be moved. Unhide and unlock all parts before proceeding. Position the grid at the desired CG and orientation: +X is starboard, +Y is forward, +Z is up. Select all the parts and ''Edit, Cut'' them. Use the ''Position Grid'' function and press '''S''' to reset the grid. ''Edit, Paste'' the parts at their new location. <br />
<br />
===Turrets===<br />
Construct gun turrets.<br />
<br />
A turret consists of a base that spins and an optional gun that tilts. The turret is remotely operated by a troop at a control station aboard the spacecraft. <br />
<br />
Turrets need an unobstructed field of fire. Turrets can hit their own hull and its occupants; NPCs avoid doing so. <br />
<br />
Draw the base of a turret on the hull using a mesh part. Select the base and use the ''Make Turret'' function. The function prompts for the base pivot point and pivot axis. If the turret spins backward when operated, use the ''Properties, Turret Base Position'' function to flip the pivot axis in the opposite direction. <br />
<br />
At this point the turret can be used. Gunfire will emit from the center of the turret base.<br />
<br />
To add a gun to a turret, right-click the Turret in the parts list and select ''Add State'' to add a Gun. Change the turret to the Gun state and draw a gun in face mode. Use the ''Properties, Turret Gun Position'' function to configure where the gun tilts, where it shoots, and where the gunner sees out when operating the turret. <br />
<br />
In the designer, a turret shows the faces of both the base and gun only when it is in the Gunner Screen state. Otherwise a turret only shows the faces appropriate to its current state.<br />
<br />
===Lights===<br />
Construct exterior lights.<br />
<br />
Exterior lights add visibility and draw attention. Interior lights are not represented by any part. <br />
<br />
The appearance of exterior lights can be created using mesh or hull parts. Hull parts have the advantage of adding hull volume. <br />
<br />
''Light Lens'' parts glow when the headlight of the spacecraft is on. Use ''Make Light Lens'' to convert each selected part into a light lens. Each lit light lens adds a glow sprite at the center of the part. <br />
<br />
''Nav Light Lens'' parts glow when the nav lights of the spacecraft are on. Use ''Make Navigation Light Lens'' to convert each selected part into a nav light lens. Each lit nav light lens adds a glow sprite at the center of the part. <br />
<br />
''Rotating Beacon Lens'' parts glow when the rotating beacons of the spacecraft are on. Position the grid to establish the beacon rotation axis, which will align with the Z axis when the beacon is made. Use ''Make Rotating Beacon Lens'' to convert each selected part into a rotating beacon. Each lit rotating beacon adds a rotating glow sprite at the center of the part. <br />
<br />
''Strobe Lens'' parts blink when the strobe lights of the spacecraft are on. Use ''Make Strobe Lens'' to convert each selected part into a strobe. Each lit strobe adds a glow sprite at the center of the part. <br />
<br />
===Landing Gear===<br />
Construct landing gear.<br />
<br />
Landing gear is optional. The spacecraft will settle on its hull without landing gear. <br />
<br />
Landing altitude is determined by the bottom extent of the spacecraft. Landing gear changes the extents of the spacecraft. In the presence of more than one landing gear part, the one that reaches the farthest down will determine the landing altitude. <br />
<br />
Build each landing gear using a mesh part. Use the ''Make Landing Gear'' function to convert the mesh into a ''Landing Gear'' part. <br />
===Rooms===<br />
Construct rooms inside the hull. '''Required.'''<br />
<br />
''Room'' parts do not contribute to collision logic. They exist only for appearance. Rooms are what players see most of the time they are aboard; make them look nice. <br />
<br />
Separate rooms should be spaced apart slightly, to allow for wall thickness between them. <br />
<br />
If the design will incorporate turbo lifts, draw one room for each turbo lift at only one of its stops. That room will become a turbo lift car in another step, after more parts have been added. <br />
<br />
===Meshes===<br />
Construct details.<br />
<br />
Use meshes to create '''control stations''', furnishings, equipment, and other interesting details. <br />
<br />
Meshes do not create an obstacle to movement. They exist only for appearance. Make them look nice. <br />
<br />
===Doorways===<br />
Cut doorways. '''Required.'''<br />
<br />
A ''door jig'' cuts a doorway from one room to another room, or from a room to a hull. The door jig cuts the faces, adds a lining of faces to the hole, and creates a ''Door'' part in the hole. <br />
<br />
Place a door jig into each room that will become a turbo lift. '''Do not cut doors into turbo lifts at this time.'''<br />
<br />
Jigs do not work when placed flat against a face. Raise jigs slightly above the floor before cutting doors.<br />
<br />
Jigs aren't perfect; they sometimes create too many or not enough faces when lining the hole. You may have to delete excess faces or draw missing faces there. <br />
<br />
===Windows===<br />
Cut windows. '''Required.'''<br />
<br />
A ''window jig'' cuts a window opening from one room to another room, or from a room to a hull. A window jig can also cut a window into a hull where no room exists on the inside. The window jig cuts the faces, adds a lining of faces to the hole, and creates a ''Window'' part in the hole. <br />
<br />
Windows are for human players. People like to see out; make lots of windows. NPCs do not need windows to operate a spacecraft. <br />
<br />
Translucent windows give the appearance of occupancy in areas where there may be no rooms at all. They do this by lighting and darkening while the spacecraft has power, which gives the impression that someone is in there. <br />
<br />
In some cases an entire hull part or some faces on a hull part would make a nice window. Use ''Split Faces'' in face mode to make a separate part from selected faces. The ''Make Window'' function converts the part into a window. <br />
<br />
===Control Stations===<br />
Add control stations. '''Required.'''<br />
<br />
Control stations are used by players and NPCs to operate subsystems of the spacecraft. In some cases the creation of the control station causes the appropriate subsystem to exist in the design. <br />
<br />
The simplest control stations to draw are the swivel consoles with chairs. They are simple because a built in model of a control station is used. You only have to specify the location and spin of the control station.<br />
<br />
Meshes are used to create the appearance of integrated control stations. The functions that create integrated control stations will prompt for the operator's location and body position. <br />
<br />
Some stations request additional information such as the screen position. The screen position can be changed by moving the face in face mode. Additional information can be changed using properties functions. <br />
<br />
Turrets require an integrated control station to operate them. Select a turret to add an integrated turret control station. <br />
<br />
Weapon stations request the weapon emit location. These weapons are omnidirectional and they do not hit their own hull or its contents. <br />
<br />
Troop posts provide a location for troops to be stationed when they are not operating a turret. <br />
<br />
===Panels===<br />
Add service and other panels.<br />
<br />
Service panels create a place at which a subsystem of the spacecraft can be repaired manually. In the absence of a service panel, a subsystem can only be repaired by an airport repair shop. Other panels simply provide information. <br />
<br />
Some service panels must be associated with the control station of the appropriate subsystem, to know what subsystem the panel is intended to service.<br />
<br />
''Alert Status Panels'' act as the speaker grill for alert tones. Alert sounds are emitted from alert status panels.<br />
<br />
''Room Life Support Panel'' must be associated with the room void it monitors. <br />
<br />
''World Map Panel'' aspect ratio is 2:1 for spherical worlds. Aspect ratio is 10:1 for ringworld arc sections. <br />
<br />
===Vehicles===<br />
Add vehicle parking spots.<br />
<br />
''Specific vehicle parking spots'' show a solid vehicle model in the spot with a small icon beneath them. <br />
<br />
''General vehicle parking spots'' show a bounding box that fits any vehicle that can park there. e.g. ''Ground vehicle parking spot'' shows a box large enough for any ground vehicle in the game. <br />
<br />
Spacecraft fill their vehicle parking spots by teleporting new vehicles from buildings in trade range. <br />
<br />
With a ''vehicle transporter'' in the design, vehicle parking spots act as vehicle transporter pads. A vehicle does not have to be able to move from its parking spot. The driver simply calls for transport on the comm. <br />
<br />
''Space vehicle launcher'' creates a launch pad and a launch path. While launching, a space vehicle travels along the path. It is not obstructed by the hull or anything else while launching. Voids are not required at the launcher or along the path. The exit end of the path must be clear of the hull. <br />
<br />
When a pilot requests launch, their space vehicle is teleported to an available launch pad. Doors associated with the launcher are opened and the vehicle is launched along the path. The departure speed of the vehicle is determined by the length of the path. Launcher doors close automatically after the vehicle is launched. <br />
<br />
''Space vehicle recovery subsystem'' creates a virtual runway for arriving space vehicles. It should be placed outside the hull. Allow for botched landings; sometimes a pilot has to go around. A space vehicle that stops along the centerline of the runway is teleported to an empty parking spot. <br />
<br />
===Details===<br />
Add berths and other details.<br />
<br />
''Berths'' define the accommodations for captain, officers, crew, troops and passengers. Berths are optional. <br />
<br />
When an avatar dies who has taken a berth aboard a spacecraft, they reappear in their berth aboard that spacecraft if the life support subsystem is functioning and the spacecraft has not been captured by an enemy. On a spacecraft with no berths, the avatar reappears at the helm. <br />
<br />
''Contrail emitters'' help to see and identify spacecraft. Contrails are much easier to see than a fast moving sparkling pixel. Contrails are colored according to each empire's preferences. The size of the contrail emitter part determines the size of the contrail.<br />
<br />
If no contrail emitters are added, a single contrail emitter will automatically be added at the center of the aft extents. This is not done for space stations. <br />
<br />
''Light bulb'' is the source of light emitted by the spacecraft when the headlights switch is on. The light can be omnidirectional or focused into a cone. The light bulb part is not visible in the final spacecraft. Emitted light is not shadowed by faces of the spacecraft. <br />
<br />
''Remote cameras'' are accessed by players using the command station. <br />
<br />
''Items'' can be placed in the design. Items are populated from the city's inventory when the spacecraft is manufactured. Players can take these items. Items are replenished from the spacecraft's cargo. <br />
<br />
===Voids===<br />
Carve out void spaces and add barriers. '''Required.'''<br />
<br />
The hull is treated as a solid mass through and through. Room meshes have no effect on this. <br />
<br />
Voids carve out the areas in which people, vehicles and other spacecraft can go. Barriers create obstacles inside those carved out areas. Voids and barriers are not visible in the final model. <br />
<br />
When two voids are placed next to each other, overlap them slightly. This assures a positive handoff as something moves from one void to another, without bouncing off an infinitesimally thin wall in between.<br />
<br />
Each void and barrier must form a single airtight bubble. There can be no holes or missing faces. Overlapping or excess faces will cause trouble. Concave areas are ok. <br />
<br />
Do not ''join'' voids together. It is better to have a few simple intersecting voids than one single complicated void. <br />
<br />
''Room Voids'' are placed inside rooms, turbo lifts and on ramps. Each operable door must have a room void in the doorway to connect the room voids accessed by the door. <br />
<br />
Voids must be as simple as possible with very few faces. Rooms can be very complex, bumpy, curvy and full of holes. Do not conform to every bump and bulge in the walls. Build simple voids just inside the bumps and most people will never notice. <br />
<br />
''Hull Voids'' allow access to areas of the hull that should '''not''' obstruct movement. <br />
<br />
''Barriers'' create obstacles to movement inside room voids. Barriers can be used to create stairs and ramps or to surround things the player should not walk through. Barriers should use extremely few faces. <br />
<br />
When blocking a large portion of a room void, consider making the room void smaller instead.<br />
<br />
Stairs can be created using a mesh that looks like stairs and a ramp-shaped barrier, instead of shaping the barrier to fit every step. Less faces are needed to make the barrier and movement on the stairs is smoother; it is also easier for small or legless creatures. <br />
<br />
===Turbo Lifts===<br />
Make turbo lifts functional.<br />
<br />
This step is required if you are building any turbo lifts in the design. Two concepts are introduced: doors and paths. They are discussed in detail in the following '''Doors''' and '''Paths''' steps. <br />
<br />
Select the turbo lift room, room void, and door jig for one turbo lift. Use the ''Make Turbo Lift'' function to fuse them together into a ''Turbo Lift'' part.<br />
<br />
Right-click on the turbo lift in the parts list and select ''Add Stop''. Provide a name for the current stop of the turbo lift. Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. The turbo lift must be outside a room to cut into it. The turbo lift must be inside a hull to cut out of it. <br />
<br />
Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
For each additional stop, do the following. <br />
<br />
* Add a stop name for the next stop position. The current stop of the car does not matter. <br />
<br />
* Use the ''Align Turbo Lift Stop'' function to position the car at the newly added stop. The turbo lift can be moved more than once while aligning it; only the final position matters. It is essential to use the ''Align Turbo Lift Stop'' command. Mouse drag moving and cut/copy/paste will change the positions of all stops at once. <br />
<br />
* Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. <br />
<br />
* Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
* When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
Repeat this step for each turbo lift in the design.<br />
<br />
===Paths===<br />
Add walk paths and ladder paths. '''Required.'''<br />
<br />
NPCs do not analyze or even see rooms or obstacles. They blindly trust paths to get them where they want to go. Simple well planned paths enable NPCs to quickly and efficiently move to any room. <br />
<br />
To get from one room to another, an NPC walks straight to the closest path node in their room. Then they follow the path to the closest node to the destination location in the final room. Then they walk directly to the destination location. Any obstruction along the way will physically stop them and their ability to recover from this is poor. Any break in the path along the way is uncrossable. <br />
<br />
NPCs know how to use doors, ladders and turbo lifts. NPCs do not know how to use multiple transporters; they won't beam from one transporter to another to move about, without orders. <br />
<br />
Walk paths should not be placed directly on the floor. A meter or less above the floor works well.<br />
<br />
Paths should be kept as simple as possible. <br />
<br />
Walk paths and ladder paths must form one continuous branching structure throughout the design, wherever NPCs are expected to find their way. It is ok to loop and branch as much as needed. <br />
<br />
Ladder paths are placed where the body is to travel, not inside the ladder rungs. When moving along a ladder path, the body is centered on the path and all obstructions are ignored. <br />
<br />
Each operable interior door needs a walk path that passes through the doorway and ends a short distance inside the room void on each side. Walk paths through hull doors have one end inside a room void and the other end outside the hull. <br />
<br />
Operable floor and ceiling hatches are created using doors. However they should incorporate a ladder path instead of a walk path, even if no ladder is depicted. <br />
<br />
===Doors===<br />
Make doors functional. '''Required.'''<br />
<br />
By now every doorway should have a door, a room void, and a path. The door jig created a ''Door'' part. If a jig was not used, draw a door using a mesh. Then use the ''Make Door'' command to convert the mesh into a ''Door'' that can open and close.<br />
<br />
Change the current state of the door to ''Open''. Select the door, room void and path together. Use the ''Associate Parts'' command to make them accessible only when the door is open.<br />
<br />
When making a hull door, the associated door parts must include a hull void. This distinguishes a hull door from an interior door. The hull void is usually needed to get through the collision margin around the hull. The hull void and room void associated with the hull door should overlap slightly near the middle of the doorway. <br />
<br />
To make a window in a door, simply make the appropriate faces transparent. This will serve as a window but it will not share lighting behavior with ''Window'' parts.<br />
<br />
When making a ramp, create the faces in the open state of the door. Then place a room void on the ramp to access the area on top of the ramp. Associate the room void with the open state of the door. Leave the group name of the room void blank so air pressure will match that of the outside. <br />
<br />
Door switches start out in the center of the door. Every door has two door switches that can be positioned using ''Properties, Door Switch Positions''. This is useful for large doors. <br />
<br />
When a switch is moved, a visual indicator of the new switch position should be created using a mesh, e.g. a small glowing box or ball. <br />
<br />
Paths in the room should have a node close enough to the switch to enable an NPC to operate the switch while standing at the node. Ideally this would be one of the nodes of the path segment associated with the open door. <br />
<br />
The icon for the door part shows what kind of door it is. Some changes require a door to be reanalyzed to determine what kind of door it has become. To reanalyze a door and set other properties, use the ''Properties, Door'' function. <br />
<br />
===Textures===<br />
Texture the faces. '''Required.'''<br />
<br />
Textures should be applied after all changes to the faces are completed. This saves retexturing later after edits are made. <br />
<br />
Textures are applied in face mode. Select faces in face mode and apply textures to them using various methods on the Texture Wrapper. <br />
<br />
The position of the grid affects every texturing command. A technique to insure all floor and ceiling tiles align throughout all rooms is to reset the grid before applying those textures. <br />
<br />
In addition to the base texture, faces have an effects texture layer that responds to the activity of certain subsystems. e.g. The appearance of active lit transporter pads is achieved in this way. <br />
<br />
===Decals===<br />
Add decals.<br />
<br />
Decals are textured faces that apply special rendering behavior to improve their appearance when placed on an underlying face.<br />
<br />
Decals are blended with underlying faces. This enables them to smoothly merge with underlying faces when the decal texture has transparent areas. Normally the transparent areas of textures are discarded which creates a crunchy edge on transparent areas. <br />
<br />
Decals are rendered with a slight offset from the face. That enables them to be drawn coplanar with the underlying faces without unsightly face collisions. <br />
<br />
A few generated decals are available, to display empire flag, empire name, and a few others. The color of word decals can be controlled by painting the faces. The decal that shows the name of a berth occupant must be associated with a berth. <br />
<br />
===Group Names===<br />
Assign group names. '''Required.'''<br />
<br />
Room voids are grouped to assign a name to the room. These room names appear in various user interfaces throughout the game. <br />
<br />
Room voids in the same group will have the same air pressure and lighting. Lighting is controlled by the player using Bright/Dim/Dark controls and it may come in through the windows. Room lighting can be preset using ''Properties, Room Lighting''. That is also where you specify if the room is normally exposed to sunlight. <br />
<br />
Meshes, rooms, control stations, windows, and items should be grouped with the room void they occupy so they will be lit appropriately. Doors can only be in one group; both sides of the door will be lit according to the chosen group. <br />
<br />
Translucent windows can be grouped together to cause them to be lit synchronously. This gives them the appearance of belonging to the same room, even if no room exists. <br />
<br />
Parts with no group name or the reserved name ''Hull'' will have atmosphere and lighting determined by the external environment. <br />
<br />
===Review===<br />
Review properties and design analysis. '''Required.'''<br />
<br />
Use the properties window to configure all settings and to adjust how much of the hull volume is allocated to each subsystem.<br />
<br />
===Finalize===<br />
Finalize the blueprint. '''Required.'''<br />
<br />
Finalize a blueprint to analyze it for errors and inconsistencies. Errors must be fixed before the blueprint can be used in the game. Warnings should be reviewed; changes may be needed but warnings do not prevent use of a blueprint. <br />
<br />
Finalize grabs a screen image to accompany the blueprint in the library. You can provide this image yourself. Use Preview mode to get a screen grab of your design the way it will look in the game. <br />
<br />
The finalize process is slow. It may produce a large number of errors and warnings that need to be fixed or analyzed. ''Previous Finalize Result'' shows the result of the last finalize attempt.<br />
<br />
===Preview===<br />
Preview the design. '''Required.'''<br />
<br />
Land on a world. Try to get out and see if you can get back aboard. <br />
<br />
Create crew to see that they can get to their stations.<br />
<br />
=Building Design=<br />
For building designer specific information, see the [[Building Design]] page.<br />
<br />
==Design Checklist==<br />
The designer offers a checklist as a guide to completing a design. It provides general how-to instructions on how to design a building.<br />
<br />
===Properties===<br />
Configure the structure. '''Required.'''<br />
<br />
The ''structure'' tells the designer what you are trying to make. Configure this right away. <br />
<br />
'''The structure controls what parts can be used in the design.''' The structure also affects the design analysis. <br />
<br />
===Site===<br />
Create a site. '''Required.'''<br />
<br />
''Building'', ''street light'', ''bridge'', ''biodome'', and ''ground platform'' structures require a site on which to be built. The site provides information about how to grade the terrain and what to do with the rocks and plants there. <br />
<br />
A site is created using one or more site meshes. Each portion of a building that touches the ground should rest on a site for proper ground prep. Bridges usually have two sites, one at each end of the bridge. <br />
<br />
The origin (0,0) location after the grid is reset is the insertion point when placing the building on terrain in the game. Use the ''Position Grid'' function and press '''S''' to reset the grid. The front of the building faces in the +Y direction. <br />
<br />
The altitude of the insertion point determines the altitude of the entire site. This makes building sites easy to place at a comfortable altitude next to roads. Terrain modification caused by site meshes proceeds from that placement altitude. <br />
<br />
Coastal sites are drawn with the insertion point at the back of the building. These buildings are placed on the shore facing the water. The back offers a better location to determine the altitude than the water side. <br />
<br />
Terrain uses large triangles. A site mesh cannot cut a detailed excavation into the terrain, such as a swimming pool. Instead a site mesh could push the terrain down out of the way. Then a model of a pool with a broad span of concrete around it could make that rough pit look nice. <br />
<br />
===Hull===<br />
Construct the hull. '''Required.'''<br />
<br />
''Hull'' parts are the most visible part of a building when it is seen from the outside. This is the building people see; make the hull look nice. <br />
<br />
Hull parts determine the volume of the building. Internal subsystems are allocated from this volume. Parts inside the hull do not reduce hull volume. <br />
<br />
Hull parts may overlap each other. Hull parts may form multiple separate buildings on a site. No part of a building is required to touch the ground. <br />
<br />
Do not ''join'' hull parts together when done. Collision logic prefers simple hull parts instead of complicated hull parts.<br />
<br />
A concave depression into a hull part is always obstructed. Use hull voids to gain access to obstructed areas if needed. <br />
<br />
Hull parts are not required to form airtight shells; they can have holes. <br />
<br />
If you can see completely through a hull part, through an area that should be solid, its calculated volume may be incorrect. ''Door'', ''window'', ''room'' and ''room void'' parts inside the hull part will block such openings during volume calculations. It may be necessary to add faces, rooms, or room voids to a hull part with holes through it. <br />
<br />
A hull can be created by importing a 3DS or STL file. <br />
<br />
===Turrets===<br />
Construct gun turret.<br />
<br />
The only building that allows a gun turret is a ''military guard tower''. <br />
<br />
A turret consists of a base that spins and an optional gun that tilts. The turret is operated automatically by the building. <br />
<br />
Turrets need an unobstructed field of fire. Turrets can hit their own hull and its occupants; NPCs avoid doing so. <br />
<br />
Draw the base of a turret on the hull using a mesh part. Select the base and use the ''Make Turret'' function. The function prompts for the base pivot point and pivot axis. <br />
<br />
At this point the turret can be used. Gunfire will emit from the center of the turret base.<br />
<br />
To add a gun to a turret, right-click the Turret in the parts list and select ''Add State'' to add a Gun. Change the turret to the Gun state and draw a gun in face mode. Use the ''Properties, Turret Gun Position'' function to configure where the gun tilts, where it shoots, and where the gunner sees out when operating the turret. <br />
<br />
In the designer, a turret shows the faces of both the base and gun only when it is in the Gunner Screen state. Otherwise a turret only shows the faces appropriate to its current state.<br />
<br />
===Lights===<br />
Construct exterior lights.<br />
<br />
Exterior lights add visibility and draw attention. Interior lights are not represented by any part. <br />
<br />
The appearance of exterior lights can be created using mesh or hull parts. <br />
<br />
''Light Lens'' parts can only be used on a street light. They glow when it is dark outside; the glow is bright if the city has power. Use ''Make Light Lens'' to convert each selected part into a light lens. Each lit light lens adds a glow sprite at the center of the part. <br />
<br />
''Nav Light Lens'' parts glow when it is dark; building power is not needed. Use ''Make Navigation Light Lens'' to convert each selected part into a nav light lens. Each lit nav light lens adds a glow sprite at the center of the part. <br />
<br />
''Rotating Beacon Lens'' parts glow all the time light or dark; building power is not needed. Position the grid to establish the beacon rotation axis, which will align with the Z axis when the beacon is made. Use ''Make Rotating Beacon Lens'' to convert each selected part into a rotating beacon. Each lit rotating beacon adds a rotating glow sprite at the center of the part. <br />
<br />
''Strobe Lens'' parts blink all the time light or dark; building power is not needed. Use ''Make Strobe Lens'' to convert each selected part into a strobe. Each lit strobe adds a glow sprite at the center of the part. <br />
<br />
===Rooms===<br />
Construct rooms inside the hull.<br />
<br />
''Room'' parts do not contribute to collision logic. They exist only for appearance. Rooms of buildings are not often seen because players rarely enter buildings. <br />
<br />
Some building control stations are accessible to players. Those control stations must be placed in a room. <br />
<br />
Separate rooms should be spaced apart slightly, to allow for wall thickness between them. <br />
<br />
If the design will incorporate turbo lifts, draw one room for each turbo lift at only one of its stops. That room will become a turbo lift car in another step, after more parts have been added. <br />
<br />
===Meshes===<br />
Construct details.<br />
<br />
Use meshes to create '''control stations''', furnishings, equipment, and other interesting details. <br />
<br />
Meshes do not create an obstacle to movement. They exist only for appearance. Make them look nice. <br />
<br />
===Doorways===<br />
Cut doorways.<br />
<br />
A ''door jig'' cuts a doorway from one room to another room, or from a room to a hull. The door jig cuts the faces, adds a lining of faces to the hole, and creates a ''Door'' part in the hole. <br />
<br />
Place a door jig into each room that will become a turbo lift. '''Do not cut doors into turbo lifts at this time.'''<br />
<br />
Jigs do not work when placed flat against a face. Raise jigs slightly above the floor before cutting doors.<br />
<br />
Jigs aren't perfect; they sometimes create too many or not enough faces when lining the hole. You may have to delete excess faces or draw missing faces there. <br />
<br />
===Windows===<br />
Cut or construct windows.<br />
<br />
A ''window jig'' cuts a window opening from one room to another room, or from a room to a hull. A window jig can also cut a window into a hull where no room exists on the inside. The window jig cuts the faces, adds a lining of faces to the hole, and creates a ''Window'' part in the hole. <br />
<br />
Translucent windows give the appearance of occupancy in areas where there may be no rooms at all. They do this by lighting and darkening at night while the building has power, which gives the impression that someone is in there. <br />
<br />
In some cases an entire hull part or some faces on a hull part would make a nice window. Use ''Split Faces'' in face mode to make a separate part from selected faces. The ''Make Window'' function converts the part into a window. <br />
<br />
Windows for flat walled buildings can also be created as a surface detail. A window frame with a translucent window part raised slightly away from the wall surface works well. Then the window can be copy/pasted all over the building without cutting any faces. <br />
<br />
===Control Stations===<br />
Add control stations.<br />
<br />
Very few buildings need control stations. Control stations are used by players and NPCs to operate subsystems of the building. In some cases the creation of the control station causes the appropriate subsystem to exist in the design. <br />
<br />
The simplest control stations to draw are the swivel consoles with chairs. They are simple because a built in model of a control station is used. You only have to specify the location and spin of the control station.<br />
<br />
Meshes are used to create the appearance of integrated control stations. The functions that create integrated control stations will prompt for the operator's location and body position. <br />
<br />
Some stations request additional information such as the screen position. The screen position can be changed by moving the face in face mode. Additional information can be changed using properties functions. <br />
<br />
Turrets require an integrated control station to define the module present. Select a turret to add an integrated turret control station. The station cannot be manned; it should be embedded in the building. <br />
<br />
Weapon stations request the weapon emit location. These weapons are omnidirectional and they do not hit their own hull or its contents. Weapon stations are never manned so they can be embedded in the building. <br />
<br />
Troop posts provide a location for troops to be stationed. <br />
<br />
===Panels===<br />
Add panels.<br />
<br />
''Room Life Support Panel'' must be associated with the room void it monitors. <br />
<br />
''World Map Panel'' aspect ratio is 2:1 for spherical worlds. Aspect ratio is 10:1 for ringworld arc sections. <br />
<br />
===Vehicles===<br />
Add vehicle parking spots.<br />
<br />
''Specific vehicle parking spots'' show a solid vehicle model in the spot with a small icon beneath them. <br />
<br />
''General vehicle parking spots'' show a bounding box that fits any vehicle that can park there. e.g. ''Ground vehicle parking spot'' shows a box large enough for any ground vehicle in the game. <br />
<br />
Buildings fill their vehicle parking spots by teleporting new vehicles from factories to which they are connected. Vehicle factories fill their vehicle parking spots by manufacturing vehicles. <br />
<br />
With a ''vehicle transporter'' in the design, vehicle parking spots act as vehicle transporter pads. A vehicle does not have to be able to move from its parking spot. The driver simply calls for transport on the comm. <br />
<br />
''Space vehicle launcher'' creates a launch pad and a launch path. While launching, a space vehicle travels along the path. It is not obstructed by the hull or anything else while launching. Voids are not required at the launcher or along the path. The exit end of the path must be clear of the hull. <br />
<br />
When a pilot requests launch, their space vehicle is teleported to an available launch pad. Doors associated with the launcher are opened and the vehicle is launched along the path. The departure speed of the vehicle is determined by the length of the path. Launcher doors close automatically after the vehicle is launched. <br />
<br />
''Space vehicle recovery subsystem'' creates a virtual runway for arriving space vehicles. It should be placed outside the hull. Allow for botched landings; sometimes a pilot has to go around. A space vehicle that stops along the centerline of the runway is teleported to an empty parking spot. <br />
<br />
===Details===<br />
Add berths and other details.<br />
<br />
''Light bulb'' is the source of light emitted by the street light building when it gets dark. The light can be omnidirectional or focused into a cone. The light bulb part is not visible in the final building. Emitted light is not shadowed by faces of the building. <br />
<br />
''Items'' can be placed in the design. Items are populated from the city's inventory when the building is constructed. Players can take these items. Items are replenished from the city's inventory. <br />
<br />
===Voids===<br />
Carve out void spaces and add barriers.<br />
<br />
The hull is treated as a solid mass through and through. Room meshes have no effect on this. <br />
<br />
Voids carve out the areas in which people, vehicles and spacecraft can go. Barriers create obstacles inside those carved out areas. Voids and barriers are not visible in the final model. <br />
<br />
When two voids are placed next to each other, overlap them slightly. This assures a positive handoff as something moves from one void to another, without bouncing off an infinitesimally thin wall in between.<br />
<br />
Each void and barrier must form a single airtight bubble. There can be no holes or missing faces. Overlapping or excess faces will cause trouble. Concave areas are ok. <br />
<br />
Do not ''join'' voids together. It is better to have a few simple intersecting voids than one single complicated void. <br />
<br />
''Room Voids'' are placed inside rooms, turbo lifts and on ramps. Each operable door must have a room void in the doorway to connect the room voids accessed by the door. <br />
<br />
Voids must be as simple as possible with very few faces. Rooms can be very complex, bumpy, curvy and full of holes. Do not conform to every bump and bulge in the walls. Build simple voids just inside the bumps and most people will never notice. <br />
<br />
''Hull Voids'' allow access to areas of the hull that should '''not''' obstruct movement. <br />
<br />
''Barriers'' create obstacles to movement inside room voids. Barriers can be used to create stairs and ramps or to surround things the player should not walk through. Barriers should use extremely few faces. <br />
<br />
When blocking a large portion of a room void, consider making the room void smaller instead.<br />
<br />
Stairs can be created using a mesh that looks like stairs and a ramp-shaped barrier, instead of shaping the barrier to fit every step. Less faces are needed to make the barrier and movement on the stairs is smoother; it is also easier for small or legless creatures. <br />
<br />
===Turbo Lifts===<br />
Make turbo lifts functional.<br />
<br />
This step is required if you are building any turbo lifts in the design. Two concepts are introduced: doors and paths. They are discussed in detail in the following '''Doors''' and '''Paths''' steps. <br />
<br />
Select the turbo lift room, room void, and door jig for one turbo lift. Use the ''Make Turbo Lift'' function to fuse them together into a ''Turbo Lift'' part.<br />
<br />
Right-click on the turbo lift in the parts list and select ''Add Stop''. Provide a name for the current stop of the turbo lift. Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. The turbo lift must be outside a room to cut into it. The turbo lift must be inside a hull to cut out of it. <br />
<br />
Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
For each additional stop, do the following. <br />
<br />
* Add a stop name for the next stop position. The current stop of the car does not matter. <br />
<br />
* Use the ''Align Turbo Lift Stop'' function to position the car at the newly added stop. The turbo lift can be moved more than once while aligning it; only the final position matters. It is essential to use the ''Align Turbo Lift Stop'' command. Mouse drag moving and cut/copy/paste will change the positions of all stops at once. <br />
<br />
* Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. <br />
<br />
* Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
* When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
Repeat this step for each turbo lift in the design.<br />
<br />
===Paths===<br />
Add walk paths and ladder paths.<br />
<br />
This step is required if you have built any interior rooms. <br />
<br />
NPCs do not analyze or even see rooms or obstacles. They blindly trust paths to get them where they want to go. Simple well planned paths enable NPCs to quickly and efficiently move to any room. <br />
<br />
To get from one room to another, an NPC walks straight to the closest path node in their room. Then they follow the path to the closest node to the destination location in the final room. Then they walk directly to the destination location. Any obstruction along the way will physically stop them and their ability to recover from this is poor. Any break in the path along the way is uncrossable. <br />
<br />
NPCs know how to use doors, ladders and turbo lifts. NPCs do not know how to use multiple transporters; they won't beam from one transporter to another to move about, without orders. <br />
<br />
Walk paths should not be placed directly on the floor. A meter or less above the floor works well.<br />
<br />
Paths should be kept as simple as possible. <br />
<br />
Walk paths and ladder paths must form one continuous branching structure throughout the design, wherever NPCs are expected to find their way. It is ok to loop and branch as much as needed. <br />
<br />
Ladder paths are placed where the body is to travel, not inside the ladder rungs. When moving along a ladder path, the body is centered on the path and all obstructions are ignored. <br />
<br />
Each operable interior door needs a walk path that passes through the doorway and ends a short distance inside the room void on each side. Walk paths through hull doors have one end inside a room void and the other end outside the hull. <br />
<br />
Operable floor and ceiling hatches are created using doors. However they should incorporate a ladder path instead of a walk path, even if no ladder is depicted. <br />
<br />
===Doors===<br />
Make doors functional.<br />
<br />
This step is required if you have built any doors. <br />
<br />
By now every doorway should have a door, a room void, and a path. The door jig created a ''Door'' part. If a jig was not used, draw a door using a mesh. Then use the ''Make Door'' command to convert the mesh into a ''Door'' that can open and close.<br />
<br />
Change the current state of the door to ''Open''. Select the door, room void and path together. Use the ''Associate Parts'' command to make them accessible only when the door is open.<br />
<br />
When making a hull door, the associated door parts must include a hull void. This distinguishes a hull door from an interior door. The hull void is usually needed to get through the collision margin around the hull. The hull void and room void associated with the hull door should overlap slightly near the middle of the doorway. <br />
<br />
To make a window in a door, simply make the appropriate faces transparent. This will serve as a window but it will not share lighting behavior with ''Window'' parts.<br />
<br />
When making a ramp, create the faces in the open state of the door. Then place a room void on the ramp to access the area on top of the ramp. Associate the room void with the open state of the door. Leave the group name of the room void blank so air pressure will match that of the outside. <br />
<br />
Door switches start out in the center of the door. Every door has two door switches that can be positioned using ''Properties, Door Switch Positions''. This is useful for large doors. <br />
<br />
When a switch is moved, a visual indicator of the new switch position should be created using a mesh, e.g. a small glowing box or ball. <br />
<br />
Paths in the room should have a node close enough to the switch to enable an NPC to operate the switch while standing at the node. Ideally this would be one of the nodes of the path segment associated with the open door. <br />
<br />
The icon for the door part shows what kind of door it is. Some changes require a door to be reanalyzed to determine what kind of door it has become. To reanalyze a door and set other properties, use the ''Properties, Door'' function. <br />
<br />
===Textures===<br />
Texture the faces. '''Required.'''<br />
<br />
Textures should be applied after all changes to the faces are completed. This saves retexturing later after edits are made. <br />
<br />
Textures are applied in face mode. Select faces in face mode and apply textures to them using various methods on the Texture Wrapper. <br />
<br />
The position of the grid affects every texturing command. A technique to insure all floor and ceiling tiles align throughout all rooms is to reset the grid before applying those textures. <br />
<br />
In addition to the base texture, faces have an effects texture layer that responds to the activity of certain subsystems. e.g. The appearance of active lit transporter pads is achieved in this way. <br />
<br />
===Decals===<br />
Add decals.<br />
<br />
Decals are textured faces that apply special rendering behavior to improve their appearance when placed on an underlying face.<br />
<br />
Decals are blended with underlying faces. This enables them to smoothly merge with underlying faces when the decal texture has transparent areas. Normally the transparent areas of textures are discarded which creates a crunchy edge on transparent areas. <br />
<br />
Decals are rendered with a slight offset from the face. That enables them to be drawn coplanar with the underlying faces without unsightly face collisions. <br />
<br />
Two generated decals are available, to display empire flag and empire name. The color of the empire name decal can be controlled by painting the faces. <br />
<br />
===Group Names===<br />
Assign group names.<br />
<br />
This step is required if you have built any interior rooms. <br />
<br />
Room voids are grouped to assign a name to the room. These room names appear in various user interfaces throughout the game. <br />
<br />
Room voids in the same group will have the same air pressure and lighting. Lighting is controlled by the player using Bright/Dim/Dark controls and it may come in through the windows. Room lighting can be preset using ''Properties, Room Lighting''. That is also where you specify if the room is normally exposed to sunlight. <br />
<br />
Meshes, rooms, control stations, windows, and items should be grouped with the room void they occupy so they will be lit appropriately. Doors can only be in one group; both sides of the door will be lit according to the chosen group. <br />
<br />
Translucent windows can be grouped together to cause them to be lit synchronously. This gives them the appearance of belonging to the same room, even if no room exists. <br />
<br />
Parts with no group name or the reserved name ''Hull'' will have atmosphere and lighting determined by the external environment. <br />
<br />
===Review===<br />
Review properties and design analysis. '''Required.'''<br />
<br />
Use the properties window to configure all settings and to adjust how much of the hull volume is allocated to each subsystem.<br />
<br />
===Finalize===<br />
Finalize the blueprint. '''Required.'''<br />
<br />
Finalize a blueprint to analyze it for errors and inconsistencies. Errors must be fixed before the blueprint can be used in the game. Warnings should be reviewed; changes may be needed but warnings do not prevent use of a blueprint. <br />
<br />
Finalize grabs a screen image to accompany the blueprint in the library. You can provide this image yourself. Use Preview mode to get a screen grab of your design the way it will look in the game. <br />
<br />
The finalize process is slow. It may produce a large number of errors and warnings that need to be fixed or analyzed. ''Previous Finalize Result'' shows the result of the last finalize attempt.<br />
<br />
===Preview===<br />
Preview the design. '''Required.'''<br />
<br />
Place the building on terrain. See if the terrain is modified by the site meshes the way you expect. <br />
<br />
<br />
[[Category:Designer]]<br />
[[Category:Spacecraft]]<br />
[[Category:Buildings]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Designer&diff=10288Designer2024-02-24T20:18:31Z<p>Haxus: /* Building Design */</p>
<hr />
<div>The ''Designer'' is a modeling tool used to design spacecraft and building blueprints. <br />
<br />
The [[Designer Menu]] page describes each individual menu item.<br />
<br />
The [[Design Parts]] page describes each individual kind of part.<br />
<br />
=Architect=<br />
The person who creates a design is the architect of the design.<br />
The person who creates each part is the architect of that part.<br />
Parts retain their architect information with them.<br />
<br />
When multiple architects work on the same design, the architect who initiates the designer instance is the architect of the design.<br />
<br />
The analysis report for a design lists all architects whose parts are included in a design.<br />
<br />
=Blueprints=<br />
A blueprint is a design that has been analyzed and accepted for use in the game. Blueprints contain all of the information needed to make a functional building or spacecraft, such as its 3D model and design specifications. Blueprints are stored in a ''universal library'' where they are accessed by spacecraft and buildings during game play. Blueprints are identified by a unique number, assigned when stored in the library.<br />
<br />
Blueprints can be saved onto media items in an avatar's gear. Blank paper and blank disks can each hold only one blueprint. Storage devices can hold varying numbers of blueprints, depending on the device. <br />
<br />
Spacecraft, buildings, and storage devices reference their blueprints in the library throughout their lifetimes. Blueprints that are in use by game objects cannot be deleted. When a player deletes a blueprint, it may instead be deactivated in the library, until it is no longer referenced and it can be finally removed.<br />
<br />
In the designer and in this wiki, the word blueprint is used generally to refer to any design, whether or not it has been finalized.<br />
<br />
==In-Game Blueprint Exchange==<br />
The blueprint exchange provides a place for players to share blueprints with other players in the online game. Separate exchanges for spacecraft blueprints and building blueprints are accessed in the game. <br />
<br />
At the exchanges, blueprints can be published by architects and they can be purchased by players. Prices are in cronodollars ¢, the money of the game. Cronos are not related to real money. '''Spacecraft and building blueprints do not cost real money.''' <br />
<br />
Publishing is a way to share blueprints with other players. Publishing terms control the price and who is permitted to use the blueprint. <br />
<br />
'''A blueprint does not have to be published to be used in the game.''' A blueprint can be saved onto a storage device in your gear, then used to make buildings or spacecraft. Interfaces that request a blueprint know how to find them in your gear.<br />
<br />
==Web Blueprint Exchange==<br />
The web site offers access to a public blueprint exchange. This exchange is not connected with the in-game exchange in any way.<br />
<br />
The web blueprint exchange offers a place for players to publicly share their .SoH files. There are no publishing terms or restrictions. Blueprints posted to the web exchange are freely available for download by anyone on the Internet.<br />
<br />
===Prepare .SoH for Publishing===<br />
Two things should be done to prepare a .SoH file for publishing to the web blueprint exchange. <br />
<br />
Obstructions should be refreshed. Obstruction data provides volume information necessary to create the design analysis report. The report is presented on a web page in the exchange.<br />
<br />
A nice scene should be present in the view window. A screen grab of the scene is stored with the file. The screen grab is shown on the report. The screen grab is also shown on the button that accesses the report page.<br />
<br />
=Designer Access=<br />
The designer can be accessed both online and when playing offline solo.<br />
<br />
==Online Designer==<br />
Online, a designer is accessed by going to a [[Design_Studio|design studio]] building or by occupying a [[Design_Parts#Station.2C_Designer|designer station]] while aboard a spacecraft.<br />
<br />
To enter a designer at a design studio, display the ''Building'' (<code>F10</code>) window and click on the "Enter" button of a studio. When a studio is "Vacant", you may leave the password box blank or you may enter a password of your choice. The password you enter establishes that studio's password until the studio becomes vacant. To join an "Occupied" design studio, you must enter the password that was established by the first person to enter the studio.<br />
<br />
To enter a designer aboard a spacecraft, move to a designer station and enter the station by pressing the <code>E</code> key. Designers aboard a spacecraft are not password protected. Each designer station creates its own designer instance. People who enter the same designer station are placed in the same designer instance. The avatar enters the designer instance and their body does not remain at the station in the ship, like it does with other stations.<br />
<br />
Players may work together in the same studio to develop a design. In this case, the first player to enter the vacant studio is registered as the architect and owner of the design.<br />
<br />
==Offline Designer==<br />
When the game is launched, the designer can be entered ''solo'', instead of logging in to the game. Overall program performance is better when designing solo because no server is involved. Once a design is completed solo, it can be saved to a .SoH file. That file can be loaded into the on line designer, for storage in the universal library.<br />
<br />
=Design Process=<br />
General steps to making a design go something like this.<br />
* Adjust design properties to establish goals.<br />
* Create an exterior hull.<br />
* Create one or more rooms inside the hull.<br />
* Cut out doors and windows.<br />
* Create finer model details.<br />
* Apply textures and other effects to finish the surfaces.<br />
* Add details: control stations, berths, lights, display screens, etc.<br />
* Add room voids, paths and barriers.<br />
* Make doors operational.<br />
* Finalize the design.<br />
<br />
Designing typically involves creating many [[Design_Parts|''parts'']].<br />
Parts include things like hulls, rooms, jigs, lights, display screens, etc.<br />
<br />
Check design properties from time to time. It shows an assessment of the design, based on what you are trying to design.<br />
<br />
==Design Goal==<br />
Your goal as an architect is to make beautiful looking designs that are functional in the universe of Hazeron.<br />
Emphasis is placed on appearance over technical realism.<br />
<br />
Hull sections do not have to be sculpted to form airtight continuous shells where they join each other.<br />
This is inefficient and difficult to model.<br />
It is much better to butt an engine pylon into the side of the hull, rather than carving a hole so it can make a perfect junction.<br />
Carving that hole breaks the side face into many tiny faces.<br />
It is likely unnecessary, unless people are going to walk or see through the opening.<br />
<br />
A design does not require the interior to conform to the exterior.<br />
Your design may represent a large intricate spacecraft that appears to have many rooms.<br />
It is inefficient and unnecessary to create all of the interior rooms and detail that would exist in real life.<br />
Like a movie set, only a few key areas inside the hull need to be modeled.<br />
This enables the designer to efficiently achieve the look and feel desired, without laborious excess work.<br />
<br />
Interior details have no effect on the mass calculation of the design.<br />
Rich interior designs are encouraged.<br />
There is no performance advantage to making stark minimal interiors.<br />
<br />
Be efficient with your designs.<br />
There is no point in modeling details that can never be seen.<br />
A good example is a cargo hold full of cargo.<br />
An inefficient approach would be to build a huge room and fill it with shipping containers.<br />
Instead of being too literal, think of it like a movie set.<br />
It would be much more efficient to build only an accessible area representative of a cargo hold, with walls modeled and textured to look like stacks of shipping containers.<br />
Use those precious faces where they get the most impact; don't waste them.<br />
<br />
Remove faces that can never be seen. Many parts that contribute to the construction materials requirement of a design are affected by the total surface area of their faces. The amount of materials directly affects the construction time. Reducing faces will reduce the construction time and materials of a design.<br />
<br />
More parts are better than less.<br />
Parts help to manage large 3D models.<br />
Rendering information is collected and consolidated efficiently when the OpenGL model is constructed.<br />
It makes no difference in the final rendering if the information comes from one part or many.<br />
<br />
[[Design_Parts#Turbo_Lift|Turbo lifts]] help to make big designs feel elaborate and detailed on the inside, without extensive modeling effort. They are an effective scene change device in science fiction cinema and they are equally effective in the game, to give the feeling of being aboard a really big ship. They also save a lot of walking.<br />
<br />
==Part Mode vs Face Mode==<br />
Parts are composed of ''faces''.<br />
Faces have vertices and edges.<br />
To edit the faces of one or more selected parts, ''face mode'' is enabled.<br />
In a typical design session, face mode is enabled and disabled often, whenever the need arises to modify the faces that make up a part.<br />
<br />
Actions on the ''Parts'' menu operate on whole parts.<br />
Most actions on the Parts menu are disabled when face mode is enabled.<br />
Some part menu actions are only enabled when one or more parts are selected.<br />
<br />
Actions on the ''Face'' menu operate on faces of selected parts.<br />
Most actions on the Face menu are enabled when face mode is enabled.<br />
Textures are applied in face mode.<br />
<br />
==Geometry==<br />
Parts are represented by geometry that can be painted in an OpenGL scene.<br />
Geometry of parts is described by their vertices, edges and faces.<br />
<br />
===Vertices===<br />
Vertices contain 3D Cartesian coordinate locations that describe the position of edges and faces.<br />
Vertices also contain information needed when rendering.<br />
Texture coordinates are stored at vertices.<br />
Glow is emitted at vertices.<br />
<br />
Render information is interpolated between vertices.<br />
Thus, the glow of a vertex will fade off to a neighboring vertex that does not glow.<br />
<br />
Vertices also contain an up direction, for lighting calculations.<br />
The face menu commands ''Flatten Vertices'' and ''Smooth Vertices'' operate on vertex up directions.<br />
<br />
===Edges===<br />
Edges are the visible lines that go from one vertex to another to reveal the boundaries of faces.<br />
Edges exist for the benefit of the designer, to see the model.<br />
Their presence or absence has no effect on the final rendering result.<br />
<br />
===Faces===<br />
Faces are flat surfaces that compose a 3D model.<br />
OpenGL paints faces in front of each other depending upon their Z-depth in the scene.<br />
This is the essence of how 3D scenes are painted by a computer.<br />
<br />
Faces have a front and a back.<br />
Faces are not visible from the back in the final rendering result.<br />
They can be seen from the back in the designer, if back face visibility is enabled.<br />
The object menu command ''Reverse Faces'' flips their facing back and forth.<br />
<br />
''Facing direction'' is determined by the direction the boundary is drawn. <br />
The boundary is clockwise when viewing the front of a face.<br />
The boundary is counterclockwise when viewing the back of a face.<br />
<br />
All faces are created equal.<br />
A face copied from one part and pasted into another becomes a face of the destination part.<br />
It is irrelevant if it came from a hull and gets added to a room.<br />
The part is the hull or room; the face is just a face.<br />
<br />
Faces do not "know" how they were created. A face created as part of an extrusion is no different from a face that is created individually. The extrusion command merely assembles faces into a desired shape.<br />
<br />
Faces should not be bent. They expect to represent a flat plane. A face should be drawn as multiple faces if a curved surface will be represented.<br />
<br />
Three foundational shapes exist.<br />
<br />
*Triangle - A face defined using a boundary of three vertices.<br />
*Quad - A face defined using a boundary of four vertices.<br />
*Face - A face defined using a boundary with three or more vertices.<br />
<br />
==Shapes==<br />
Shapes use parameter-driven methods to generate faces. Primitive shapes can provide a general starting point for more detailed modeling.<br />
<br />
The resulting shape may be modified like any other set of faces. The faces are in no way different than if an architect painstakingly built the same shape using faces. It is typical to generate a quick shape then rip it apart, to use some portion of it, or embellish it to mold it into what you want.<br />
<br />
===Extrusion===<br />
[[file:ScFigExtrusion.png|right|Extrusion]]<br />
An extrusion is formed by projecting a shape along a straight path. Examples include: rooms, beams. <br />
<br />
The creation of an extrusion begins by entering the shape that will be extruded. After the shape is entered, a window presents options to finalize the extrusion. Straight extrusion is made by simply entering the length. <br />
<br />
Faces are formed at the sides of the extrusion. Stepping allows the sides to be divided along the length of the extrusion.<br />
<br />
When the extrusion is generated, the shape follows a straight line. Both ends of the extrusion are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the extrusion shape.<br />
* Subsequent points are entered to describe the extrusion shape.<br />
* A window offers extrusion options.<br />
* Depending on extrusion options, a point may be entered to indicate the height or direction of the extrusion. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Sphere Lon/Lat===<br />
[[file:ScFigSphereLonLat.png|right|Longitude/Latitude Sphere]]<br />
A longitude/latitude sphere is divided into equal divisions of latitude and longitude. The faces are largest at the equator. The faces converge together at the poles. <br />
<br />
Creation of a longitude/latitude sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of latitude divisions and number of longitude divisions. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Sphere Uniform===<br />
[[file:ScFigSphereUniform.png|right|Uniform Sphere]]<br />
A uniform sphere is divided uniformly into triangle faces. All triangles are close to the same size. <br />
<br />
Creation of a uniform sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of divisions at the equator. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Spindle===<br />
[[file:ScFigSpindle.png|right|Spindle]]<br />
A spindle is created by spinning a shape around an axis. Objects with axial symmetry are created as spindles. Examples include: flying saucer, spool, furniture leg, column, dome, sphere, dinner plate, door knob, dish antenna. <br />
<br />
The creation of a spindle begins by entering the shape that will be spun around an axis. After the shape is entered, a window presents options to finalize the spindle. Options include the number of steps around the axis and the choice of axes. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the spindle shape.<br />
* Subsequent points are entered to describe the spindle shape.<br />
* A window offers spindle options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Tubing===<br />
[[file:ScFigTubing.png|right|Tubing]]<br />
Tubing is very similar to an extrusion except that the path may be complex, instead of simply extruding along a straight line. When the tubing shape is extruded along the path, corners are mitered appropriately.<br />
<br />
Tubing is not just for making water pipes. Tubing is used to make any closed shape that is extruded along a complex path. Examples include: piping, ducts, crown molding, baseboard trim, railroad tracks, hand rails, soffits, wall conforming consoles, base and wall cabinets, and counter tops. <br />
<br />
Creation of tubing begins by entering the path along which the tubing will travel. After the path is entered, a window presents options to finalize the tubing. <br />
<br />
Circular tubing is made by simply entering the diameter and number of sides for the tube. <br />
<br />
Other tubing shapes are created by drawing the cross section shape of the tubing. <br />
<br />
After drawing the shape of the tubing cross section, a guide point is entered on the shape. <br />
<br />
When the tubing is generated, the shape follows the path along the guide. Both ends of the tubing are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the tubing path.<br />
* Subsequent points are entered to describe the tubing path.<br />
* A window offers tubing options.<br />
* Depending on tubing options, a point may be entered to begin the tubing shape.<br />
* Subsequent points are entered to describe the tubing shape.<br />
* Guide point for the tubing shape is entered.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> displays options for completing the tube.<br />
<br />
==Jigs==<br />
<br />
Jigs are found underneath the Part menu button. There are many different types of Jigs, such as Door Jigs, Window Jigs, Launch Tube Jigs, Cutting Jigs, and Decal Jigs. They are created like any other hull or room objects, by selecting the Shape type (Extrusion, Sphere, Tubing, Spindle) and drawing the shape wanted. A physical object is then created and added to the Parts list as a Jig of the type selected. <br />
<br />
Jigs are used by positioning the created Jig object between two rooms, or between a hull and room, ensuring that the Jig penetrates both walls. Once this is positioned correctly, select all 3 objects at once using the Parts panel, and then select "Jig Cut" under the Design Menu button. The jig then cuts the walls in the shape of the jig, allowing you to create tube hallways as an example. The cut walls are then converted to the object type of the jig, such as the walls being converted into transparent glass if using a Window Jig, or door objects if using a Door Jig. <br />
<br />
Jigs can be used in order to create different types of objects, exits or walls between two rooms or the interior and exterior of a design. For example, the Door Jig creates a door between whatever rooms the Jig is placed between. The Window Jig creates a Window between the rooms, while the Launch Tube and Cutting jigs just create holes between the hull and room and cut the faces of each side, respectively. <br />
<br />
All jigs create faces between the two walls that they penetrate, in order to give walls thickness and prevent you from seeing any back-faces.<br />
<br />
==Origin==<br />
<br />
At the center of the design space is a yellow marker, drawn as three intersecting yellow lines.<br />
It does not move when the design grid moves.<br />
The immovable yellow marker is the true origin (0,0,0) location of the design space.<br />
That is the point at which a spacecraft will pivot, when it maneuvers. The origin is the insertion point when placing a building, that determines the altitude of the building on the terrain.<br />
<br />
==Obstructions, Voids, and Barriers==<br />
The obstruction model describes what areas of the design are solid and what areas of the design are not. It is used to determine where a person is standing on the floor and where they are allowed to stand, where vehicles collide with the design and where they go inside, where missiles and gunfire hit or pass through. The obstruction model describes the solid shape of the design and its accessible inside areas.<br />
<br />
The obstruction model cannot be seen. <br />
It exists somewhat like an electrical field around the design.<br />
The presence of the obstruction model can be felt by moving around the design. <br />
The menu toggle ''Blueprint, Solids Obstruct Movement'' must be checked to bump against the obstruction model.<br />
<br />
The obstruction model is created by analyzing the geometry of the design. <br />
A lot of processing effort is required to maintain the model so it is not done automatically with every modification to the design.<br />
The obstruction model is updated using the ''Blueprint, Refresh Obstructions'' menu option.<br />
<br />
The obstruction model is created from hull and landing gear parts, voids, and barriers.<br />
Each state of landing gear is represented so its obstruction shape changes when the gear is extended.<br />
<br />
The obstruction model envelopes each part individually.<br />
To get the best fitting obstruction model, it is beneficial to split elaborate hull parts into<br />
multiple simpler hull parts.<br />
<br />
The obstruction model includes a margin around hull and landing gear parts.<br />
This helps to prevent the eye camera of players from getting close enough to see inside, which breaks the illusion of solidity.<br />
It can also prevent someone from moving close enough to operate a door.<br />
<br />
''Voids'' are used to carve out the spaces accessible to players, from the solid shape created by the hull. Room parts do not contribute to the obstruction model. It is the voids that really determine where people can go inside.<br />
<br />
''Barriers'' are used to create obstructions inside voids. Sometimes it is easier to add a barrier than to change the shape of the room void. Barriers can also be used to create the floor under stairs and ramps.<br />
<br />
==Part Association==<br />
''Association'' is when a part references another part by its id number.<br />
<br />
Certain parts can be associated with certain other parts.<br />
Association is a loose connection between parts.<br />
The meaning of this association depends upon the parts involved.<br />
<br />
A part can be associated with only one other part.<br />
Any number of parts can be associated with the same part.<br />
<br />
Associations are created using the [[Designer_Menu#Associate_Parts|Part, Associate Parts]] command. Associations are removed using the [[Designer_Menu#Dissociate_Parts|Part, Dissociate Parts]].<br />
<br />
Part associations are used by the following parts.<br />
<br />
===Barriers===<br />
[[Design_Parts#Barrier|Barriers]] can be associated with a '''state of a door or landing gear'''.<br />
This determines which barriers are obstructions when the door or landing gear is operated.<br />
<br />
It is ok to associate more than one barrier with a state of a door or landing gear.<br />
<br />
===Berth Name Decals===<br />
[[Design_Parts#Decal.2C_Berth_Name|Berth name decals]] are associated with a '''berth'''.<br />
This determines which name to display on the decal.<br />
''Unassigned'' is displayed when the berth is not assigned.<br />
<br />
It is ok to associate more than one berth name decal to the same berth.<br />
<br />
===FTL Drive Service Panels===<br />
[[Design_Parts#Panel.2C_FTL_Drive|FTL drive service panel]] is associated with an '''engineer station'''.<br />
This determines which FTL drive the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
===Hull Voids===<br />
[[Design_Parts#Void.2C_Hull|Hull voids]] are associated with the '''open state of a door''', when making operable hull doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Association of a hull void and a room void to a door causes it to become a hull door. This enables the interior room void and the exterior hull void to become accessible at once, presumably overlapping each other so a person can move from one void to the other.<br />
<br />
Hull voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Room Life Support Status Panels===<br />
[[Design_Parts#Status.2C_Life_Support|Room life support status panel]] is associated with a '''room void'''.<br />
This determines which room's air pressure reading appears on the panel.<br />
<br />
It is ok to associate more than one life support status panel with a single room.<br />
<br />
===Room Voids===<br />
[[Design_Parts#Void.2C_Room|Room voids]] are associated with the '''open state of a door''', when making operable doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Room voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Walk Paths and Ladder Paths===<br />
[[Design_Parts#Path.2C_Walk|Walk paths]] and [[Design_Parts#Path.2C_Ladder|ladder paths]] are associated with the '''open state of a door''', when making operable doors.<br />
This guides NPCs to find their way through the door when it is open.<br />
<br />
Paths may be associated with any state of a door or landing gear to make access to the void dependent upon those states.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Weapon Service Panels===<br />
[[Design_Parts#Panel.2C_Weapon|Weapon service panel]] is associated with a '''fire control station'''.<br />
This determines which weapon the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
==Walk Paths==<br />
In order for [[NPC]]s to successfully move around the interior of a design with multiple rooms. <br />
<br />
The walk paths need to be above the floor, hip height is usually good. Each end of a walk path is referred to as a ''node'', NPCs will need to always have a clear line to the nearest walk path node in whatever room they are in, or else they will get stuck. Walk paths need to form a full network where each walk path has to start where another ends, so that an NPC that is standing in one room can go to their nearest walk path node and then path through the network to their destination room.<br />
<br />
[[File:WalkPathExample.png|thumb|none|Example of walk paths seen from above. Grey is room voids, blue is door room voids, red is walk path node, and green are the walk paths.]]<br />
<br />
NPC pathing strategy is fairly primitive. When they want to go somewhere, they look for the closest path end point to them that they can move straight to without obstructions. Similar logic is used to find the path node closest to the destination. There must be a complete end-to-end chain of path segments from beginning to end, from there on.<br />
<br />
===Common Mistakes===<br />
Common mistake 1. NPCs will always start by going to the nearest node in their room when they need to path to another room. If the NPC cannot find a path to its destination from its nearest walk path node it will be unable to go anywhere. A walk path is needed to connect the doors across the room from each other, so the NPC can find the closest node at the nearby door, then follow the path to the room containing the destination, then walk across the room straight to destination's room.<br />
<br />
[[File:WalkPathFail.png|thumb|none|Common mistake 1. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
Common mistake 2. NPCs will need a clear line to the nearest node in their room, or they will be unable to leave it. If there are walls or solid furniture inside the room that will prevent a NPC from having a clear line to the nearest walk path node, add a closer walk path node they can use to path to the room's exit.<br />
<br />
[[File:WalkPathFail2.png|thumb|none|Common mistake 2. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
==Finalize==<br />
When a design is complete, it undergoes a finalizing process to insure that it is usable for its intended purpose. The result of the finalize process is presented to the architect in a list. The list may contain green notes, amber warnings and red errors.<br />
<br />
* Green notes are merely informative, providing information about the finalize process.<br />
* Amber warnings bring attention to things that may indicate a design error or oversight was made. Warnings do not prevent a design from being finalized.<br />
* Red errors highlight aspects of the design that must be changed before it can be finalized.<br />
<br />
In the on line designer, a design that finalizes with no errors can be saved into the universal library. Once saved to the library, a unique blueprint number is assigned and reported back to the architect. Then the design can be built in the game and it can be published in the appropriate exchange.<br />
<br />
In the solo designer, a design that finalizes with no errors reports that it could be saved to the library if it was finalized on line.<br />
<br />
=Designer Interface=<br />
The designer interface is dominated by a first person 3D view of the design space. It is in this space that the design will appear as it is created. The mouse pointer is used in this view to select things. The mouse is also used to drag the selected things from one place to another, to move or copy them.<br />
<br />
Hover the mouse pointer over most buttons and controls to see a tool tip. Tool tips on buttons explain their function and they sometimes reveal features that are not obvious at first. The tool tips on some buttons change, depending on current conditions. <br />
<br />
==Grid==<br />
The grid is a tool for drawing, initially visible in the view as a faint grid of lines at floor level. <br />
<br />
The grid is more like a ruler, a measuring tool, than the lines on a piece of graph paper, a static medium. The architect will move and rotate the grid many times during a typical design session, as needed, wherever it helps to draw. <br />
<br />
When more than one person is in the designer, each person sees and interacts with their own grid.<br />
<br />
===Coordinate Systems===<br />
[[file:NumberLine.png|right|Number Line]]<br />
An understanding of coordinate systems is helpful to use the grid effectively. <br />
<br />
Real numbers extend to infinity, both positive and negative. This can be represented visually as a ''number line''. Whole numbers are placed at regular intervals along the line. Fractional numbers fall proportionally between the whole numbers. i.e. 1.5 is 50% of the way between 1 and 2.<br />
<br />
A number can be expressed in units of length, such as meters, in either the positive or negative direction, along the number line. The number is its ordinal value or ''ordinate''. <br />
<br />
That defines a one-dimensional vector. The absolute value of the number is its length. The sign of the number indicates the direction, either positive or negative.<br />
[[file:CoordinateSystem.png|left|Cartesian Coordinate System]]<br />
A ''Cartesian coordinate system'' is created when two number lines are placed perpendicular to each other, so they cross at 0. In a Cartesian coordinate system, each number line is called an ''axis''. They are named X and Y.<br />
<br />
A plane is formed by the intersection of the two axes, called the ''XY plane''. At any location in the plane, the X ordinate and the Y ordinate can be determined by dropping the point perpendicular to the respective axes. Knowing that, we can plot any location in the plane if we know the X ordinate and the Y ordinate at the location.<br />
<br />
The combination of ordinates is called ''coordinates''. Coordinates are expressed using notation like this (X, Y). In the picture, the coordinates of the starship are (-4, -2). The coordinates of the asteroid are (2.5, 3). Coordinates (0,0) are called the ''origin'', because that is where the numbers originate, or begin, for all axes.<br />
<br />
This is a 2 dimensional (2D) coordinate system because it expresses locations as dimensions measured along two axes.<br />
[[file:3DCoordinateSystem.png|right|3D Coordinate System]]<br />
A third axis can be added perpendicular to each of the other two axes. It is named Z. <br />
<br />
Using the coordinates of three axes, any location in space can be described. This is a 3 dimensional (3D) coordinate system because it expresses locations as dimensions measured along three axes. 3D coordinates are expressed like this (X, Y, Z).<br />
<br />
====Right Hand Rule====<br />
Which way does the Z axis go? There are two possible orientations. <br />
<br />
Hazeron uses the right-hand rule for making that determination. It can be visualized by looking at the right hand held out flat. The thumb points in the direction of the positive X axis. The index finger points in the direction of the positive Y axis. Curl the remaining fingers upward, perpendicular to the palm. The middle finger points in the direction of the positive Z axis.<br />
<br />
Mathematically, that means the Z axis is equal to the cross product of the X axis against the Y axis.<br />
<br />
<code>Z = X cross Y</code><br />
<br />
Rotations around axes are also determined using the right hand rule. The positive direction of angular rotation around each axis can be determined by grasping the axis with the right hand, with the thumb pointing in the positive direction. The fingers curl around the axis in the positive angle direction.<br />
<br />
====Absolute Coordinate System====<br />
The ''absolute coordinate system'' underlies all geometry in the designer.<br />
<br />
The absolute coordinate system is indicated by an immovable yellow marker. It is visible in the view as three short intersecting XYZ axis lines.<br />
<br />
That is where the grid starts in a new drawing. To put the grid back to that position, use the [[Designer_Menu#Position_Grid|Position Grid]] command, then choose the '''S=Reset''' option.<br />
<br />
Mathematically, the grid shows the position of a 4x4 transformation matrix. The absolute coordinate system is defined as the identity matrix.<br />
<br />
<code>1 0 0 0</code><br><br />
<code>0 1 0 0</code><br><br />
<code>0 0 1 0</code><br><br />
<code>0 0 0 1</code><br />
<br />
*Origin is at (0,0,0).<br />
*X axis vector is (1,0,0).<br />
*Y axis vector is (0,1,0).<br />
*Z axis vector is (0,0,1).<br />
<br />
===Visible Grid===<br />
The visible grid represents a 3D coordinate system. Axis lines are bright in the positive direction and dim in the negative direction. The position of X is shown as a red line. The position of Y is shown as a green line. The position of Z is shown as a blue line.<br />
<br />
X and Y lines are marked at the ends with the axis name and direction.<br />
<br />
The XY plane contains lines parallel to the X and Y axes, forming a visible grid. Regular interval spacing between the grid lines is controlled by a combo box control on the reference tool bar. <br />
<br />
Grid colors are controlled on the Designer page of the Settings window.<br />
<br />
[[Designer_Menu#Show_Grid|Grid visibility]] can be turned off. <br />
<br />
Grid rounding can be turned on or off, independently of the grid visibility state.<br />
<br />
===Grid as a Tool===<br />
All drawing takes place in the 3D coordinate system of the grid. Position the grid to draw anywhere in the drawing, using coordinates relative to the subject matter. This is typically done frequently while creating a design, using commands accessed on the [[Designer#Reference_Tool_Bar|reference tool bar]] and the [[Designer_Menu#Helpers|helpers menu]].<br />
<br />
[[Designer#Coordinate_Input|Coordinates entered into the input tool bar]] are relative to the grid. <br />
<br />
Freehand drawing happens in the plane of the grid. In the view, the location of the mouse pointer is projected straight into the screen until it intersects the XY plane of the grid, regardless of the visibility state of the grid. If ''Snap to Grid'' is enabled, that location will be rounded to the nearest grid line intersection. Various snapping switches can be enabled. Grid rounding behavior is overridden when the mouse pointer snaps to existing geometry.<br />
<br />
Most drawing commands terminate/replace the current drawing command; grid positioning commands suspend the current drawing command instead. Whenever a drawing command is requesting point input, a grid positioning command can be invoked. Upon termination of the grid positioning command, the suspended drawing command will resume its request for point input.<br />
<br />
When selected geometry is copied to the clipboard, the geometry on the clipboard is in the coordinate space of the grid, at the time of the copy.<br />
<br />
When geometry is pasted from the clipboard, it is placed in the coordinate space of the grid, at its location at the time of the paste.<br />
<br />
For example, move the grid to the center of a selected part. Copy that part to the clipboard. Move the grid. Paste the clipboard; it will be added at the new location of the grid. Use [[Designer_Menu#Paste_At|Paste At]] to place more than one of them.<br />
<br />
==Menu Bar==<br />
[[file:DesignerMenu.png|right|Menu Bar]]<br />
At the top of the designer interface is a menu bar. Most functions of the program can be accessed using the menu bar.<br />
<br />
See [[Designer_Menu|designer menu]] for a list of the items on the menu bar.<br />
<br />
==Input Tool Bar==<br />
[[file:DesignerInputBar.png|right|Input Tool Bar]]<br />
The ''Input Tool Bar'' appears below the menu bar, at the left. It can be moved by dragging the dotted grip at the left end. Tool tips on the buttons explain their function.<br />
<br />
===Design Properties===<br />
Equivalent to the [[Designer_Menu#Properties|Blueprint, Properties]] menu item.<br />
<br />
===Refresh Obstructions===<br />
Equivalent to the [[Designer_Menu#Refresh_Obstructions|Blueprint, Refresh Obstructions]] menu item.<br />
<br />
===Solids Obstruct Movement===<br />
Equivalent to the [[Designer_Menu#Solids_Obstruct_Movement|Blueprint, Solids Obstruct Movment]] menu item.<br />
<br />
===Gravity===<br />
Equivalent to the [[Designer_Menu#Gravity_On.2FOff|Blueprint, Gravity On/Off]] menu item.<br />
<br />
===Preview===<br />
Equivalent to the [[Designer_Menu#Preview_On.2FOff|Blueprint, Preview On/Off]] menu item.<br />
<br />
===Preview Sun Position===<br />
Equivalent to the [[Designer_Menu#Preview_Settings|Blueprint, Preview Settings]] menu item.<br />
<br />
===Construct Building===<br />
Equivalent to the [[Designer_Menu#Preview_Place_Building|Blueprint, Preview Place Building]] menu item.<br />
<br />
===Preview People===<br />
Equivalent to the [[Designer_Menu#Preview_People|Blueprint, Preview People]] menu item.<br />
<br />
===Coordinate Input===<br />
Many design commands will ask the architect to enter a 3D point location. A location can then be entered by clicking with the mouse pointer in the view window. Alternatively, locations can be entered into the coordinate input box, at the end of the [[Designer#Input_Tool_Bar|Input Tool Bar]].<br />
<br />
3D coordinates are entered as '''X,Y,Z''' values, which are positive or negative offsets along the '''X''', '''Y''' and '''Z''' axes. <br />
Coordinates are not bracketed with parentheses.<br />
Omitted values are 0. e.g. <i>1,,2</i> is the same as <i>1,0,2</i>; <i>p2</i> is the same as <i>p2,0,0</i>; <i>a,3</i> is the same as <i>a0,3,0</i>.<br />
<br />
Polar coordinates are entered as '''pD,A,I''' values: '''D''' is distance from the origin; '''A''' is angle around the Z axis, positive counterclockwise and negative clockwise; '''I''' is the angle of inclination off the XY plane, positive above and negative below.<br />
<br />
Coordinates are relative to the location and orientation of the [[Designer#Grid|grid]] unless specified otherwise.<br />
<br />
Coordinates prefixed with '''a''' are ''absolute''. Absolute coordinates are relative to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]] of the design, ignoring the grid. e.g. ''a1.25,2.3,-4.5'' or ''ap2.5,-30,10''.<br />
<br />
Distances are interpreted in units depending upon the ''unit of measure'' setting. Whole numbers are interpreted as whole units of measure. For example, if the unit of measure is meters, which is the default, then 10 means 10 meters. Unit of measure is configured on the Designer page of the Settings window. Unit of measure can be changed at any time while drawing.<br />
<br />
====Rotating====<br />
Some design commands will ask the architect to enter a rotation value. e.g. rotate selected objects.<br />
<br />
Angles are entered in degrees.<br />
<br />
When responding to a request for rotation, input into the Coordinate Input box is interpreted as 3D rotation angles around the X, Y and Z axes. e.g. To rotate 45 degrees around the Z axis, enter 0,0,45, or simply ,,45.<br />
<br />
Positive and negative direction of rotation is determined by the [[Designer#Right_Hand_Rule|right hand rule]].<br />
<br />
====Scaling====<br />
Some design commands will ask the architect to enter a scale value. e.g. stretch selected objects.<br />
<br />
When responding to a request for scaling, input into the Coordinate Input box is interpreted as 3D stretch factors along the X, Y and Z axes. e.g. To double the overall size, enter 2,2,2; to reduce the X dimension by half, enter .5,1,1.<br />
<br />
====Move/Copy====<br />
When no design command is active, the coordinate input box can be used to move or copy the objects that are selected.<br />
* '''Move parts''' by entering a coordinate. The objects that are selected will be moved using the vector entered.<br />
* '''Copy parts''' by entering a coordinate while holding the <code>Ctrl</code> key. The objects that are selected will be copied and moved using the vector entered.<br />
<br />
==Reference Tool Bar==<br />
[[file:DesignerReferenceBar.png|right|Reference Tool Bar]]<br />
The ''Reference Tool Bar'' appears below the menu bar, to the right of the input tool bar. It can be moved by dragging the dotted grip at the left end.<br />
<br />
===Face Mode===<br />
Equivalent to the [[Designer_Menu#Face_Mode|Face, Face Mode]] menu item.<br />
<br />
===Isolate Parts===<br />
Equivalent to the [[Designer_Menu#Isolate_Parts|Face, Isolate Parts]] menu item.<br />
<br />
===Find Vertices===<br />
Equivalent to the [[Designer_Menu#Find_Vertices|Helpers, Find Vertices]] menu item.<br />
<br />
===Find Edges===<br />
Equivalent to the [[Designer_Menu#Find_Edges|Helpers, Find Edges]] menu item.<br />
<br />
===Find Faces===<br />
Equivalent to the [[Designer_Menu#Find_Faces|Helpers, Find Faces]] menu item.<br />
<br />
===Show Edges===<br />
Equivalent to the [[Designer_Menu#Show_Edges|View, Show Edges]] menu item.<br />
<br />
===Show Faces===<br />
Equivalent to the [[Designer_Menu#Show_Faces|View, Show Faces]] menu item.<br />
<br />
===Show Back Faces===<br />
Equivalent to the [[Designer_Menu#Show_Back_Faces|View, Show Back Faces]] menu item.<br />
<br />
===Move Grid===<br />
Equivalent to the [[Designer_Menu#Move_Grid|Helpers, Move Grid]] menu item.<br />
<br />
===XY Grid===<br />
Equivalent to the [[Designer_Menu#XY_Grid|Helpers, XY Grid]] menu item.<br />
<br />
===XZ Grid===<br />
Equivalent to the [[Designer_Menu#XZ_Grid|Helpers, XZ Grid]] menu item.<br />
<br />
===YZ Grid===<br />
Equivalent to the [[Designer_Menu#YZ_Grid|Helpers, YZ Grid]] menu item.<br />
<br />
===Position Grid===<br />
Equivalent to the [[Designer_Menu#Position_Grid|Helpers, Position Grid]] menu item.<br />
<br />
===Grid Spacing===<br />
Changes the spacing between lines in the grid.<br />
<br />
===Show Grid===<br />
Equivalent to the [[Designer_Menu#Show_Grid|Helpers, Show Grid]] menu item.<br />
<br />
===Grid Follows Work===<br />
Equivalent to the [[Designer_Menu#Grid_Follows_Work|Helpers, Grid Follows Work]] menu item.<br />
<br />
===Snap to Grid===<br />
Equivalent to the [[Designer_Menu#Snap_to_Grid|Helpers, Snap to Grid]] menu item.<br />
<br />
===Snap to Edges===<br />
Equivalent to the [[Designer_Menu#Snap_to_Edges|Helpers, Snap to Edges]] menu item.<br />
<br />
===Snap to Vertices===<br />
Equivalent to the [[Designer_Menu#Snap_to_Vertices|Helpers, Snap to Vertices]] menu item.<br />
<br />
===Coordinate Feedback===<br />
Shows coordinates relevant to the current drawing operation.<br />
<br />
When responding to coordinate input, the coordinate at the mouse pointer position is shown, relative to the grid. That coordinate is usually the location where the mouse pointer hits the grid, though it may change if the pointer snaps to an existing object.<br />
<br />
When dragging objects using the mouse pointer, the offset of the drag is shown. Dragging usually occurs in the grid plane, though it may change if the pointer snaps to an existing object.<br />
<br />
==Parts Window==<br />
[[file:DesignerParts.png|right|Parts]]<br />
The ''Parts'' window is displayed using the F6 key or the menu. It is typically docked at the right side of the designer window.<br />
<br />
The parts list contains every [[Design_Parts|part]] that is in the current design. This includes hull objects, imported meshes, rooms, berths, etc. This allows you to easily see everything within the design at once, and also provides buttons for toggling the visibility of each part, as well as other part properties. <br />
<br />
The parts list is also useful for selecting parts and deleting parts.<br />
<br />
===Id Column===<br />
Every part in a design is assigned a unique id number. Part id numbers may range from 1 to 65,535.<br />
<br />
Part id numbers are not preserved when copied and pasted between designs. Parts are assigned new ids when pasted into a design.<br />
<br />
===Name Column===<br />
The name column starts with an icon that indicates the kind of the [[Design_Parts|part]].<br />
<br />
The icon is followed by a text name assigned to the part. Names are assigned by the designer based on the type and properties of the part.<br />
<br />
===Group Column===<br />
The group column shows the name of the group assigned to each part. <br />
<br />
Select one or more parts and right-click to assign them to a group. Group names are chosen by the architect. Parts are assigned to groups as needed.<br />
<br />
Groups organize parts together. <br />
<br />
In building and spacecraft designs, groups define the rooms.<br />
* Group names become room names in the final blueprint, if the group contains a room void.<br />
* Room voids in the same group have the same internal air pressure.<br />
* All parts in the same group are lit similarly, according to room lighting.<br />
The '''Hull''' group is reserved for hull parts; it is never considered to be a room.<br />
Hull parts are lit according to the external environment of the building or spacecraft.<br />
* Parts with a blank group name are grouped with the hull, for lighting.<br />
<br />
In fence and wall blueprints, two groups are required: '''Post''' and '''Section'''.<br />
<br />
The '''Post''' group appears at each post of the final fence.<br />
The blueprint origin is where the post is placed on the ground,<br />
with +Z up according to the direction of gravity at the placement location.<br />
The post is oriented to align with the fence line on the ground.<br />
<br />
The '''Section''' group forms the fence between the posts, from post location to post location.<br />
A section of fence is designed from the origin, extending along the +X axis, with +Z up at each end.<br />
The +X extent of the section defines the typical post spacing of the fence.<br />
<br />
When placed on a world, the fence section is morphed to fit between two post locations.<br />
Post locations may vary in altitude and gravity direction and their spacing may vary from the typical section<br />
that is drawn.<br />
* The section origin, at Z=0, is placed at the first post.<br />
* The section +X extent, at Z=0, is placed at the second post.<br />
* The section geometry stretches accordingly.<br />
<br />
{| class="wikitable"<br />
! <br />
! On<br />
! Off<br />
! Description<br />
|-<br />
! Visibility Toggle<br />
| style="text-align:center;" | [[file:ScShow.png|40px]]<br />
| style="text-align:center;" | [[file:ScHide.png|40px]]<br />
| Toggles whether or not the part is visible.<br />
|-<br />
! Lock Toggle<br />
| style="text-align:center;" | [[file:ScLock.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnlock.png|40px]]<br />
| Toggles whether or not the part can be modified.<br />
|-<br />
! Omit Toggle<br />
| style="text-align:center;" | [[file:ScOmit.png|40px]]<br />
| style="text-align:center;" | [[file:ScInclude.png|40px]]<br />
| Toggles whether or not the part is included in the final design.<br />
|-<br />
! Seal Toggle<br />
| style="text-align:center;" | [[file:ScSeal.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnseal.png|40px]]<br />
| Toggles whether or not the part is sealed.<br />
|}<br />
<br />
==='''V'''isibility Column===<br />
Shows and controls the visibility state of parts. <br />
<br />
Parts can be made invisible to simplify the design view. Invisible parts are not selected when using the mouse in the scene. Editing functions do not operate on invisible parts.<br />
<br />
Left click to toggle the visibility of the selected parts. Right-click to choose visibility from a menu.<br />
<br />
Making a part invisible does not exclude it from the final design. Invisible parts are included in the final design.<br />
<br />
==='''L'''ock Column===<br />
Shows and controls the locked state of parts.<br />
<br />
Lock parts to protect them from accidental editing. The locked state of parts has no effect in the final design.<br />
<br />
Left click to toggle the lock of the selected parts. Right-click to choose the locked or unlocked state from a menu.<br />
<br />
==='''O'''mit Column===<br />
Shows and controls whether a part is omitted from the final design.<br />
<br />
Omit parts to prevent them from being included in the final design. Omitted parts are excluded from the design analysis report. Some parts are always omitted; they cannot be included.<br />
<br />
Excluded parts can be useful for reference purposes, as a way to keep images or geometry in the design that are not intended to be part of the final design. Parts that exist only as design tools are omitted regardless of this setting, e.g. door jigs.<br />
<br />
==='''S'''eal Column===<br />
Shows and controls whether a part is sealed.<br />
<br />
Parts remember who their architect was. Seal parts to prevent other architects from editing them in face mode. '''Only the architect of a part can seal or unseal the part.'''<br />
<br />
Sealed parts can be used in part mode like other whole parts. They can be moved, stretched, rotated, copied to the clipboard and saved into files. Whole part editing operations are mostly disabled when a sealed part is selected, to protect the design of the part from changes.<br />
<br />
A sealed part can be used as a jig but it cannot be cut using a jig.<br />
<br />
Only the architect of a sealed part can enter face mode when the part is selected. This prevents individual faces of sealed parts from being modified or copied to the clipboard by other architects.<br />
<br />
The design report lists all architects whose parts are included in a design.<br />
<br />
===State Column===<br />
Shows the current state of parts that can have multiple states, such as doors that can be open or closed. <br />
<br />
On some kinds of parts, a slide bar is shown for adjusting the transparency of the part.<br />
<br />
==Texture Wrapper Window==<br />
[[file:DesignerTextureWrapper.png|right|Texture Wrapper]]<br />
The ''Texture Wrapper'' window is displayed using the Shift+F6 key or the menu. It can be docked stacked on top of the parts window; tabs will appear at the bottom, to choose between them.<br />
<br />
'''The texture wrapper is only used in face mode.'''<br />
<br />
Texture wrapper is a tool for positioning textures on faces. <br />
Texture wrapper only operates on faces that are selected. <br />
The designer must be in face mode to select faces. <br />
<br />
The viewing area shows the texture applied to the faces. <br />
Edge lines of the faces are painted where the texture is mapped to them. <br />
The viewing area is blank when the texture differs between the selected faces. <br />
<br />
A combo box contains the current texture palette. <br />
Change the texture of faces by choosing a texture in the combo box. <br />
<br />
===Palette===<br />
A design has a palette of textures. <br />
Each face may refer to one of the textures in the palette for its primary surface texture. <br />
<br />
Faces reference palette entries. <br />
If the texture in a palette entry is changed, faces that refer to that palette entry will also change. <br />
<br />
Texture palette entries can be customized. <br />
Each palette entry can be loaded with a custom picture file or it can be configured to use one of the built-in <br />
textures included with the designer. <br />
<br />
The ''Material'' entry changes based on the material used to manufacture the design. <br />
Manufacturing material is configured in the design properties. <br />
The material texture can be overridden by loading a custom texture. <br />
When a custom texture is selected for the material entry, it no longer changes according to the manufacturing <br />
material.<br />
<br />
This is the material entry's only special behavior. <br />
The texture may be used on any faces that should change appearance based on material. <br />
<br />
The textures used for materials exist among the built-in choices included with the designer. <br />
To use one of those textures without it changing due to manufacturing material, <br />
simply assign it to a different palette entry. <br />
<br />
Custom picture files are limited to a size of 256x256 pixels. <br />
Pictures are automatically reduced to fit within that size, while maintaining aspect ratio. <br />
<br />
===Unwrap===<br />
Unwraps the faces onto the texture. A window presents options for unwrapping the faces.<br />
<br />
Texture unwrapper is a tool for automatically positioning textures on faces. <br />
Texture unwrapper only operates on faces that are selected.<br />
The designer must be in face mode to select faces.<br />
<br />
[[file:ScFigUnwrap.png|right|Unwrap Texture]]<br />
The term ''unwrap'' derives from the notion of unwrapping or unfolding the faces of a 3D solid onto a flat surface.<br />
The flat surface is the texture.<br />
<br />
Texture unwrapper is affected by the position and orientation of the grid.<br />
In particular, the texture pattern will start where the grid center corresponds to a face.<br />
<br />
A texture is selected from the design's texture palette.<br />
It will be applied to the selected faces.<br />
The size of the texture is specified, using the ''unit of measure'' configured in settings.<br />
<br />
Texture unwrapper offers several strategies to try keeping a continuous texture pattern around corners.<br />
Sometimes one strategy will produce a better result than another.<br />
<br />
Angle tolerance is used by all unwrap strategies except Unwrap by Face.<br />
Angle tolerance enables the unwrapper to group together faces with similar facing.<br />
<br />
'''Unwrap by Face''' maps each face individually.<br />
Texture is aligned to the plane of each face, with origin aligned to the grid center.<br />
Texture pattern restarts at each new face, without regard to others.<br />
No attempt is made to maintain a continuous texture pattern around corners.<br />
<br />
'''Unwrap by Facing''' maps faces in groups according to their facing.<br />
Texture is mapped to each group using a plane projection, with its origin aligned to the grid center.<br />
Texture pattern is continuous across all faces in each group.<br />
No attempt is made to maintain a continuous texture pattern around corners, between groups.<br />
<br />
'''Unwrap by Edges''' maps faces like Unwrap by Facing.<br />
Texture pattern continues around corners where possible.<br />
<br />
'''Unwrap by Edges Horizontally''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping horizontally rather than vertically.<br />
<br />
'''Unwrap by Edges Vertically''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping vertically rather than horizontally.<br />
<br />
===Plane Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a plane projection. Position of the grid plane affects the result.<br />
<br />
Plane projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a straight parallel projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture. <br />
<br />
The texture is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern is increasingly distorted as the angle of faces gets closer to perpendicular to the <br />
direction the texture is projected. <br />
The pattern smears along perpendicular faces.<br />
<br />
===Cylindrical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a cylindrical projection. Position of the grid plane affects the result.<br />
<br />
Cylindrical projection texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a cylindrical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture and the number of times the texture repeats around the cylinder. <br />
<br />
The texture is stretched into a cylinder that is aligned with the red X axis of the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows around the cylinder with distance from the axis. <br />
The pattern is sized along the X axis according to user choices, so it does not stretch in the X axis direction. <br />
<br />
Cylindrical mapping is useful for applying textures to spindles. <br />
Center the grid on the spindle's rotation axis, with the red X axis aligned to the spindle's rotation axis. <br />
Cylindrically apply a texture.<br />
<br />
===Spherical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a spherical projection. Position of the grid plane affects the result.<br />
<br />
Spherical projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a spherical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the number of times the texture repeats around the equator of a sphere. <br />
<br />
The texture is stretched into a sphere that is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
The center of the projection is the center of the grid plane. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows with distance from the center.<br />
<br />
===Repeat===<br />
Toggles a repeating pattern of the texture image, to aid in positioning. All textures repeat, regardless of this setting. <br />
<br />
The viewing area only shows faces that are selected in the scene. Vertices are highlighted when selected. Vertex selection matches the vertices selected in the scene. Vertices can be selected/deselected in the scene also. <br />
<br />
===Mouse Controls===<br />
* Left click an unselected vertex to select it. <br />
* Ctrl+left click a vertex to toggle its selection. <br />
* Left click a selected vertex, then drag, to move all selected vertices. <br />
* Left click in empty space to deselect all vertices; then drag, to drag a box to select vertices. <br />
* Ctrl+left click in empty space, then drag, to drag a box to toggle selection of vertices. <br />
* Right click then drag to pan the display. <br />
* Wheel to change view magnification. <br />
* Ctrl+wheel to change view magnification in larger steps. <br />
<br />
===Key Commands===<br />
*<code>A</code> selects all vertices. <br />
*<code>G</code> grabs selected vertices to move them. <br />
*<code>R</code> rotates selected vertices. <br />
*<code>S</code> stretches selected vertices. <br />
*<code>X</code> constraint. While moving, moves in X only. While stretching, stretches in X only. <br />
*<code>Y</code> constraint. While moving, moves in Y only. While stretching, stretches in Y only.<br />
<br />
=Spacecraft Design=<br />
For spacecraft designer specific information, see the [[Spacecraft Design]] page.<br />
<br />
==Design Checklist==<br />
The designer offers a checklist as a guide to completing a design. It provides general how-to instructions on how to design a spacecraft.<br />
<br />
===Properties===<br />
Configure the structure. '''Required.'''<br />
<br />
The ''structure'' tells the designer what you are trying to make. Configure this right away. <br />
<br />
The structure affects the design analysis. It also affects the spacecraft when viewed in ''Preview Mode''. <br />
<br />
===Hull===<br />
Construct the hull. '''Required.'''<br />
<br />
''Hull'' parts are the most visible part of a spacecraft when it is seen from the outside. This is the spacecraft people see; make the hull look nice. <br />
<br />
Hull parts determine the volume of the spacecraft. Internal subsystems are allocated from this volume. Parts inside the hull do not reduce hull volume. <br />
<br />
Hull parts may overlap each other. Hull parts may not form separated pieces of a spacecraft. Hull parts must form a single contiguous spacecraft. <br />
<br />
Do not ''join'' hull parts together when done. Collision logic prefers simple hull parts instead of complicated hull parts.<br />
<br />
A concave depression into a hull part is always obstructed. Use hull voids to gain access to obstructed areas if needed. <br />
<br />
Hull parts are not required to form airtight shells; they can have holes. <br />
<br />
If you can see completely through a hull part, through an area that should be solid, its calculated volume may be incorrect. ''Door'', ''window'', ''room'' and ''room void'' parts inside the hull part will block such openings during volume calculations. It may be necessary to add faces, rooms, or room voids to a hull part with holes through it. <br />
<br />
A hull can be created by importing a 3DS or STL file. Many free spacecraft models are available on the Internet. They typically define only the outside shell and they rarely include textures, which makes them ideal for use here. <br />
<br />
The origin (0,0) location after the grid is reset is the center of gravity (CG) of the spacecraft. The CG is the point about which the spacecraft will pitch, roll, and yaw. <br />
<br />
To move the CG of a spacecraft, all the parts must be moved. Unhide and unlock all parts before proceeding. Position the grid at the desired CG and orientation: +X is starboard, +Y is forward, +Z is up. Select all the parts and ''Edit, Cut'' them. Use the ''Position Grid'' function and press '''S''' to reset the grid. ''Edit, Paste'' the parts at their new location. <br />
<br />
===Turrets===<br />
Construct gun turrets.<br />
<br />
A turret consists of a base that spins and an optional gun that tilts. The turret is remotely operated by a troop at a control station aboard the spacecraft. <br />
<br />
Turrets need an unobstructed field of fire. Turrets can hit their own hull and its occupants; NPCs avoid doing so. <br />
<br />
Draw the base of a turret on the hull using a mesh part. Select the base and use the ''Make Turret'' function. The function prompts for the base pivot point and pivot axis. If the turret spins backward when operated, use the ''Properties, Turret Base Position'' function to flip the pivot axis in the opposite direction. <br />
<br />
At this point the turret can be used. Gunfire will emit from the center of the turret base.<br />
<br />
To add a gun to a turret, right-click the Turret in the parts list and select ''Add State'' to add a Gun. Change the turret to the Gun state and draw a gun in face mode. Use the ''Properties, Turret Gun Position'' function to configure where the gun tilts, where it shoots, and where the gunner sees out when operating the turret. <br />
<br />
In the designer, a turret shows the faces of both the base and gun only when it is in the Gunner Screen state. Otherwise a turret only shows the faces appropriate to its current state.<br />
<br />
===Lights===<br />
Construct exterior lights.<br />
<br />
Exterior lights add visibility and draw attention. Interior lights are not represented by any part. <br />
<br />
The appearance of exterior lights can be created using mesh or hull parts. Hull parts have the advantage of adding hull volume. <br />
<br />
''Light Lens'' parts glow when the headlight of the spacecraft is on. Use ''Make Light Lens'' to convert each selected part into a light lens. Each lit light lens adds a glow sprite at the center of the part. <br />
<br />
''Nav Light Lens'' parts glow when the nav lights of the spacecraft are on. Use ''Make Navigation Light Lens'' to convert each selected part into a nav light lens. Each lit nav light lens adds a glow sprite at the center of the part. <br />
<br />
''Rotating Beacon Lens'' parts glow when the rotating beacons of the spacecraft are on. Position the grid to establish the beacon rotation axis, which will align with the Z axis when the beacon is made. Use ''Make Rotating Beacon Lens'' to convert each selected part into a rotating beacon. Each lit rotating beacon adds a rotating glow sprite at the center of the part. <br />
<br />
''Strobe Lens'' parts blink when the strobe lights of the spacecraft are on. Use ''Make Strobe Lens'' to convert each selected part into a strobe. Each lit strobe adds a glow sprite at the center of the part. <br />
<br />
===Landing Gear===<br />
Construct landing gear.<br />
<br />
Landing gear is optional. The spacecraft will settle on its hull without landing gear. <br />
<br />
Landing altitude is determined by the bottom extent of the spacecraft. Landing gear changes the extents of the spacecraft. In the presence of more than one landing gear part, the one that reaches the farthest down will determine the landing altitude. <br />
<br />
Build each landing gear using a mesh part. Use the ''Make Landing Gear'' function to convert the mesh into a ''Landing Gear'' part. <br />
===Rooms===<br />
Construct rooms inside the hull. '''Required.'''<br />
<br />
''Room'' parts do not contribute to collision logic. They exist only for appearance. Rooms are what players see most of the time they are aboard; make them look nice. <br />
<br />
Separate rooms should be spaced apart slightly, to allow for wall thickness between them. <br />
<br />
If the design will incorporate turbo lifts, draw one room for each turbo lift at only one of its stops. That room will become a turbo lift car in another step, after more parts have been added. <br />
<br />
===Meshes===<br />
Construct details.<br />
<br />
Use meshes to create '''control stations''', furnishings, equipment, and other interesting details. <br />
<br />
Meshes do not create an obstacle to movement. They exist only for appearance. Make them look nice. <br />
<br />
===Doorways===<br />
Cut doorways. '''Required.'''<br />
<br />
A ''door jig'' cuts a doorway from one room to another room, or from a room to a hull. The door jig cuts the faces, adds a lining of faces to the hole, and creates a ''Door'' part in the hole. <br />
<br />
Place a door jig into each room that will become a turbo lift. '''Do not cut doors into turbo lifts at this time.'''<br />
<br />
Jigs do not work when placed flat against a face. Raise jigs slightly above the floor before cutting doors.<br />
<br />
Jigs aren't perfect; they sometimes create too many or not enough faces when lining the hole. You may have to delete excess faces or draw missing faces there. <br />
<br />
===Windows===<br />
Cut windows. '''Required.'''<br />
<br />
A ''window jig'' cuts a window opening from one room to another room, or from a room to a hull. A window jig can also cut a window into a hull where no room exists on the inside. The window jig cuts the faces, adds a lining of faces to the hole, and creates a ''Window'' part in the hole. <br />
<br />
Windows are for human players. People like to see out; make lots of windows. NPCs do not need windows to operate a spacecraft. <br />
<br />
Translucent windows give the appearance of occupancy in areas where there may be no rooms at all. They do this by lighting and darkening while the spacecraft has power, which gives the impression that someone is in there. <br />
<br />
In some cases an entire hull part or some faces on a hull part would make a nice window. Use ''Split Faces'' in face mode to make a separate part from selected faces. The ''Make Window'' function converts the part into a window. <br />
<br />
===Control Stations===<br />
Add control stations. '''Required.'''<br />
<br />
Control stations are used by players and NPCs to operate subsystems of the spacecraft. In some cases the creation of the control station causes the appropriate subsystem to exist in the design. <br />
<br />
The simplest control stations to draw are the swivel consoles with chairs. They are simple because a built in model of a control station is used. You only have to specify the location and spin of the control station.<br />
<br />
Meshes are used to create the appearance of integrated control stations. The functions that create integrated control stations will prompt for the operator's location and body position. <br />
<br />
Some stations request additional information such as the screen position. The screen position can be changed by moving the face in face mode. Additional information can be changed using properties functions. <br />
<br />
Turrets require an integrated control station to operate them. Select a turret to add an integrated turret control station. <br />
<br />
Weapon stations request the weapon emit location. These weapons are omnidirectional and they do not hit their own hull or its contents. <br />
<br />
Troop posts provide a location for troops to be stationed when they are not operating a turret. <br />
<br />
===Panels===<br />
Add service and other panels.<br />
<br />
Service panels create a place at which a subsystem of the spacecraft can be repaired manually. In the absence of a service panel, a subsystem can only be repaired by an airport repair shop. Other panels simply provide information. <br />
<br />
Some service panels must be associated with the control station of the appropriate subsystem, to know what subsystem the panel is intended to service.<br />
<br />
''Alert Status Panels'' act as the speaker grill for alert tones. Alert sounds are emitted from alert status panels.<br />
<br />
''Room Life Support Panel'' must be associated with the room void it monitors. <br />
<br />
''World Map Panel'' aspect ratio is 2:1 for spherical worlds. Aspect ratio is 10:1 for ringworld arc sections. <br />
<br />
===Vehicles===<br />
Add vehicle parking spots.<br />
<br />
''Specific vehicle parking spots'' show a solid vehicle model in the spot with a small icon beneath them. <br />
<br />
''General vehicle parking spots'' show a bounding box that fits any vehicle that can park there. e.g. ''Ground vehicle parking spot'' shows a box large enough for any ground vehicle in the game. <br />
<br />
Spacecraft fill their vehicle parking spots by teleporting new vehicles from buildings in trade range. <br />
<br />
With a ''vehicle transporter'' in the design, vehicle parking spots act as vehicle transporter pads. A vehicle does not have to be able to move from its parking spot. The driver simply calls for transport on the comm. <br />
<br />
''Space vehicle launcher'' creates a launch pad and a launch path. While launching, a space vehicle travels along the path. It is not obstructed by the hull or anything else while launching. Voids are not required at the launcher or along the path. The exit end of the path must be clear of the hull. <br />
<br />
When a pilot requests launch, their space vehicle is teleported to an available launch pad. Doors associated with the launcher are opened and the vehicle is launched along the path. The departure speed of the vehicle is determined by the length of the path. Launcher doors close automatically after the vehicle is launched. <br />
<br />
''Space vehicle recovery subsystem'' creates a virtual runway for arriving space vehicles. It should be placed outside the hull. Allow for botched landings; sometimes a pilot has to go around. A space vehicle that stops along the centerline of the runway is teleported to an empty parking spot. <br />
<br />
===Details===<br />
Add berths and other details.<br />
<br />
''Berths'' define the accommodations for captain, officers, crew, troops and passengers. Berths are optional. <br />
<br />
When an avatar dies who has taken a berth aboard a spacecraft, they reappear in their berth aboard that spacecraft if the life support subsystem is functioning and the spacecraft has not been captured by an enemy. On a spacecraft with no berths, the avatar reappears at the helm. <br />
<br />
''Contrail emitters'' help to see and identify spacecraft. Contrails are much easier to see than a fast moving sparkling pixel. Contrails are colored according to each empire's preferences. The size of the contrail emitter part determines the size of the contrail.<br />
<br />
If no contrail emitters are added, a single contrail emitter will automatically be added at the center of the aft extents. This is not done for space stations. <br />
<br />
''Light bulb'' is the source of light emitted by the spacecraft when the headlights switch is on. The light can be omnidirectional or focused into a cone. The light bulb part is not visible in the final spacecraft. Emitted light is not shadowed by faces of the spacecraft. <br />
<br />
''Remote cameras'' are accessed by players using the command station. <br />
<br />
''Items'' can be placed in the design. Items are populated from the city's inventory when the spacecraft is manufactured. Players can take these items. Items are replenished from the spacecraft's cargo. <br />
<br />
===Voids===<br />
Carve out void spaces and add barriers. '''Required.'''<br />
<br />
The hull is treated as a solid mass through and through. Room meshes have no effect on this. <br />
<br />
Voids carve out the areas in which people, vehicles and other spacecraft can go. Barriers create obstacles inside those carved out areas. Voids and barriers are not visible in the final model. <br />
<br />
When two voids are placed next to each other, overlap them slightly. This assures a positive handoff as something moves from one void to another, without bouncing off an infinitesimally thin wall in between.<br />
<br />
Each void and barrier must form a single airtight bubble. There can be no holes or missing faces. Overlapping or excess faces will cause trouble. Concave areas are ok. <br />
<br />
Do not ''join'' voids together. It is better to have a few simple intersecting voids than one single complicated void. <br />
<br />
''Room Voids'' are placed inside rooms, turbo lifts and on ramps. Each operable door must have a room void in the doorway to connect the room voids accessed by the door. <br />
<br />
Voids must be as simple as possible with very few faces. Rooms can be very complex, bumpy, curvy and full of holes. Do not conform to every bump and bulge in the walls. Build simple voids just inside the bumps and most people will never notice. <br />
<br />
''Hull Voids'' allow access to areas of the hull that should '''not''' obstruct movement. <br />
<br />
''Barriers'' create obstacles to movement inside room voids. Barriers can be used to create stairs and ramps or to surround things the player should not walk through. Barriers should use extremely few faces. <br />
<br />
When blocking a large portion of a room void, consider making the room void smaller instead.<br />
<br />
Stairs can be created using a mesh that looks like stairs and a ramp-shaped barrier, instead of shaping the barrier to fit every step. Less faces are needed to make the barrier and movement on the stairs is smoother; it is also easier for small or legless creatures. <br />
<br />
===Turbo Lifts===<br />
Make turbo lifts functional.<br />
<br />
This step is required if you are building any turbo lifts in the design. Two concepts are introduced: doors and paths. They are discussed in detail in the following '''Doors''' and '''Paths''' steps. <br />
<br />
Select the turbo lift room, room void, and door jig for one turbo lift. Use the ''Make Turbo Lift'' function to fuse them together into a ''Turbo Lift'' part.<br />
<br />
Right-click on the turbo lift in the parts list and select ''Add Stop''. Provide a name for the current stop of the turbo lift. Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. The turbo lift must be outside a room to cut into it. The turbo lift must be inside a hull to cut out of it. <br />
<br />
Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
For each additional stop, do the following. <br />
<br />
* Add a stop name for the next stop position. The current stop of the car does not matter. <br />
<br />
* Use the ''Align Turbo Lift Stop'' function to position the car at the newly added stop. The turbo lift can be moved more than once while aligning it; only the final position matters. It is essential to use the ''Align Turbo Lift Stop'' command. Mouse drag moving and cut/copy/paste will change the positions of all stops at once. <br />
<br />
* Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. <br />
<br />
* Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
* When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
Repeat this step for each turbo lift in the design.<br />
<br />
===Paths===<br />
Add walk paths and ladder paths. '''Required.'''<br />
<br />
NPCs do not analyze or even see rooms or obstacles. They blindly trust paths to get them where they want to go. Simple well planned paths enable NPCs to quickly and efficiently move to any room. <br />
<br />
To get from one room to another, an NPC walks straight to the closest path node in their room. Then they follow the path to the closest node to the destination location in the final room. Then they walk directly to the destination location. Any obstruction along the way will physically stop them and their ability to recover from this is poor. Any break in the path along the way is uncrossable. <br />
<br />
NPCs know how to use doors, ladders and turbo lifts. NPCs do not know how to use multiple transporters; they won't beam from one transporter to another to move about, without orders. <br />
<br />
Walk paths should not be placed directly on the floor. A meter or less above the floor works well.<br />
<br />
Paths should be kept as simple as possible. <br />
<br />
Walk paths and ladder paths must form one continuous branching structure throughout the design, wherever NPCs are expected to find their way. It is ok to loop and branch as much as needed. <br />
<br />
Ladder paths are placed where the body is to travel, not inside the ladder rungs. When moving along a ladder path, the body is centered on the path and all obstructions are ignored. <br />
<br />
Each operable interior door needs a walk path that passes through the doorway and ends a short distance inside the room void on each side. Walk paths through hull doors have one end inside a room void and the other end outside the hull. <br />
<br />
Operable floor and ceiling hatches are created using doors. However they should incorporate a ladder path instead of a walk path, even if no ladder is depicted. <br />
<br />
===Doors===<br />
Make doors functional. '''Required.'''<br />
<br />
By now every doorway should have a door, a room void, and a path. The door jig created a ''Door'' part. If a jig was not used, draw a door using a mesh. Then use the ''Make Door'' command to convert the mesh into a ''Door'' that can open and close.<br />
<br />
Change the current state of the door to ''Open''. Select the door, room void and path together. Use the ''Associate Parts'' command to make them accessible only when the door is open.<br />
<br />
When making a hull door, the associated door parts must include a hull void. This distinguishes a hull door from an interior door. The hull void is usually needed to get through the collision margin around the hull. The hull void and room void associated with the hull door should overlap slightly near the middle of the doorway. <br />
<br />
To make a window in a door, simply make the appropriate faces transparent. This will serve as a window but it will not share lighting behavior with ''Window'' parts.<br />
<br />
When making a ramp, create the faces in the open state of the door. Then place a room void on the ramp to access the area on top of the ramp. Associate the room void with the open state of the door. Leave the group name of the room void blank so air pressure will match that of the outside. <br />
<br />
Door switches start out in the center of the door. Every door has two door switches that can be positioned using ''Properties, Door Switch Positions''. This is useful for large doors. <br />
<br />
When a switch is moved, a visual indicator of the new switch position should be created using a mesh, e.g. a small glowing box or ball. <br />
<br />
Paths in the room should have a node close enough to the switch to enable an NPC to operate the switch while standing at the node. Ideally this would be one of the nodes of the path segment associated with the open door. <br />
<br />
The icon for the door part shows what kind of door it is. Some changes require a door to be reanalyzed to determine what kind of door it has become. To reanalyze a door and set other properties, use the ''Properties, Door'' function. <br />
<br />
===Textures===<br />
Texture the faces. '''Required.'''<br />
<br />
Textures should be applied after all changes to the faces are completed. This saves retexturing later after edits are made. <br />
<br />
Textures are applied in face mode. Select faces in face mode and apply textures to them using various methods on the Texture Wrapper. <br />
<br />
The position of the grid affects every texturing command. A technique to insure all floor and ceiling tiles align throughout all rooms is to reset the grid before applying those textures. <br />
<br />
In addition to the base texture, faces have an effects texture layer that responds to the activity of certain subsystems. e.g. The appearance of active lit transporter pads is achieved in this way. <br />
<br />
===Decals===<br />
Add decals.<br />
<br />
Decals are textured faces that apply special rendering behavior to improve their appearance when placed on an underlying face.<br />
<br />
Decals are blended with underlying faces. This enables them to smoothly merge with underlying faces when the decal texture has transparent areas. Normally the transparent areas of textures are discarded which creates a crunchy edge on transparent areas. <br />
<br />
Decals are rendered with a slight offset from the face. That enables them to be drawn coplanar with the underlying faces without unsightly face collisions. <br />
<br />
A few generated decals are available, to display empire flag, empire name, and a few others. The color of word decals can be controlled by painting the faces. The decal that shows the name of a berth occupant must be associated with a berth. <br />
<br />
===Group Names===<br />
Assign group names. '''Required.'''<br />
<br />
Room voids are grouped to assign a name to the room. These room names appear in various user interfaces throughout the game. <br />
<br />
Room voids in the same group will have the same air pressure and lighting. Lighting is controlled by the player using Bright/Dim/Dark controls and it may come in through the windows. Room lighting can be preset using ''Properties, Room Lighting''. That is also where you specify if the room is normally exposed to sunlight. <br />
<br />
Meshes, rooms, control stations, windows, and items should be grouped with the room void they occupy so they will be lit appropriately. Doors can only be in one group; both sides of the door will be lit according to the chosen group. <br />
<br />
Translucent windows can be grouped together to cause them to be lit synchronously. This gives them the appearance of belonging to the same room, even if no room exists. <br />
<br />
Parts with no group name or the reserved name ''Hull'' will have atmosphere and lighting determined by the external environment. <br />
<br />
===Review===<br />
Review properties and design analysis. '''Required.'''<br />
<br />
Use the properties window to configure all settings and to adjust how much of the hull volume is allocated to each subsystem.<br />
<br />
===Finalize===<br />
Finalize the blueprint. '''Required.'''<br />
<br />
Finalize a blueprint to analyze it for errors and inconsistencies. Errors must be fixed before the blueprint can be used in the game. Warnings should be reviewed; changes may be needed but warnings do not prevent use of a blueprint. <br />
<br />
Finalize grabs a screen image to accompany the blueprint in the library. You can provide this image yourself. Use Preview mode to get a screen grab of your design the way it will look in the game. <br />
<br />
The finalize process is slow. It may produce a large number of errors and warnings that need to be fixed or analyzed. ''Previous Finalize Result'' shows the result of the last finalize attempt.<br />
<br />
===Preview===<br />
Preview the design. '''Required.'''<br />
<br />
Land on a world. Try to get out and see if you can get back aboard. <br />
<br />
Create crew to see that they can get to their stations. <br />
<br />
=Building Design=<br />
For building designer specific information, see the [[Building Design]] page.<br />
<br />
==Design Checklist==<br />
The designer offers a checklist as a guide to completing a design. It provides general how-to instructions on how to design a building.<br />
<br />
===Properties===<br />
Configure the structure. '''Required.'''<br />
<br />
The ''structure'' tells the designer what you are trying to make. Configure this right away. <br />
<br />
'''The structure controls what parts can be used in the design.''' The structure also affects the design analysis. <br />
<br />
===Site===<br />
Create a site. '''Required.'''<br />
<br />
''Building'', ''street light'', ''bridge'', ''biodome'', and ''ground platform'' structures require a site on which to be built. The site provides information about how to grade the terrain and what to do with the rocks and plants there. <br />
<br />
A site is created using one or more site meshes. Each portion of a building that touches the ground should rest on a site for proper ground prep. Bridges usually have two sites, one at each end of the bridge. <br />
<br />
The origin (0,0) location after the grid is reset is the insertion point when placing the building on terrain in the game. Use the ''Position Grid'' function and press '''S''' to reset the grid. The front of the building faces in the +Y direction. <br />
<br />
The altitude of the insertion point determines the altitude of the entire site. This makes building sites easy to place at a comfortable altitude next to roads. Terrain modification caused by site meshes proceeds from that placement altitude. <br />
<br />
Coastal sites are drawn with the insertion point at the back of the building. These buildings are placed on the shore facing the water. The back offers a better location to determine the altitude than the water side. <br />
<br />
Terrain uses large triangles. A site mesh cannot cut a detailed excavation into the terrain, such as a swimming pool. Instead a site mesh could push the terrain down out of the way. Then a model of a pool with a broad span of concrete around it could make that rough pit look nice. <br />
<br />
===Hull===<br />
Construct the hull. '''Required.'''<br />
<br />
''Hull'' parts are the most visible part of a building when it is seen from the outside. This is the building people see; make the hull look nice. <br />
<br />
Hull parts determine the volume of the building. Internal subsystems are allocated from this volume. Parts inside the hull do not reduce hull volume. <br />
<br />
Hull parts may overlap each other. Hull parts may form multiple separate buildings on a site. No part of a building is required to touch the ground. <br />
<br />
Do not ''join'' hull parts together when done. Collision logic prefers simple hull parts instead of complicated hull parts.<br />
<br />
A concave depression into a hull part is always obstructed. Use hull voids to gain access to obstructed areas if needed. <br />
<br />
Hull parts are not required to form airtight shells; they can have holes. <br />
<br />
If you can see completely through a hull part, through an area that should be solid, its calculated volume may be incorrect. ''Door'', ''window'', ''room'' and ''room void'' parts inside the hull part will block such openings during volume calculations. It may be necessary to add faces, rooms, or room voids to a hull part with holes through it. <br />
<br />
A hull can be created by importing a 3DS or STL file. <br />
<br />
===Turrets===<br />
Construct gun turret.<br />
<br />
The only building that allows a gun turret is a ''military guard tower''. <br />
<br />
A turret consists of a base that spins and an optional gun that tilts. The turret is operated automatically by the building. <br />
<br />
Turrets need an unobstructed field of fire. Turrets can hit their own hull and its occupants; NPCs avoid doing so. <br />
<br />
Draw the base of a turret on the hull using a mesh part. Select the base and use the ''Make Turret'' function. The function prompts for the base pivot point and pivot axis. <br />
<br />
At this point the turret can be used. Gunfire will emit from the center of the turret base.<br />
<br />
To add a gun to a turret, right-click the Turret in the parts list and select ''Add State'' to add a Gun. Change the turret to the Gun state and draw a gun in face mode. Use the ''Properties, Turret Gun Position'' function to configure where the gun tilts, where it shoots, and where the gunner sees out when operating the turret. <br />
<br />
In the designer, a turret shows the faces of both the base and gun only when it is in the Gunner Screen state. Otherwise a turret only shows the faces appropriate to its current state.<br />
<br />
===Lights===<br />
Construct exterior lights.<br />
<br />
Exterior lights add visibility and draw attention. Interior lights are not represented by any part. <br />
<br />
The appearance of exterior lights can be created using mesh or hull parts. <br />
<br />
''Light Lens'' parts can only be used on a street light. They glow when it is dark outside; the glow is bright if the city has power. Use ''Make Light Lens'' to convert each selected part into a light lens. Each lit light lens adds a glow sprite at the center of the part. <br />
<br />
''Nav Light Lens'' parts glow when it is dark; building power is not needed. Use ''Make Navigation Light Lens'' to convert each selected part into a nav light lens. Each lit nav light lens adds a glow sprite at the center of the part. <br />
<br />
''Rotating Beacon Lens'' parts glow all the time light or dark; building power is not needed. Position the grid to establish the beacon rotation axis, which will align with the Z axis when the beacon is made. Use ''Make Rotating Beacon Lens'' to convert each selected part into a rotating beacon. Each lit rotating beacon adds a rotating glow sprite at the center of the part. <br />
<br />
''Strobe Lens'' parts blink all the time light or dark; building power is not needed. Use ''Make Strobe Lens'' to convert each selected part into a strobe. Each lit strobe adds a glow sprite at the center of the part. <br />
<br />
===Rooms===<br />
Construct rooms inside the hull.<br />
<br />
''Room'' parts do not contribute to collision logic. They exist only for appearance. Rooms of buildings are not often seen because players rarely enter buildings. <br />
<br />
Some building control stations are accessible to players. Those control stations must be placed in a room. <br />
<br />
Separate rooms should be spaced apart slightly, to allow for wall thickness between them. <br />
<br />
If the design will incorporate turbo lifts, draw one room for each turbo lift at only one of its stops. That room will become a turbo lift car in another step, after more parts have been added. <br />
<br />
===Meshes===<br />
Construct details.<br />
<br />
Use meshes to create '''control stations''', furnishings, equipment, and other interesting details. <br />
<br />
Meshes do not create an obstacle to movement. They exist only for appearance. Make them look nice. <br />
<br />
===Doorways===<br />
Cut doorways.<br />
<br />
A ''door jig'' cuts a doorway from one room to another room, or from a room to a hull. The door jig cuts the faces, adds a lining of faces to the hole, and creates a ''Door'' part in the hole. <br />
<br />
Place a door jig into each room that will become a turbo lift. '''Do not cut doors into turbo lifts at this time.'''<br />
<br />
Jigs do not work when placed flat against a face. Raise jigs slightly above the floor before cutting doors.<br />
<br />
Jigs aren't perfect; they sometimes create too many or not enough faces when lining the hole. You may have to delete excess faces or draw missing faces there. <br />
<br />
===Windows===<br />
Cut or construct windows.<br />
<br />
A ''window jig'' cuts a window opening from one room to another room, or from a room to a hull. A window jig can also cut a window into a hull where no room exists on the inside. The window jig cuts the faces, adds a lining of faces to the hole, and creates a ''Window'' part in the hole. <br />
<br />
Translucent windows give the appearance of occupancy in areas where there may be no rooms at all. They do this by lighting and darkening at night while the building has power, which gives the impression that someone is in there. <br />
<br />
In some cases an entire hull part or some faces on a hull part would make a nice window. Use ''Split Faces'' in face mode to make a separate part from selected faces. The ''Make Window'' function converts the part into a window. <br />
<br />
Windows for flat walled buildings can also be created as a surface detail. A window frame with a translucent window part raised slightly away from the wall surface works well. Then the window can be copy/pasted all over the building without cutting any faces. <br />
<br />
===Control Stations===<br />
Add control stations.<br />
<br />
Very few buildings need control stations. Control stations are used by players and NPCs to operate subsystems of the building. In some cases the creation of the control station causes the appropriate subsystem to exist in the design. <br />
<br />
The simplest control stations to draw are the swivel consoles with chairs. They are simple because a built in model of a control station is used. You only have to specify the location and spin of the control station.<br />
<br />
Meshes are used to create the appearance of integrated control stations. The functions that create integrated control stations will prompt for the operator's location and body position. <br />
<br />
Some stations request additional information such as the screen position. The screen position can be changed by moving the face in face mode. Additional information can be changed using properties functions. <br />
<br />
Turrets require an integrated control station to define the module present. Select a turret to add an integrated turret control station. The station cannot be manned; it should be embedded in the building. <br />
<br />
Weapon stations request the weapon emit location. These weapons are omnidirectional and they do not hit their own hull or its contents. Weapon stations are never manned so they can be embedded in the building. <br />
<br />
Troop posts provide a location for troops to be stationed. <br />
<br />
===Panels===<br />
Add panels.<br />
<br />
''Room Life Support Panel'' must be associated with the room void it monitors. <br />
<br />
''World Map Panel'' aspect ratio is 2:1 for spherical worlds. Aspect ratio is 10:1 for ringworld arc sections. <br />
<br />
===Vehicles===<br />
Add vehicle parking spots.<br />
<br />
''Specific vehicle parking spots'' show a solid vehicle model in the spot with a small icon beneath them. <br />
<br />
''General vehicle parking spots'' show a bounding box that fits any vehicle that can park there. e.g. ''Ground vehicle parking spot'' shows a box large enough for any ground vehicle in the game. <br />
<br />
Buildings fill their vehicle parking spots by teleporting new vehicles from factories to which they are connected. Vehicle factories fill their vehicle parking spots by manufacturing vehicles. <br />
<br />
With a ''vehicle transporter'' in the design, vehicle parking spots act as vehicle transporter pads. A vehicle does not have to be able to move from its parking spot. The driver simply calls for transport on the comm. <br />
<br />
''Space vehicle launcher'' creates a launch pad and a launch path. While launching, a space vehicle travels along the path. It is not obstructed by the hull or anything else while launching. Voids are not required at the launcher or along the path. The exit end of the path must be clear of the hull. <br />
<br />
When a pilot requests launch, their space vehicle is teleported to an available launch pad. Doors associated with the launcher are opened and the vehicle is launched along the path. The departure speed of the vehicle is determined by the length of the path. Launcher doors close automatically after the vehicle is launched. <br />
<br />
''Space vehicle recovery subsystem'' creates a virtual runway for arriving space vehicles. It should be placed outside the hull. Allow for botched landings; sometimes a pilot has to go around. A space vehicle that stops along the centerline of the runway is teleported to an empty parking spot. <br />
<br />
===Details===<br />
Add berths and other details.<br />
<br />
''Light bulb'' is the source of light emitted by the street light building when it gets dark. The light can be omnidirectional or focused into a cone. The light bulb part is not visible in the final building. Emitted light is not shadowed by faces of the building. <br />
<br />
''Items'' can be placed in the design. Items are populated from the city's inventory when the building is constructed. Players can take these items. Items are replenished from the city's inventory. <br />
<br />
===Voids===<br />
Carve out void spaces and add barriers.<br />
<br />
The hull is treated as a solid mass through and through. Room meshes have no effect on this. <br />
<br />
Voids carve out the areas in which people, vehicles and spacecraft can go. Barriers create obstacles inside those carved out areas. Voids and barriers are not visible in the final model. <br />
<br />
When two voids are placed next to each other, overlap them slightly. This assures a positive handoff as something moves from one void to another, without bouncing off an infinitesimally thin wall in between.<br />
<br />
Each void and barrier must form a single airtight bubble. There can be no holes or missing faces. Overlapping or excess faces will cause trouble. Concave areas are ok. <br />
<br />
Do not ''join'' voids together. It is better to have a few simple intersecting voids than one single complicated void. <br />
<br />
''Room Voids'' are placed inside rooms, turbo lifts and on ramps. Each operable door must have a room void in the doorway to connect the room voids accessed by the door. <br />
<br />
Voids must be as simple as possible with very few faces. Rooms can be very complex, bumpy, curvy and full of holes. Do not conform to every bump and bulge in the walls. Build simple voids just inside the bumps and most people will never notice. <br />
<br />
''Hull Voids'' allow access to areas of the hull that should '''not''' obstruct movement. <br />
<br />
''Barriers'' create obstacles to movement inside room voids. Barriers can be used to create stairs and ramps or to surround things the player should not walk through. Barriers should use extremely few faces. <br />
<br />
When blocking a large portion of a room void, consider making the room void smaller instead.<br />
<br />
Stairs can be created using a mesh that looks like stairs and a ramp-shaped barrier, instead of shaping the barrier to fit every step. Less faces are needed to make the barrier and movement on the stairs is smoother; it is also easier for small or legless creatures. <br />
<br />
===Turbo Lifts===<br />
Make turbo lifts functional.<br />
<br />
This step is required if you are building any turbo lifts in the design. Two concepts are introduced: doors and paths. They are discussed in detail in the following '''Doors''' and '''Paths''' steps. <br />
<br />
Select the turbo lift room, room void, and door jig for one turbo lift. Use the ''Make Turbo Lift'' function to fuse them together into a ''Turbo Lift'' part.<br />
<br />
Right-click on the turbo lift in the parts list and select ''Add Stop''. Provide a name for the current stop of the turbo lift. Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. The turbo lift must be outside a room to cut into it. The turbo lift must be inside a hull to cut out of it. <br />
<br />
Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
For each additional stop, do the following. <br />
<br />
* Add a stop name for the next stop position. The current stop of the car does not matter. <br />
<br />
* Use the ''Align Turbo Lift Stop'' function to position the car at the newly added stop. The turbo lift can be moved more than once while aligning it; only the final position matters. It is essential to use the ''Align Turbo Lift Stop'' command. Mouse drag moving and cut/copy/paste will change the positions of all stops at once. <br />
<br />
* Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. <br />
<br />
* Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
* When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
Repeat this step for each turbo lift in the design.<br />
<br />
===Paths===<br />
Add walk paths and ladder paths.<br />
<br />
This step is required if you have built any interior rooms. <br />
<br />
NPCs do not analyze or even see rooms or obstacles. They blindly trust paths to get them where they want to go. Simple well planned paths enable NPCs to quickly and efficiently move to any room. <br />
<br />
To get from one room to another, an NPC walks straight to the closest path node in their room. Then they follow the path to the closest node to the destination location in the final room. Then they walk directly to the destination location. Any obstruction along the way will physically stop them and their ability to recover from this is poor. Any break in the path along the way is uncrossable. <br />
<br />
NPCs know how to use doors, ladders and turbo lifts. NPCs do not know how to use multiple transporters; they won't beam from one transporter to another to move about, without orders. <br />
<br />
Walk paths should not be placed directly on the floor. A meter or less above the floor works well.<br />
<br />
Paths should be kept as simple as possible. <br />
<br />
Walk paths and ladder paths must form one continuous branching structure throughout the design, wherever NPCs are expected to find their way. It is ok to loop and branch as much as needed. <br />
<br />
Ladder paths are placed where the body is to travel, not inside the ladder rungs. When moving along a ladder path, the body is centered on the path and all obstructions are ignored. <br />
<br />
Each operable interior door needs a walk path that passes through the doorway and ends a short distance inside the room void on each side. Walk paths through hull doors have one end inside a room void and the other end outside the hull. <br />
<br />
Operable floor and ceiling hatches are created using doors. However they should incorporate a ladder path instead of a walk path, even if no ladder is depicted. <br />
<br />
===Doors===<br />
Make doors functional.<br />
<br />
This step is required if you have built any doors. <br />
<br />
By now every doorway should have a door, a room void, and a path. The door jig created a ''Door'' part. If a jig was not used, draw a door using a mesh. Then use the ''Make Door'' command to convert the mesh into a ''Door'' that can open and close.<br />
<br />
Change the current state of the door to ''Open''. Select the door, room void and path together. Use the ''Associate Parts'' command to make them accessible only when the door is open.<br />
<br />
When making a hull door, the associated door parts must include a hull void. This distinguishes a hull door from an interior door. The hull void is usually needed to get through the collision margin around the hull. The hull void and room void associated with the hull door should overlap slightly near the middle of the doorway. <br />
<br />
To make a window in a door, simply make the appropriate faces transparent. This will serve as a window but it will not share lighting behavior with ''Window'' parts.<br />
<br />
When making a ramp, create the faces in the open state of the door. Then place a room void on the ramp to access the area on top of the ramp. Associate the room void with the open state of the door. Leave the group name of the room void blank so air pressure will match that of the outside. <br />
<br />
Door switches start out in the center of the door. Every door has two door switches that can be positioned using ''Properties, Door Switch Positions''. This is useful for large doors. <br />
<br />
When a switch is moved, a visual indicator of the new switch position should be created using a mesh, e.g. a small glowing box or ball. <br />
<br />
Paths in the room should have a node close enough to the switch to enable an NPC to operate the switch while standing at the node. Ideally this would be one of the nodes of the path segment associated with the open door. <br />
<br />
The icon for the door part shows what kind of door it is. Some changes require a door to be reanalyzed to determine what kind of door it has become. To reanalyze a door and set other properties, use the ''Properties, Door'' function. <br />
<br />
===Textures===<br />
Texture the faces. '''Required.'''<br />
<br />
Textures should be applied after all changes to the faces are completed. This saves retexturing later after edits are made. <br />
<br />
Textures are applied in face mode. Select faces in face mode and apply textures to them using various methods on the Texture Wrapper. <br />
<br />
The position of the grid affects every texturing command. A technique to insure all floor and ceiling tiles align throughout all rooms is to reset the grid before applying those textures. <br />
<br />
In addition to the base texture, faces have an effects texture layer that responds to the activity of certain subsystems. e.g. The appearance of active lit transporter pads is achieved in this way. <br />
<br />
===Decals===<br />
Add decals.<br />
<br />
Decals are textured faces that apply special rendering behavior to improve their appearance when placed on an underlying face.<br />
<br />
Decals are blended with underlying faces. This enables them to smoothly merge with underlying faces when the decal texture has transparent areas. Normally the transparent areas of textures are discarded which creates a crunchy edge on transparent areas. <br />
<br />
Decals are rendered with a slight offset from the face. That enables them to be drawn coplanar with the underlying faces without unsightly face collisions. <br />
<br />
Two generated decals are available, to display empire flag and empire name. The color of the empire name decal can be controlled by painting the faces. <br />
<br />
===Group Names===<br />
Assign group names.<br />
<br />
This step is required if you have built any interior rooms. <br />
<br />
Room voids are grouped to assign a name to the room. These room names appear in various user interfaces throughout the game. <br />
<br />
Room voids in the same group will have the same air pressure and lighting. Lighting is controlled by the player using Bright/Dim/Dark controls and it may come in through the windows. Room lighting can be preset using ''Properties, Room Lighting''. That is also where you specify if the room is normally exposed to sunlight. <br />
<br />
Meshes, rooms, control stations, windows, and items should be grouped with the room void they occupy so they will be lit appropriately. Doors can only be in one group; both sides of the door will be lit according to the chosen group. <br />
<br />
Translucent windows can be grouped together to cause them to be lit synchronously. This gives them the appearance of belonging to the same room, even if no room exists. <br />
<br />
Parts with no group name or the reserved name ''Hull'' will have atmosphere and lighting determined by the external environment. <br />
<br />
===Review===<br />
Review properties and design analysis. '''Required.'''<br />
<br />
Use the properties window to configure all settings and to adjust how much of the hull volume is allocated to each subsystem.<br />
<br />
===Finalize===<br />
Finalize the blueprint. '''Required.'''<br />
<br />
Finalize a blueprint to analyze it for errors and inconsistencies. Errors must be fixed before the blueprint can be used in the game. Warnings should be reviewed; changes may be needed but warnings do not prevent use of a blueprint. <br />
<br />
Finalize grabs a screen image to accompany the blueprint in the library. You can provide this image yourself. Use Preview mode to get a screen grab of your design the way it will look in the game. <br />
<br />
The finalize process is slow. It may produce a large number of errors and warnings that need to be fixed or analyzed. ''Previous Finalize Result'' shows the result of the last finalize attempt.<br />
<br />
===Preview===<br />
Preview the design. '''Required.'''<br />
<br />
Place the building on terrain. See if the terrain is modified by the site meshes the way you expect. <br />
<br />
<br />
[[Category:Designer]]<br />
[[Category:Spacecraft]]<br />
[[Category:Buildings]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Designer&diff=10286Designer2024-02-24T20:05:27Z<p>Haxus: /* Building Design */</p>
<hr />
<div>The ''Designer'' is a modeling tool used to design spacecraft and building blueprints. <br />
<br />
The [[Designer Menu]] page describes each individual menu item.<br />
<br />
The [[Design Parts]] page describes each individual kind of part.<br />
<br />
=Architect=<br />
The person who creates a design is the architect of the design.<br />
The person who creates each part is the architect of that part.<br />
Parts retain their architect information with them.<br />
<br />
When multiple architects work on the same design, the architect who initiates the designer instance is the architect of the design.<br />
<br />
The analysis report for a design lists all architects whose parts are included in a design.<br />
<br />
=Blueprints=<br />
A blueprint is a design that has been analyzed and accepted for use in the game. Blueprints contain all of the information needed to make a functional building or spacecraft, such as its 3D model and design specifications. Blueprints are stored in a ''universal library'' where they are accessed by spacecraft and buildings during game play. Blueprints are identified by a unique number, assigned when stored in the library.<br />
<br />
Blueprints can be saved onto media items in an avatar's gear. Blank paper and blank disks can each hold only one blueprint. Storage devices can hold varying numbers of blueprints, depending on the device. <br />
<br />
Spacecraft, buildings, and storage devices reference their blueprints in the library throughout their lifetimes. Blueprints that are in use by game objects cannot be deleted. When a player deletes a blueprint, it may instead be deactivated in the library, until it is no longer referenced and it can be finally removed.<br />
<br />
In the designer and in this wiki, the word blueprint is used generally to refer to any design, whether or not it has been finalized.<br />
<br />
==In-Game Blueprint Exchange==<br />
The blueprint exchange provides a place for players to share blueprints with other players in the online game. Separate exchanges for spacecraft blueprints and building blueprints are accessed in the game. <br />
<br />
At the exchanges, blueprints can be published by architects and they can be purchased by players. Prices are in cronodollars ¢, the money of the game. Cronos are not related to real money. '''Spacecraft and building blueprints do not cost real money.''' <br />
<br />
Publishing is a way to share blueprints with other players. Publishing terms control the price and who is permitted to use the blueprint. <br />
<br />
'''A blueprint does not have to be published to be used in the game.''' A blueprint can be saved onto a storage device in your gear, then used to make buildings or spacecraft. Interfaces that request a blueprint know how to find them in your gear.<br />
<br />
==Web Blueprint Exchange==<br />
The web site offers access to a public blueprint exchange. This exchange is not connected with the in-game exchange in any way.<br />
<br />
The web blueprint exchange offers a place for players to publicly share their .SoH files. There are no publishing terms or restrictions. Blueprints posted to the web exchange are freely available for download by anyone on the Internet.<br />
<br />
===Prepare .SoH for Publishing===<br />
Two things should be done to prepare a .SoH file for publishing to the web blueprint exchange. <br />
<br />
Obstructions should be refreshed. Obstruction data provides volume information necessary to create the design analysis report. The report is presented on a web page in the exchange.<br />
<br />
A nice scene should be present in the view window. A screen grab of the scene is stored with the file. The screen grab is shown on the report. The screen grab is also shown on the button that accesses the report page.<br />
<br />
=Designer Access=<br />
The designer can be accessed both online and when playing offline solo.<br />
<br />
==Online Designer==<br />
Online, a designer is accessed by going to a [[Design_Studio|design studio]] building or by occupying a [[Design_Parts#Station.2C_Designer|designer station]] while aboard a spacecraft.<br />
<br />
To enter a designer at a design studio, display the ''Building'' (<code>F10</code>) window and click on the "Enter" button of a studio. When a studio is "Vacant", you may leave the password box blank or you may enter a password of your choice. The password you enter establishes that studio's password until the studio becomes vacant. To join an "Occupied" design studio, you must enter the password that was established by the first person to enter the studio.<br />
<br />
To enter a designer aboard a spacecraft, move to a designer station and enter the station by pressing the <code>E</code> key. Designers aboard a spacecraft are not password protected. Each designer station creates its own designer instance. People who enter the same designer station are placed in the same designer instance. The avatar enters the designer instance and their body does not remain at the station in the ship, like it does with other stations.<br />
<br />
Players may work together in the same studio to develop a design. In this case, the first player to enter the vacant studio is registered as the architect and owner of the design.<br />
<br />
==Offline Designer==<br />
When the game is launched, the designer can be entered ''solo'', instead of logging in to the game. Overall program performance is better when designing solo because no server is involved. Once a design is completed solo, it can be saved to a .SoH file. That file can be loaded into the on line designer, for storage in the universal library.<br />
<br />
=Design Process=<br />
General steps to making a design go something like this.<br />
* Adjust design properties to establish goals.<br />
* Create an exterior hull.<br />
* Create one or more rooms inside the hull.<br />
* Cut out doors and windows.<br />
* Create finer model details.<br />
* Apply textures and other effects to finish the surfaces.<br />
* Add details: control stations, berths, lights, display screens, etc.<br />
* Add room voids, paths and barriers.<br />
* Make doors operational.<br />
* Finalize the design.<br />
<br />
Designing typically involves creating many [[Design_Parts|''parts'']].<br />
Parts include things like hulls, rooms, jigs, lights, display screens, etc.<br />
<br />
Check design properties from time to time. It shows an assessment of the design, based on what you are trying to design.<br />
<br />
==Design Goal==<br />
Your goal as an architect is to make beautiful looking designs that are functional in the universe of Hazeron.<br />
Emphasis is placed on appearance over technical realism.<br />
<br />
Hull sections do not have to be sculpted to form airtight continuous shells where they join each other.<br />
This is inefficient and difficult to model.<br />
It is much better to butt an engine pylon into the side of the hull, rather than carving a hole so it can make a perfect junction.<br />
Carving that hole breaks the side face into many tiny faces.<br />
It is likely unnecessary, unless people are going to walk or see through the opening.<br />
<br />
A design does not require the interior to conform to the exterior.<br />
Your design may represent a large intricate spacecraft that appears to have many rooms.<br />
It is inefficient and unnecessary to create all of the interior rooms and detail that would exist in real life.<br />
Like a movie set, only a few key areas inside the hull need to be modeled.<br />
This enables the designer to efficiently achieve the look and feel desired, without laborious excess work.<br />
<br />
Interior details have no effect on the mass calculation of the design.<br />
Rich interior designs are encouraged.<br />
There is no performance advantage to making stark minimal interiors.<br />
<br />
Be efficient with your designs.<br />
There is no point in modeling details that can never be seen.<br />
A good example is a cargo hold full of cargo.<br />
An inefficient approach would be to build a huge room and fill it with shipping containers.<br />
Instead of being too literal, think of it like a movie set.<br />
It would be much more efficient to build only an accessible area representative of a cargo hold, with walls modeled and textured to look like stacks of shipping containers.<br />
Use those precious faces where they get the most impact; don't waste them.<br />
<br />
Remove faces that can never be seen. Many parts that contribute to the construction materials requirement of a design are affected by the total surface area of their faces. The amount of materials directly affects the construction time. Reducing faces will reduce the construction time and materials of a design.<br />
<br />
More parts are better than less.<br />
Parts help to manage large 3D models.<br />
Rendering information is collected and consolidated efficiently when the OpenGL model is constructed.<br />
It makes no difference in the final rendering if the information comes from one part or many.<br />
<br />
[[Design_Parts#Turbo_Lift|Turbo lifts]] help to make big designs feel elaborate and detailed on the inside, without extensive modeling effort. They are an effective scene change device in science fiction cinema and they are equally effective in the game, to give the feeling of being aboard a really big ship. They also save a lot of walking.<br />
<br />
==Part Mode vs Face Mode==<br />
Parts are composed of ''faces''.<br />
Faces have vertices and edges.<br />
To edit the faces of one or more selected parts, ''face mode'' is enabled.<br />
In a typical design session, face mode is enabled and disabled often, whenever the need arises to modify the faces that make up a part.<br />
<br />
Actions on the ''Parts'' menu operate on whole parts.<br />
Most actions on the Parts menu are disabled when face mode is enabled.<br />
Some part menu actions are only enabled when one or more parts are selected.<br />
<br />
Actions on the ''Face'' menu operate on faces of selected parts.<br />
Most actions on the Face menu are enabled when face mode is enabled.<br />
Textures are applied in face mode.<br />
<br />
==Geometry==<br />
Parts are represented by geometry that can be painted in an OpenGL scene.<br />
Geometry of parts is described by their vertices, edges and faces.<br />
<br />
===Vertices===<br />
Vertices contain 3D Cartesian coordinate locations that describe the position of edges and faces.<br />
Vertices also contain information needed when rendering.<br />
Texture coordinates are stored at vertices.<br />
Glow is emitted at vertices.<br />
<br />
Render information is interpolated between vertices.<br />
Thus, the glow of a vertex will fade off to a neighboring vertex that does not glow.<br />
<br />
Vertices also contain an up direction, for lighting calculations.<br />
The face menu commands ''Flatten Vertices'' and ''Smooth Vertices'' operate on vertex up directions.<br />
<br />
===Edges===<br />
Edges are the visible lines that go from one vertex to another to reveal the boundaries of faces.<br />
Edges exist for the benefit of the designer, to see the model.<br />
Their presence or absence has no effect on the final rendering result.<br />
<br />
===Faces===<br />
Faces are flat surfaces that compose a 3D model.<br />
OpenGL paints faces in front of each other depending upon their Z-depth in the scene.<br />
This is the essence of how 3D scenes are painted by a computer.<br />
<br />
Faces have a front and a back.<br />
Faces are not visible from the back in the final rendering result.<br />
They can be seen from the back in the designer, if back face visibility is enabled.<br />
The object menu command ''Reverse Faces'' flips their facing back and forth.<br />
<br />
''Facing direction'' is determined by the direction the boundary is drawn. <br />
The boundary is clockwise when viewing the front of a face.<br />
The boundary is counterclockwise when viewing the back of a face.<br />
<br />
All faces are created equal.<br />
A face copied from one part and pasted into another becomes a face of the destination part.<br />
It is irrelevant if it came from a hull and gets added to a room.<br />
The part is the hull or room; the face is just a face.<br />
<br />
Faces do not "know" how they were created. A face created as part of an extrusion is no different from a face that is created individually. The extrusion command merely assembles faces into a desired shape.<br />
<br />
Faces should not be bent. They expect to represent a flat plane. A face should be drawn as multiple faces if a curved surface will be represented.<br />
<br />
Three foundational shapes exist.<br />
<br />
*Triangle - A face defined using a boundary of three vertices.<br />
*Quad - A face defined using a boundary of four vertices.<br />
*Face - A face defined using a boundary with three or more vertices.<br />
<br />
==Shapes==<br />
Shapes use parameter-driven methods to generate faces. Primitive shapes can provide a general starting point for more detailed modeling.<br />
<br />
The resulting shape may be modified like any other set of faces. The faces are in no way different than if an architect painstakingly built the same shape using faces. It is typical to generate a quick shape then rip it apart, to use some portion of it, or embellish it to mold it into what you want.<br />
<br />
===Extrusion===<br />
[[file:ScFigExtrusion.png|right|Extrusion]]<br />
An extrusion is formed by projecting a shape along a straight path. Examples include: rooms, beams. <br />
<br />
The creation of an extrusion begins by entering the shape that will be extruded. After the shape is entered, a window presents options to finalize the extrusion. Straight extrusion is made by simply entering the length. <br />
<br />
Faces are formed at the sides of the extrusion. Stepping allows the sides to be divided along the length of the extrusion.<br />
<br />
When the extrusion is generated, the shape follows a straight line. Both ends of the extrusion are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the extrusion shape.<br />
* Subsequent points are entered to describe the extrusion shape.<br />
* A window offers extrusion options.<br />
* Depending on extrusion options, a point may be entered to indicate the height or direction of the extrusion. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Sphere Lon/Lat===<br />
[[file:ScFigSphereLonLat.png|right|Longitude/Latitude Sphere]]<br />
A longitude/latitude sphere is divided into equal divisions of latitude and longitude. The faces are largest at the equator. The faces converge together at the poles. <br />
<br />
Creation of a longitude/latitude sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of latitude divisions and number of longitude divisions. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Sphere Uniform===<br />
[[file:ScFigSphereUniform.png|right|Uniform Sphere]]<br />
A uniform sphere is divided uniformly into triangle faces. All triangles are close to the same size. <br />
<br />
Creation of a uniform sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of divisions at the equator. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Spindle===<br />
[[file:ScFigSpindle.png|right|Spindle]]<br />
A spindle is created by spinning a shape around an axis. Objects with axial symmetry are created as spindles. Examples include: flying saucer, spool, furniture leg, column, dome, sphere, dinner plate, door knob, dish antenna. <br />
<br />
The creation of a spindle begins by entering the shape that will be spun around an axis. After the shape is entered, a window presents options to finalize the spindle. Options include the number of steps around the axis and the choice of axes. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the spindle shape.<br />
* Subsequent points are entered to describe the spindle shape.<br />
* A window offers spindle options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Tubing===<br />
[[file:ScFigTubing.png|right|Tubing]]<br />
Tubing is very similar to an extrusion except that the path may be complex, instead of simply extruding along a straight line. When the tubing shape is extruded along the path, corners are mitered appropriately.<br />
<br />
Tubing is not just for making water pipes. Tubing is used to make any closed shape that is extruded along a complex path. Examples include: piping, ducts, crown molding, baseboard trim, railroad tracks, hand rails, soffits, wall conforming consoles, base and wall cabinets, and counter tops. <br />
<br />
Creation of tubing begins by entering the path along which the tubing will travel. After the path is entered, a window presents options to finalize the tubing. <br />
<br />
Circular tubing is made by simply entering the diameter and number of sides for the tube. <br />
<br />
Other tubing shapes are created by drawing the cross section shape of the tubing. <br />
<br />
After drawing the shape of the tubing cross section, a guide point is entered on the shape. <br />
<br />
When the tubing is generated, the shape follows the path along the guide. Both ends of the tubing are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the tubing path.<br />
* Subsequent points are entered to describe the tubing path.<br />
* A window offers tubing options.<br />
* Depending on tubing options, a point may be entered to begin the tubing shape.<br />
* Subsequent points are entered to describe the tubing shape.<br />
* Guide point for the tubing shape is entered.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> displays options for completing the tube.<br />
<br />
==Jigs==<br />
<br />
Jigs are found underneath the Part menu button. There are many different types of Jigs, such as Door Jigs, Window Jigs, Launch Tube Jigs, Cutting Jigs, and Decal Jigs. They are created like any other hull or room objects, by selecting the Shape type (Extrusion, Sphere, Tubing, Spindle) and drawing the shape wanted. A physical object is then created and added to the Parts list as a Jig of the type selected. <br />
<br />
Jigs are used by positioning the created Jig object between two rooms, or between a hull and room, ensuring that the Jig penetrates both walls. Once this is positioned correctly, select all 3 objects at once using the Parts panel, and then select "Jig Cut" under the Design Menu button. The jig then cuts the walls in the shape of the jig, allowing you to create tube hallways as an example. The cut walls are then converted to the object type of the jig, such as the walls being converted into transparent glass if using a Window Jig, or door objects if using a Door Jig. <br />
<br />
Jigs can be used in order to create different types of objects, exits or walls between two rooms or the interior and exterior of a design. For example, the Door Jig creates a door between whatever rooms the Jig is placed between. The Window Jig creates a Window between the rooms, while the Launch Tube and Cutting jigs just create holes between the hull and room and cut the faces of each side, respectively. <br />
<br />
All jigs create faces between the two walls that they penetrate, in order to give walls thickness and prevent you from seeing any back-faces.<br />
<br />
==Origin==<br />
<br />
At the center of the design space is a yellow marker, drawn as three intersecting yellow lines.<br />
It does not move when the design grid moves.<br />
The immovable yellow marker is the true origin (0,0,0) location of the design space.<br />
That is the point at which a spacecraft will pivot, when it maneuvers. The origin is the insertion point when placing a building, that determines the altitude of the building on the terrain.<br />
<br />
==Obstructions, Voids, and Barriers==<br />
The obstruction model describes what areas of the design are solid and what areas of the design are not. It is used to determine where a person is standing on the floor and where they are allowed to stand, where vehicles collide with the design and where they go inside, where missiles and gunfire hit or pass through. The obstruction model describes the solid shape of the design and its accessible inside areas.<br />
<br />
The obstruction model cannot be seen. <br />
It exists somewhat like an electrical field around the design.<br />
The presence of the obstruction model can be felt by moving around the design. <br />
The menu toggle ''Blueprint, Solids Obstruct Movement'' must be checked to bump against the obstruction model.<br />
<br />
The obstruction model is created by analyzing the geometry of the design. <br />
A lot of processing effort is required to maintain the model so it is not done automatically with every modification to the design.<br />
The obstruction model is updated using the ''Blueprint, Refresh Obstructions'' menu option.<br />
<br />
The obstruction model is created from hull and landing gear parts, voids, and barriers.<br />
Each state of landing gear is represented so its obstruction shape changes when the gear is extended.<br />
<br />
The obstruction model envelopes each part individually.<br />
To get the best fitting obstruction model, it is beneficial to split elaborate hull parts into<br />
multiple simpler hull parts.<br />
<br />
The obstruction model includes a margin around hull and landing gear parts.<br />
This helps to prevent the eye camera of players from getting close enough to see inside, which breaks the illusion of solidity.<br />
It can also prevent someone from moving close enough to operate a door.<br />
<br />
''Voids'' are used to carve out the spaces accessible to players, from the solid shape created by the hull. Room parts do not contribute to the obstruction model. It is the voids that really determine where people can go inside.<br />
<br />
''Barriers'' are used to create obstructions inside voids. Sometimes it is easier to add a barrier than to change the shape of the room void. Barriers can also be used to create the floor under stairs and ramps.<br />
<br />
==Part Association==<br />
''Association'' is when a part references another part by its id number.<br />
<br />
Certain parts can be associated with certain other parts.<br />
Association is a loose connection between parts.<br />
The meaning of this association depends upon the parts involved.<br />
<br />
A part can be associated with only one other part.<br />
Any number of parts can be associated with the same part.<br />
<br />
Associations are created using the [[Designer_Menu#Associate_Parts|Part, Associate Parts]] command. Associations are removed using the [[Designer_Menu#Dissociate_Parts|Part, Dissociate Parts]].<br />
<br />
Part associations are used by the following parts.<br />
<br />
===Barriers===<br />
[[Design_Parts#Barrier|Barriers]] can be associated with a '''state of a door or landing gear'''.<br />
This determines which barriers are obstructions when the door or landing gear is operated.<br />
<br />
It is ok to associate more than one barrier with a state of a door or landing gear.<br />
<br />
===Berth Name Decals===<br />
[[Design_Parts#Decal.2C_Berth_Name|Berth name decals]] are associated with a '''berth'''.<br />
This determines which name to display on the decal.<br />
''Unassigned'' is displayed when the berth is not assigned.<br />
<br />
It is ok to associate more than one berth name decal to the same berth.<br />
<br />
===FTL Drive Service Panels===<br />
[[Design_Parts#Panel.2C_FTL_Drive|FTL drive service panel]] is associated with an '''engineer station'''.<br />
This determines which FTL drive the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
===Hull Voids===<br />
[[Design_Parts#Void.2C_Hull|Hull voids]] are associated with the '''open state of a door''', when making operable hull doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Association of a hull void and a room void to a door causes it to become a hull door. This enables the interior room void and the exterior hull void to become accessible at once, presumably overlapping each other so a person can move from one void to the other.<br />
<br />
Hull voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Room Life Support Status Panels===<br />
[[Design_Parts#Status.2C_Life_Support|Room life support status panel]] is associated with a '''room void'''.<br />
This determines which room's air pressure reading appears on the panel.<br />
<br />
It is ok to associate more than one life support status panel with a single room.<br />
<br />
===Room Voids===<br />
[[Design_Parts#Void.2C_Room|Room voids]] are associated with the '''open state of a door''', when making operable doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Room voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Walk Paths and Ladder Paths===<br />
[[Design_Parts#Path.2C_Walk|Walk paths]] and [[Design_Parts#Path.2C_Ladder|ladder paths]] are associated with the '''open state of a door''', when making operable doors.<br />
This guides NPCs to find their way through the door when it is open.<br />
<br />
Paths may be associated with any state of a door or landing gear to make access to the void dependent upon those states.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Weapon Service Panels===<br />
[[Design_Parts#Panel.2C_Weapon|Weapon service panel]] is associated with a '''fire control station'''.<br />
This determines which weapon the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
==Walk Paths==<br />
In order for [[NPC]]s to successfully move around the interior of a design with multiple rooms. <br />
<br />
The walk paths need to be above the floor, hip height is usually good. Each end of a walk path is referred to as a ''node'', NPCs will need to always have a clear line to the nearest walk path node in whatever room they are in, or else they will get stuck. Walk paths need to form a full network where each walk path has to start where another ends, so that an NPC that is standing in one room can go to their nearest walk path node and then path through the network to their destination room.<br />
<br />
[[File:WalkPathExample.png|thumb|none|Example of walk paths seen from above. Grey is room voids, blue is door room voids, red is walk path node, and green are the walk paths.]]<br />
<br />
NPC pathing strategy is fairly primitive. When they want to go somewhere, they look for the closest path end point to them that they can move straight to without obstructions. Similar logic is used to find the path node closest to the destination. There must be a complete end-to-end chain of path segments from beginning to end, from there on.<br />
<br />
===Common Mistakes===<br />
Common mistake 1. NPCs will always start by going to the nearest node in their room when they need to path to another room. If the NPC cannot find a path to its destination from its nearest walk path node it will be unable to go anywhere. A walk path is needed to connect the doors across the room from each other, so the NPC can find the closest node at the nearby door, then follow the path to the room containing the destination, then walk across the room straight to destination's room.<br />
<br />
[[File:WalkPathFail.png|thumb|none|Common mistake 1. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
Common mistake 2. NPCs will need a clear line to the nearest node in their room, or they will be unable to leave it. If there are walls or solid furniture inside the room that will prevent a NPC from having a clear line to the nearest walk path node, add a closer walk path node they can use to path to the room's exit.<br />
<br />
[[File:WalkPathFail2.png|thumb|none|Common mistake 2. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
==Finalize==<br />
When a design is complete, it undergoes a finalizing process to insure that it is usable for its intended purpose. The result of the finalize process is presented to the architect in a list. The list may contain green notes, amber warnings and red errors.<br />
<br />
* Green notes are merely informative, providing information about the finalize process.<br />
* Amber warnings bring attention to things that may indicate a design error or oversight was made. Warnings do not prevent a design from being finalized.<br />
* Red errors highlight aspects of the design that must be changed before it can be finalized.<br />
<br />
In the on line designer, a design that finalizes with no errors can be saved into the universal library. Once saved to the library, a unique blueprint number is assigned and reported back to the architect. Then the design can be built in the game and it can be published in the appropriate exchange.<br />
<br />
In the solo designer, a design that finalizes with no errors reports that it could be saved to the library if it was finalized on line.<br />
<br />
=Designer Interface=<br />
The designer interface is dominated by a first person 3D view of the design space. It is in this space that the design will appear as it is created. The mouse pointer is used in this view to select things. The mouse is also used to drag the selected things from one place to another, to move or copy them.<br />
<br />
Hover the mouse pointer over most buttons and controls to see a tool tip. Tool tips on buttons explain their function and they sometimes reveal features that are not obvious at first. The tool tips on some buttons change, depending on current conditions. <br />
<br />
==Grid==<br />
The grid is a tool for drawing, initially visible in the view as a faint grid of lines at floor level. <br />
<br />
The grid is more like a ruler, a measuring tool, than the lines on a piece of graph paper, a static medium. The architect will move and rotate the grid many times during a typical design session, as needed, wherever it helps to draw. <br />
<br />
When more than one person is in the designer, each person sees and interacts with their own grid.<br />
<br />
===Coordinate Systems===<br />
[[file:NumberLine.png|right|Number Line]]<br />
An understanding of coordinate systems is helpful to use the grid effectively. <br />
<br />
Real numbers extend to infinity, both positive and negative. This can be represented visually as a ''number line''. Whole numbers are placed at regular intervals along the line. Fractional numbers fall proportionally between the whole numbers. i.e. 1.5 is 50% of the way between 1 and 2.<br />
<br />
A number can be expressed in units of length, such as meters, in either the positive or negative direction, along the number line. The number is its ordinal value or ''ordinate''. <br />
<br />
That defines a one-dimensional vector. The absolute value of the number is its length. The sign of the number indicates the direction, either positive or negative.<br />
[[file:CoordinateSystem.png|left|Cartesian Coordinate System]]<br />
A ''Cartesian coordinate system'' is created when two number lines are placed perpendicular to each other, so they cross at 0. In a Cartesian coordinate system, each number line is called an ''axis''. They are named X and Y.<br />
<br />
A plane is formed by the intersection of the two axes, called the ''XY plane''. At any location in the plane, the X ordinate and the Y ordinate can be determined by dropping the point perpendicular to the respective axes. Knowing that, we can plot any location in the plane if we know the X ordinate and the Y ordinate at the location.<br />
<br />
The combination of ordinates is called ''coordinates''. Coordinates are expressed using notation like this (X, Y). In the picture, the coordinates of the starship are (-4, -2). The coordinates of the asteroid are (2.5, 3). Coordinates (0,0) are called the ''origin'', because that is where the numbers originate, or begin, for all axes.<br />
<br />
This is a 2 dimensional (2D) coordinate system because it expresses locations as dimensions measured along two axes.<br />
[[file:3DCoordinateSystem.png|right|3D Coordinate System]]<br />
A third axis can be added perpendicular to each of the other two axes. It is named Z. <br />
<br />
Using the coordinates of three axes, any location in space can be described. This is a 3 dimensional (3D) coordinate system because it expresses locations as dimensions measured along three axes. 3D coordinates are expressed like this (X, Y, Z).<br />
<br />
====Right Hand Rule====<br />
Which way does the Z axis go? There are two possible orientations. <br />
<br />
Hazeron uses the right-hand rule for making that determination. It can be visualized by looking at the right hand held out flat. The thumb points in the direction of the positive X axis. The index finger points in the direction of the positive Y axis. Curl the remaining fingers upward, perpendicular to the palm. The middle finger points in the direction of the positive Z axis.<br />
<br />
Mathematically, that means the Z axis is equal to the cross product of the X axis against the Y axis.<br />
<br />
<code>Z = X cross Y</code><br />
<br />
Rotations around axes are also determined using the right hand rule. The positive direction of angular rotation around each axis can be determined by grasping the axis with the right hand, with the thumb pointing in the positive direction. The fingers curl around the axis in the positive angle direction.<br />
<br />
====Absolute Coordinate System====<br />
The ''absolute coordinate system'' underlies all geometry in the designer.<br />
<br />
The absolute coordinate system is indicated by an immovable yellow marker. It is visible in the view as three short intersecting XYZ axis lines.<br />
<br />
That is where the grid starts in a new drawing. To put the grid back to that position, use the [[Designer_Menu#Position_Grid|Position Grid]] command, then choose the '''S=Reset''' option.<br />
<br />
Mathematically, the grid shows the position of a 4x4 transformation matrix. The absolute coordinate system is defined as the identity matrix.<br />
<br />
<code>1 0 0 0</code><br><br />
<code>0 1 0 0</code><br><br />
<code>0 0 1 0</code><br><br />
<code>0 0 0 1</code><br />
<br />
*Origin is at (0,0,0).<br />
*X axis vector is (1,0,0).<br />
*Y axis vector is (0,1,0).<br />
*Z axis vector is (0,0,1).<br />
<br />
===Visible Grid===<br />
The visible grid represents a 3D coordinate system. Axis lines are bright in the positive direction and dim in the negative direction. The position of X is shown as a red line. The position of Y is shown as a green line. The position of Z is shown as a blue line.<br />
<br />
X and Y lines are marked at the ends with the axis name and direction.<br />
<br />
The XY plane contains lines parallel to the X and Y axes, forming a visible grid. Regular interval spacing between the grid lines is controlled by a combo box control on the reference tool bar. <br />
<br />
Grid colors are controlled on the Designer page of the Settings window.<br />
<br />
[[Designer_Menu#Show_Grid|Grid visibility]] can be turned off. <br />
<br />
Grid rounding can be turned on or off, independently of the grid visibility state.<br />
<br />
===Grid as a Tool===<br />
All drawing takes place in the 3D coordinate system of the grid. Position the grid to draw anywhere in the drawing, using coordinates relative to the subject matter. This is typically done frequently while creating a design, using commands accessed on the [[Designer#Reference_Tool_Bar|reference tool bar]] and the [[Designer_Menu#Helpers|helpers menu]].<br />
<br />
[[Designer#Coordinate_Input|Coordinates entered into the input tool bar]] are relative to the grid. <br />
<br />
Freehand drawing happens in the plane of the grid. In the view, the location of the mouse pointer is projected straight into the screen until it intersects the XY plane of the grid, regardless of the visibility state of the grid. If ''Snap to Grid'' is enabled, that location will be rounded to the nearest grid line intersection. Various snapping switches can be enabled. Grid rounding behavior is overridden when the mouse pointer snaps to existing geometry.<br />
<br />
Most drawing commands terminate/replace the current drawing command; grid positioning commands suspend the current drawing command instead. Whenever a drawing command is requesting point input, a grid positioning command can be invoked. Upon termination of the grid positioning command, the suspended drawing command will resume its request for point input.<br />
<br />
When selected geometry is copied to the clipboard, the geometry on the clipboard is in the coordinate space of the grid, at the time of the copy.<br />
<br />
When geometry is pasted from the clipboard, it is placed in the coordinate space of the grid, at its location at the time of the paste.<br />
<br />
For example, move the grid to the center of a selected part. Copy that part to the clipboard. Move the grid. Paste the clipboard; it will be added at the new location of the grid. Use [[Designer_Menu#Paste_At|Paste At]] to place more than one of them.<br />
<br />
==Menu Bar==<br />
[[file:DesignerMenu.png|right|Menu Bar]]<br />
At the top of the designer interface is a menu bar. Most functions of the program can be accessed using the menu bar.<br />
<br />
See [[Designer_Menu|designer menu]] for a list of the items on the menu bar.<br />
<br />
==Input Tool Bar==<br />
[[file:DesignerInputBar.png|right|Input Tool Bar]]<br />
The ''Input Tool Bar'' appears below the menu bar, at the left. It can be moved by dragging the dotted grip at the left end. Tool tips on the buttons explain their function.<br />
<br />
===Design Properties===<br />
Equivalent to the [[Designer_Menu#Properties|Blueprint, Properties]] menu item.<br />
<br />
===Refresh Obstructions===<br />
Equivalent to the [[Designer_Menu#Refresh_Obstructions|Blueprint, Refresh Obstructions]] menu item.<br />
<br />
===Solids Obstruct Movement===<br />
Equivalent to the [[Designer_Menu#Solids_Obstruct_Movement|Blueprint, Solids Obstruct Movment]] menu item.<br />
<br />
===Gravity===<br />
Equivalent to the [[Designer_Menu#Gravity_On.2FOff|Blueprint, Gravity On/Off]] menu item.<br />
<br />
===Preview===<br />
Equivalent to the [[Designer_Menu#Preview_On.2FOff|Blueprint, Preview On/Off]] menu item.<br />
<br />
===Preview Sun Position===<br />
Equivalent to the [[Designer_Menu#Preview_Settings|Blueprint, Preview Settings]] menu item.<br />
<br />
===Construct Building===<br />
Equivalent to the [[Designer_Menu#Preview_Place_Building|Blueprint, Preview Place Building]] menu item.<br />
<br />
===Preview People===<br />
Equivalent to the [[Designer_Menu#Preview_People|Blueprint, Preview People]] menu item.<br />
<br />
===Coordinate Input===<br />
Many design commands will ask the architect to enter a 3D point location. A location can then be entered by clicking with the mouse pointer in the view window. Alternatively, locations can be entered into the coordinate input box, at the end of the [[Designer#Input_Tool_Bar|Input Tool Bar]].<br />
<br />
3D coordinates are entered as '''X,Y,Z''' values, which are positive or negative offsets along the '''X''', '''Y''' and '''Z''' axes. <br />
Coordinates are not bracketed with parentheses.<br />
Omitted values are 0. e.g. <i>1,,2</i> is the same as <i>1,0,2</i>; <i>p2</i> is the same as <i>p2,0,0</i>; <i>a,3</i> is the same as <i>a0,3,0</i>.<br />
<br />
Polar coordinates are entered as '''pD,A,I''' values: '''D''' is distance from the origin; '''A''' is angle around the Z axis, positive counterclockwise and negative clockwise; '''I''' is the angle of inclination off the XY plane, positive above and negative below.<br />
<br />
Coordinates are relative to the location and orientation of the [[Designer#Grid|grid]] unless specified otherwise.<br />
<br />
Coordinates prefixed with '''a''' are ''absolute''. Absolute coordinates are relative to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]] of the design, ignoring the grid. e.g. ''a1.25,2.3,-4.5'' or ''ap2.5,-30,10''.<br />
<br />
Distances are interpreted in units depending upon the ''unit of measure'' setting. Whole numbers are interpreted as whole units of measure. For example, if the unit of measure is meters, which is the default, then 10 means 10 meters. Unit of measure is configured on the Designer page of the Settings window. Unit of measure can be changed at any time while drawing.<br />
<br />
====Rotating====<br />
Some design commands will ask the architect to enter a rotation value. e.g. rotate selected objects.<br />
<br />
Angles are entered in degrees.<br />
<br />
When responding to a request for rotation, input into the Coordinate Input box is interpreted as 3D rotation angles around the X, Y and Z axes. e.g. To rotate 45 degrees around the Z axis, enter 0,0,45, or simply ,,45.<br />
<br />
Positive and negative direction of rotation is determined by the [[Designer#Right_Hand_Rule|right hand rule]].<br />
<br />
====Scaling====<br />
Some design commands will ask the architect to enter a scale value. e.g. stretch selected objects.<br />
<br />
When responding to a request for scaling, input into the Coordinate Input box is interpreted as 3D stretch factors along the X, Y and Z axes. e.g. To double the overall size, enter 2,2,2; to reduce the X dimension by half, enter .5,1,1.<br />
<br />
====Move/Copy====<br />
When no design command is active, the coordinate input box can be used to move or copy the objects that are selected.<br />
* '''Move parts''' by entering a coordinate. The objects that are selected will be moved using the vector entered.<br />
* '''Copy parts''' by entering a coordinate while holding the <code>Ctrl</code> key. The objects that are selected will be copied and moved using the vector entered.<br />
<br />
==Reference Tool Bar==<br />
[[file:DesignerReferenceBar.png|right|Reference Tool Bar]]<br />
The ''Reference Tool Bar'' appears below the menu bar, to the right of the input tool bar. It can be moved by dragging the dotted grip at the left end.<br />
<br />
===Face Mode===<br />
Equivalent to the [[Designer_Menu#Face_Mode|Face, Face Mode]] menu item.<br />
<br />
===Isolate Parts===<br />
Equivalent to the [[Designer_Menu#Isolate_Parts|Face, Isolate Parts]] menu item.<br />
<br />
===Find Vertices===<br />
Equivalent to the [[Designer_Menu#Find_Vertices|Helpers, Find Vertices]] menu item.<br />
<br />
===Find Edges===<br />
Equivalent to the [[Designer_Menu#Find_Edges|Helpers, Find Edges]] menu item.<br />
<br />
===Find Faces===<br />
Equivalent to the [[Designer_Menu#Find_Faces|Helpers, Find Faces]] menu item.<br />
<br />
===Show Edges===<br />
Equivalent to the [[Designer_Menu#Show_Edges|View, Show Edges]] menu item.<br />
<br />
===Show Faces===<br />
Equivalent to the [[Designer_Menu#Show_Faces|View, Show Faces]] menu item.<br />
<br />
===Show Back Faces===<br />
Equivalent to the [[Designer_Menu#Show_Back_Faces|View, Show Back Faces]] menu item.<br />
<br />
===Move Grid===<br />
Equivalent to the [[Designer_Menu#Move_Grid|Helpers, Move Grid]] menu item.<br />
<br />
===XY Grid===<br />
Equivalent to the [[Designer_Menu#XY_Grid|Helpers, XY Grid]] menu item.<br />
<br />
===XZ Grid===<br />
Equivalent to the [[Designer_Menu#XZ_Grid|Helpers, XZ Grid]] menu item.<br />
<br />
===YZ Grid===<br />
Equivalent to the [[Designer_Menu#YZ_Grid|Helpers, YZ Grid]] menu item.<br />
<br />
===Position Grid===<br />
Equivalent to the [[Designer_Menu#Position_Grid|Helpers, Position Grid]] menu item.<br />
<br />
===Grid Spacing===<br />
Changes the spacing between lines in the grid.<br />
<br />
===Show Grid===<br />
Equivalent to the [[Designer_Menu#Show_Grid|Helpers, Show Grid]] menu item.<br />
<br />
===Grid Follows Work===<br />
Equivalent to the [[Designer_Menu#Grid_Follows_Work|Helpers, Grid Follows Work]] menu item.<br />
<br />
===Snap to Grid===<br />
Equivalent to the [[Designer_Menu#Snap_to_Grid|Helpers, Snap to Grid]] menu item.<br />
<br />
===Snap to Edges===<br />
Equivalent to the [[Designer_Menu#Snap_to_Edges|Helpers, Snap to Edges]] menu item.<br />
<br />
===Snap to Vertices===<br />
Equivalent to the [[Designer_Menu#Snap_to_Vertices|Helpers, Snap to Vertices]] menu item.<br />
<br />
===Coordinate Feedback===<br />
Shows coordinates relevant to the current drawing operation.<br />
<br />
When responding to coordinate input, the coordinate at the mouse pointer position is shown, relative to the grid. That coordinate is usually the location where the mouse pointer hits the grid, though it may change if the pointer snaps to an existing object.<br />
<br />
When dragging objects using the mouse pointer, the offset of the drag is shown. Dragging usually occurs in the grid plane, though it may change if the pointer snaps to an existing object.<br />
<br />
==Parts Window==<br />
[[file:DesignerParts.png|right|Parts]]<br />
The ''Parts'' window is displayed using the F6 key or the menu. It is typically docked at the right side of the designer window.<br />
<br />
The parts list contains every [[Design_Parts|part]] that is in the current design. This includes hull objects, imported meshes, rooms, berths, etc. This allows you to easily see everything within the design at once, and also provides buttons for toggling the visibility of each part, as well as other part properties. <br />
<br />
The parts list is also useful for selecting parts and deleting parts.<br />
<br />
===Id Column===<br />
Every part in a design is assigned a unique id number. Part id numbers may range from 1 to 65,535.<br />
<br />
Part id numbers are not preserved when copied and pasted between designs. Parts are assigned new ids when pasted into a design.<br />
<br />
===Name Column===<br />
The name column starts with an icon that indicates the kind of the [[Design_Parts|part]].<br />
<br />
The icon is followed by a text name assigned to the part. Names are assigned by the designer based on the type and properties of the part.<br />
<br />
===Group Column===<br />
The group column shows the name of the group assigned to each part. <br />
<br />
Select one or more parts and right-click to assign them to a group. Group names are chosen by the architect. Parts are assigned to groups as needed.<br />
<br />
Groups organize parts together. <br />
<br />
In building and spacecraft designs, groups define the rooms.<br />
* Group names become room names in the final blueprint, if the group contains a room void.<br />
* Room voids in the same group have the same internal air pressure.<br />
* All parts in the same group are lit similarly, according to room lighting.<br />
The '''Hull''' group is reserved for hull parts; it is never considered to be a room.<br />
Hull parts are lit according to the external environment of the building or spacecraft.<br />
* Parts with a blank group name are grouped with the hull, for lighting.<br />
<br />
In fence and wall blueprints, two groups are required: '''Post''' and '''Section'''.<br />
<br />
The '''Post''' group appears at each post of the final fence.<br />
The blueprint origin is where the post is placed on the ground,<br />
with +Z up according to the direction of gravity at the placement location.<br />
The post is oriented to align with the fence line on the ground.<br />
<br />
The '''Section''' group forms the fence between the posts, from post location to post location.<br />
A section of fence is designed from the origin, extending along the +X axis, with +Z up at each end.<br />
The +X extent of the section defines the typical post spacing of the fence.<br />
<br />
When placed on a world, the fence section is morphed to fit between two post locations.<br />
Post locations may vary in altitude and gravity direction and their spacing may vary from the typical section<br />
that is drawn.<br />
* The section origin, at Z=0, is placed at the first post.<br />
* The section +X extent, at Z=0, is placed at the second post.<br />
* The section geometry stretches accordingly.<br />
<br />
{| class="wikitable"<br />
! <br />
! On<br />
! Off<br />
! Description<br />
|-<br />
! Visibility Toggle<br />
| style="text-align:center;" | [[file:ScShow.png|40px]]<br />
| style="text-align:center;" | [[file:ScHide.png|40px]]<br />
| Toggles whether or not the part is visible.<br />
|-<br />
! Lock Toggle<br />
| style="text-align:center;" | [[file:ScLock.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnlock.png|40px]]<br />
| Toggles whether or not the part can be modified.<br />
|-<br />
! Omit Toggle<br />
| style="text-align:center;" | [[file:ScOmit.png|40px]]<br />
| style="text-align:center;" | [[file:ScInclude.png|40px]]<br />
| Toggles whether or not the part is included in the final design.<br />
|-<br />
! Seal Toggle<br />
| style="text-align:center;" | [[file:ScSeal.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnseal.png|40px]]<br />
| Toggles whether or not the part is sealed.<br />
|}<br />
<br />
==='''V'''isibility Column===<br />
Shows and controls the visibility state of parts. <br />
<br />
Parts can be made invisible to simplify the design view. Invisible parts are not selected when using the mouse in the scene. Editing functions do not operate on invisible parts.<br />
<br />
Left click to toggle the visibility of the selected parts. Right-click to choose visibility from a menu.<br />
<br />
Making a part invisible does not exclude it from the final design. Invisible parts are included in the final design.<br />
<br />
==='''L'''ock Column===<br />
Shows and controls the locked state of parts.<br />
<br />
Lock parts to protect them from accidental editing. The locked state of parts has no effect in the final design.<br />
<br />
Left click to toggle the lock of the selected parts. Right-click to choose the locked or unlocked state from a menu.<br />
<br />
==='''O'''mit Column===<br />
Shows and controls whether a part is omitted from the final design.<br />
<br />
Omit parts to prevent them from being included in the final design. Omitted parts are excluded from the design analysis report. Some parts are always omitted; they cannot be included.<br />
<br />
Excluded parts can be useful for reference purposes, as a way to keep images or geometry in the design that are not intended to be part of the final design. Parts that exist only as design tools are omitted regardless of this setting, e.g. door jigs.<br />
<br />
==='''S'''eal Column===<br />
Shows and controls whether a part is sealed.<br />
<br />
Parts remember who their architect was. Seal parts to prevent other architects from editing them in face mode. '''Only the architect of a part can seal or unseal the part.'''<br />
<br />
Sealed parts can be used in part mode like other whole parts. They can be moved, stretched, rotated, copied to the clipboard and saved into files. Whole part editing operations are mostly disabled when a sealed part is selected, to protect the design of the part from changes.<br />
<br />
A sealed part can be used as a jig but it cannot be cut using a jig.<br />
<br />
Only the architect of a sealed part can enter face mode when the part is selected. This prevents individual faces of sealed parts from being modified or copied to the clipboard by other architects.<br />
<br />
The design report lists all architects whose parts are included in a design.<br />
<br />
===State Column===<br />
Shows the current state of parts that can have multiple states, such as doors that can be open or closed. <br />
<br />
On some kinds of parts, a slide bar is shown for adjusting the transparency of the part.<br />
<br />
==Texture Wrapper Window==<br />
[[file:DesignerTextureWrapper.png|right|Texture Wrapper]]<br />
The ''Texture Wrapper'' window is displayed using the Shift+F6 key or the menu. It can be docked stacked on top of the parts window; tabs will appear at the bottom, to choose between them.<br />
<br />
'''The texture wrapper is only used in face mode.'''<br />
<br />
Texture wrapper is a tool for positioning textures on faces. <br />
Texture wrapper only operates on faces that are selected. <br />
The designer must be in face mode to select faces. <br />
<br />
The viewing area shows the texture applied to the faces. <br />
Edge lines of the faces are painted where the texture is mapped to them. <br />
The viewing area is blank when the texture differs between the selected faces. <br />
<br />
A combo box contains the current texture palette. <br />
Change the texture of faces by choosing a texture in the combo box. <br />
<br />
===Palette===<br />
A design has a palette of textures. <br />
Each face may refer to one of the textures in the palette for its primary surface texture. <br />
<br />
Faces reference palette entries. <br />
If the texture in a palette entry is changed, faces that refer to that palette entry will also change. <br />
<br />
Texture palette entries can be customized. <br />
Each palette entry can be loaded with a custom picture file or it can be configured to use one of the built-in <br />
textures included with the designer. <br />
<br />
The ''Material'' entry changes based on the material used to manufacture the design. <br />
Manufacturing material is configured in the design properties. <br />
The material texture can be overridden by loading a custom texture. <br />
When a custom texture is selected for the material entry, it no longer changes according to the manufacturing <br />
material.<br />
<br />
This is the material entry's only special behavior. <br />
The texture may be used on any faces that should change appearance based on material. <br />
<br />
The textures used for materials exist among the built-in choices included with the designer. <br />
To use one of those textures without it changing due to manufacturing material, <br />
simply assign it to a different palette entry. <br />
<br />
Custom picture files are limited to a size of 256x256 pixels. <br />
Pictures are automatically reduced to fit within that size, while maintaining aspect ratio. <br />
<br />
===Unwrap===<br />
Unwraps the faces onto the texture. A window presents options for unwrapping the faces.<br />
<br />
Texture unwrapper is a tool for automatically positioning textures on faces. <br />
Texture unwrapper only operates on faces that are selected.<br />
The designer must be in face mode to select faces.<br />
<br />
[[file:ScFigUnwrap.png|right|Unwrap Texture]]<br />
The term ''unwrap'' derives from the notion of unwrapping or unfolding the faces of a 3D solid onto a flat surface.<br />
The flat surface is the texture.<br />
<br />
Texture unwrapper is affected by the position and orientation of the grid.<br />
In particular, the texture pattern will start where the grid center corresponds to a face.<br />
<br />
A texture is selected from the design's texture palette.<br />
It will be applied to the selected faces.<br />
The size of the texture is specified, using the ''unit of measure'' configured in settings.<br />
<br />
Texture unwrapper offers several strategies to try keeping a continuous texture pattern around corners.<br />
Sometimes one strategy will produce a better result than another.<br />
<br />
Angle tolerance is used by all unwrap strategies except Unwrap by Face.<br />
Angle tolerance enables the unwrapper to group together faces with similar facing.<br />
<br />
'''Unwrap by Face''' maps each face individually.<br />
Texture is aligned to the plane of each face, with origin aligned to the grid center.<br />
Texture pattern restarts at each new face, without regard to others.<br />
No attempt is made to maintain a continuous texture pattern around corners.<br />
<br />
'''Unwrap by Facing''' maps faces in groups according to their facing.<br />
Texture is mapped to each group using a plane projection, with its origin aligned to the grid center.<br />
Texture pattern is continuous across all faces in each group.<br />
No attempt is made to maintain a continuous texture pattern around corners, between groups.<br />
<br />
'''Unwrap by Edges''' maps faces like Unwrap by Facing.<br />
Texture pattern continues around corners where possible.<br />
<br />
'''Unwrap by Edges Horizontally''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping horizontally rather than vertically.<br />
<br />
'''Unwrap by Edges Vertically''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping vertically rather than horizontally.<br />
<br />
===Plane Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a plane projection. Position of the grid plane affects the result.<br />
<br />
Plane projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a straight parallel projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture. <br />
<br />
The texture is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern is increasingly distorted as the angle of faces gets closer to perpendicular to the <br />
direction the texture is projected. <br />
The pattern smears along perpendicular faces.<br />
<br />
===Cylindrical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a cylindrical projection. Position of the grid plane affects the result.<br />
<br />
Cylindrical projection texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a cylindrical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture and the number of times the texture repeats around the cylinder. <br />
<br />
The texture is stretched into a cylinder that is aligned with the red X axis of the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows around the cylinder with distance from the axis. <br />
The pattern is sized along the X axis according to user choices, so it does not stretch in the X axis direction. <br />
<br />
Cylindrical mapping is useful for applying textures to spindles. <br />
Center the grid on the spindle's rotation axis, with the red X axis aligned to the spindle's rotation axis. <br />
Cylindrically apply a texture.<br />
<br />
===Spherical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a spherical projection. Position of the grid plane affects the result.<br />
<br />
Spherical projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a spherical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the number of times the texture repeats around the equator of a sphere. <br />
<br />
The texture is stretched into a sphere that is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
The center of the projection is the center of the grid plane. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows with distance from the center.<br />
<br />
===Repeat===<br />
Toggles a repeating pattern of the texture image, to aid in positioning. All textures repeat, regardless of this setting. <br />
<br />
The viewing area only shows faces that are selected in the scene. Vertices are highlighted when selected. Vertex selection matches the vertices selected in the scene. Vertices can be selected/deselected in the scene also. <br />
<br />
===Mouse Controls===<br />
* Left click an unselected vertex to select it. <br />
* Ctrl+left click a vertex to toggle its selection. <br />
* Left click a selected vertex, then drag, to move all selected vertices. <br />
* Left click in empty space to deselect all vertices; then drag, to drag a box to select vertices. <br />
* Ctrl+left click in empty space, then drag, to drag a box to toggle selection of vertices. <br />
* Right click then drag to pan the display. <br />
* Wheel to change view magnification. <br />
* Ctrl+wheel to change view magnification in larger steps. <br />
<br />
===Key Commands===<br />
*<code>A</code> selects all vertices. <br />
*<code>G</code> grabs selected vertices to move them. <br />
*<code>R</code> rotates selected vertices. <br />
*<code>S</code> stretches selected vertices. <br />
*<code>X</code> constraint. While moving, moves in X only. While stretching, stretches in X only. <br />
*<code>Y</code> constraint. While moving, moves in Y only. While stretching, stretches in Y only.<br />
<br />
=Spacecraft Design=<br />
For spacecraft designer specific information, see the [[Spacecraft Design]] page.<br />
<br />
==Design Checklist==<br />
The designer offers a checklist as a guide to completing a design. It provides general how-to instructions on how to design a spacecraft.<br />
<br />
===Properties===<br />
Configure the structure. '''Required.'''<br />
<br />
The ''structure'' tells the designer what you are trying to make. Configure this right away. <br />
<br />
The structure affects the design analysis. It also affects the spacecraft when viewed in ''Preview Mode''. <br />
<br />
===Hull===<br />
Construct the hull. '''Required.'''<br />
<br />
''Hull'' parts are the most visible part of a spacecraft when it is seen from the outside. This is the spacecraft people see; make the hull look nice. <br />
<br />
Hull parts determine the volume of the spacecraft. Internal subsystems are allocated from this volume. Parts inside the hull do not reduce hull volume. <br />
<br />
Hull parts may overlap each other. Hull parts may not form separated pieces of a spacecraft. Hull parts must form a single contiguous spacecraft. <br />
<br />
Do not ''join'' hull parts together when done. Collision logic prefers simple hull parts instead of complicated hull parts.<br />
<br />
A concave depression into a hull part is always obstructed. Use hull voids to gain access to obstructed areas if needed. <br />
<br />
Hull parts are not required to form airtight shells; they can have holes. <br />
<br />
If you can see completely through a hull part, through an area that should be solid, its calculated volume may be incorrect. ''Door'', ''window'', ''room'' and ''room void'' parts inside the hull part will block such openings during volume calculations. It may be necessary to add faces, rooms, or room voids to a hull part with holes through it. <br />
<br />
A hull can be created by importing a 3DS or STL file. Many free spacecraft models are available on the Internet. They typically define only the outside shell and they rarely include textures, which makes them ideal for use here. <br />
<br />
The origin (0,0) location after the grid is reset is the center of gravity (CG) of the spacecraft. The CG is the point about which the spacecraft will pitch, roll, and yaw. <br />
<br />
To move the CG of a spacecraft, all the parts must be moved. Unhide and unlock all parts before proceeding. Position the grid at the desired CG and orientation: +X is starboard, +Y is forward, +Z is up. Select all the parts and ''Edit, Cut'' them. Use the ''Position Grid'' function and press '''S''' to reset the grid. ''Edit, Paste'' the parts at their new location. <br />
<br />
===Turrets===<br />
Construct gun turrets.<br />
<br />
A turret consists of a base that spins and an optional gun that tilts. The turret is remotely operated by a troop at a control station aboard the spacecraft. <br />
<br />
Turrets need an unobstructed field of fire. Turrets can hit their own hull and its occupants; NPCs avoid doing so. <br />
<br />
Draw the base of a turret on the hull using a mesh part. Select the base and use the ''Make Turret'' function. The function prompts for the base pivot point and pivot axis. If the turret spins backward when operated, use the ''Properties, Turret Base Position'' function to flip the pivot axis in the opposite direction. <br />
<br />
At this point the turret can be used. Gunfire will emit from the center of the turret base.<br />
<br />
To add a gun to a turret, right-click the Turret in the parts list and select ''Add State'' to add a Gun. Change the turret to the Gun state and draw a gun in face mode. Use the ''Properties, Turret Gun Position'' function to configure where the gun tilts, where it shoots, and where the gunner sees out when operating the turret. <br />
<br />
In the designer, a turret shows the faces of both the base and gun only when it is in the Gunner Screen state. Otherwise a turret only shows the faces appropriate to its current state.<br />
<br />
===Lights===<br />
Construct exterior lights.<br />
<br />
Exterior lights add visibility and draw attention. Interior lights are not represented by any part. <br />
<br />
The appearance of exterior lights can be created using mesh or hull parts. Hull parts have the advantage of adding hull volume. <br />
<br />
''Light Lens'' parts glow when the headlight of the spacecraft is on. Use ''Make Light Lens'' to convert each selected part into a light lens. Each lit light lens adds a glow sprite at the center of the part. <br />
<br />
''Nav Light Lens'' parts glow when the nav lights of the spacecraft are on. Use ''Make Navigation Light Lens'' to convert each selected part into a nav light lens. Each lit nav light lens adds a glow sprite at the center of the part. <br />
<br />
''Rotating Beacon Lens'' parts glow when the rotating beacons of the spacecraft are on. Position the grid to establish the beacon rotation axis, which will align with the Z axis when the beacon is made. Use ''Make Rotating Beacon Lens'' to convert each selected part into a rotating beacon. Each lit rotating beacon adds a rotating glow sprite at the center of the part. <br />
<br />
''Strobe Lens'' parts blink when the strobe lights of the spacecraft are on. Use ''Make Strobe Lens'' to convert each selected part into a strobe. Each lit strobe adds a glow sprite at the center of the part. <br />
<br />
===Landing Gear===<br />
Construct landing gear.<br />
<br />
Landing gear is optional. The spacecraft will settle on its hull without landing gear. <br />
<br />
Landing altitude is determined by the bottom extent of the spacecraft. Landing gear changes the extents of the spacecraft. In the presence of more than one landing gear part, the one that reaches the farthest down will determine the landing altitude. <br />
<br />
Build each landing gear using a mesh part. Use the ''Make Landing Gear'' function to convert the mesh into a ''Landing Gear'' part. <br />
===Rooms===<br />
Construct rooms inside the hull. '''Required.'''<br />
<br />
''Room'' parts do not contribute to collision logic. They exist only for appearance. Rooms are what players see most of the time they are aboard; make them look nice. <br />
<br />
Separate rooms should be spaced apart slightly, to allow for wall thickness between them. <br />
<br />
If the design will incorporate turbo lifts, draw one room for each turbo lift at only one of its stops. That room will become a turbo lift car in another step, after more parts have been added. <br />
<br />
===Meshes===<br />
Construct details.<br />
<br />
Use meshes to create '''control stations''', furnishings, equipment, and other interesting details. <br />
<br />
Meshes do not create an obstacle to movement. They exist only for appearance. Make them look nice. <br />
<br />
===Doorways===<br />
Cut doorways. '''Required.'''<br />
<br />
A ''door jig'' cuts a doorway from one room to another room, or from a room to a hull. The door jig cuts the faces, adds a lining of faces to the hole, and creates a ''Door'' part in the hole. <br />
<br />
Place a door jig into each room that will become a turbo lift. '''Do not cut doors into turbo lifts at this time.'''<br />
<br />
Jigs do not work when placed flat against a face. Raise jigs slightly above the floor before cutting doors.<br />
<br />
Jigs aren't perfect; they sometimes create too many or not enough faces when lining the hole. You may have to delete excess faces or draw missing faces there. <br />
<br />
===Windows===<br />
Cut windows. '''Required.'''<br />
<br />
A ''window jig'' cuts a window opening from one room to another room, or from a room to a hull. A window jig can also cut a window into a hull where no room exists on the inside. The window jig cuts the faces, adds a lining of faces to the hole, and creates a ''Window'' part in the hole. <br />
<br />
Windows are for human players. People like to see out; make lots of windows. NPCs do not need windows to operate a spacecraft. <br />
<br />
Translucent windows give the appearance of occupancy in areas where there may be no rooms at all. They do this by lighting and darkening while the spacecraft has power, which gives the impression that someone is in there. <br />
<br />
In some cases an entire hull part or some faces on a hull part would make a nice window. Use ''Split Faces'' in face mode to make a separate part from selected faces. The ''Make Window'' function converts the part into a window. <br />
<br />
===Control Stations===<br />
Add control stations. '''Required.'''<br />
<br />
Control stations are used by players and NPCs to operate subsystems of the spacecraft. In some cases the creation of the control station causes the appropriate subsystem to exist in the design. <br />
<br />
The simplest control stations to draw are the swivel consoles with chairs. They are simple because a built in model of a control station is used. You only have to specify the location and spin of the control station.<br />
<br />
Meshes are used to create the appearance of integrated control stations. The functions that create integrated control stations will prompt for the operator's location and body position. <br />
<br />
Some stations request additional information such as the screen position. The screen position can be changed by moving the face in face mode. Additional information can be changed using properties functions. <br />
<br />
Turrets require an integrated control station to operate them. Select a turret to add an integrated turret control station. <br />
<br />
Weapon stations request the weapon emit location. These weapons are omnidirectional and they do not hit their own hull or its contents. <br />
<br />
Troop posts provide a location for troops to be stationed when they are not operating a turret. <br />
<br />
===Panels===<br />
Add service and other panels.<br />
<br />
Service panels create a place at which a subsystem of the spacecraft can be repaired manually. In the absence of a service panel, a subsystem can only be repaired by an airport repair shop. Other panels simply provide information. <br />
<br />
Some service panels must be associated with the control station of the appropriate subsystem, to know what subsystem the panel is intended to service.<br />
<br />
''Alert Status Panels'' act as the speaker grill for alert tones. Alert sounds are emitted from alert status panels.<br />
<br />
''Room Life Support Panel'' must be associated with the room void it monitors. <br />
<br />
''World Map Panel'' aspect ratio is 2:1 for spherical worlds. Aspect ratio is 10:1 for ringworld arc sections. <br />
<br />
===Vehicles===<br />
Add vehicle parking spots.<br />
<br />
''Specific vehicle parking spots'' show a solid vehicle model in the spot with a small icon beneath them. <br />
<br />
''General vehicle parking spots'' show a bounding box that fits any vehicle that can park there. e.g. ''Ground vehicle parking spot'' shows a box large enough for any ground vehicle in the game. <br />
<br />
Spacecraft fill their vehicle parking spots by teleporting new vehicles from buildings in trade range. <br />
<br />
With a ''vehicle transporter'' in the design, vehicle parking spots act as vehicle transporter pads. A vehicle does not have to be able to move from its parking spot. The driver simply calls for transport on the comm. <br />
<br />
''Space vehicle launcher'' creates a launch pad and a launch path. While launching, a space vehicle travels along the path. It is not obstructed by the hull or anything else while launching. Voids are not required at the launcher or along the path. The exit end of the path must be clear of the hull. <br />
<br />
When a pilot requests launch, their space vehicle is teleported to an available launch pad. Doors associated with the launcher are opened and the vehicle is launched along the path. The departure speed of the vehicle is determined by the length of the path. Launcher doors close automatically after the vehicle is launched. <br />
<br />
''Space vehicle recovery subsystem'' creates a virtual runway for arriving space vehicles. It should be placed outside the hull. Allow for botched landings; sometimes a pilot has to go around. A space vehicle that stops along the centerline of the runway is teleported to an empty parking spot. <br />
<br />
===Details===<br />
Add berths and other details.<br />
<br />
''Berths'' define the accommodations for captain, officers, crew, troops and passengers. Berths are optional. <br />
<br />
When an avatar dies who has taken a berth aboard a spacecraft, they reappear in their berth aboard that spacecraft if the life support subsystem is functioning and the spacecraft has not been captured by an enemy. On a spacecraft with no berths, the avatar reappears at the helm. <br />
<br />
''Contrail emitters'' help to see and identify spacecraft. Contrails are much easier to see than a fast moving sparkling pixel. Contrails are colored according to each empire's preferences. The size of the contrail emitter part determines the size of the contrail.<br />
<br />
If no contrail emitters are added, a single contrail emitter will automatically be added at the center of the aft extents. This is not done for space stations. <br />
<br />
''Light bulb'' is the source of light emitted by the spacecraft when the headlights switch is on. The light can be omnidirectional or focused into a cone. The light bulb part is not visible in the final spacecraft. Emitted light is not shadowed by faces of the spacecraft. <br />
<br />
''Remote cameras'' are accessed by players using the command station. <br />
<br />
''Items'' can be placed in the design. Items are populated from the city's inventory when the spacecraft is manufactured. Players can take these items. Items are replenished from the spacecraft's cargo. <br />
<br />
===Voids===<br />
Carve out void spaces and add barriers. '''Required.'''<br />
<br />
The hull is treated as a solid mass through and through. Room meshes have no effect on this. <br />
<br />
Voids carve out the areas in which people, vehicles and other spacecraft can go. Barriers create obstacles inside those carved out areas. Voids and barriers are not visible in the final model. <br />
<br />
When two voids are placed next to each other, overlap them slightly. This assures a positive handoff as something moves from one void to another, without bouncing off an infinitesimally thin wall in between.<br />
<br />
Each void and barrier must form a single airtight bubble. There can be no holes or missing faces. Overlapping or excess faces will cause trouble. Concave areas are ok. <br />
<br />
Do not ''join'' voids together. It is better to have a few simple intersecting voids than one single complicated void. <br />
<br />
''Room Voids'' are placed inside rooms, turbo lifts and on ramps. Each operable door must have a room void in the doorway to connect the room voids accessed by the door. <br />
<br />
Voids must be as simple as possible with very few faces. Rooms can be very complex, bumpy, curvy and full of holes. Do not conform to every bump and bulge in the walls. Build simple voids just inside the bumps and most people will never notice. <br />
<br />
''Hull Voids'' allow access to areas of the hull that should '''not''' obstruct movement. <br />
<br />
''Barriers'' create obstacles to movement inside room voids. Barriers can be used to create stairs and ramps or to surround things the player should not walk through. Barriers should use extremely few faces. <br />
<br />
When blocking a large portion of a room void, consider making the room void smaller instead.<br />
<br />
Stairs can be created using a mesh that looks like stairs and a ramp-shaped barrier, instead of shaping the barrier to fit every step. Less faces are needed to make the barrier and movement on the stairs is smoother; it is also easier for small or legless creatures. <br />
<br />
===Turbo Lifts===<br />
Make turbo lifts functional.<br />
<br />
This step is required if you are building any turbo lifts in the design. Two concepts are introduced: doors and paths. They are discussed in detail in the following '''Doors''' and '''Paths''' steps. <br />
<br />
Select the turbo lift room, room void, and door jig for one turbo lift. Use the ''Make Turbo Lift'' function to fuse them together into a ''Turbo Lift'' part.<br />
<br />
Right-click on the turbo lift in the parts list and select ''Add Stop''. Provide a name for the current stop of the turbo lift. Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. The turbo lift must be outside a room to cut into it. The turbo lift must be inside a hull to cut out of it. <br />
<br />
Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
For each additional stop, do the following. <br />
<br />
* Add a stop name for the next stop position. The current stop of the car does not matter. <br />
<br />
* Use the ''Align Turbo Lift Stop'' function to position the car at the newly added stop. The turbo lift can be moved more than once while aligning it; only the final position matters. It is essential to use the ''Align Turbo Lift Stop'' command. Mouse drag moving and cut/copy/paste will change the positions of all stops at once. <br />
<br />
* Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. <br />
<br />
* Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
* When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
Repeat this step for each turbo lift in the design.<br />
<br />
===Paths===<br />
Add walk paths and ladder paths. '''Required.'''<br />
<br />
NPCs do not analyze or even see rooms or obstacles. They blindly trust paths to get them where they want to go. Simple well planned paths enable NPCs to quickly and efficiently move to any room. <br />
<br />
To get from one room to another, an NPC walks straight to the closest path node in their room. Then they follow the path to the closest node to the destination location in the final room. Then they walk directly to the destination location. Any obstruction along the way will physically stop them and their ability to recover from this is poor. Any break in the path along the way is uncrossable. <br />
<br />
NPCs know how to use doors, ladders and turbo lifts. NPCs do not know how to use multiple transporters; they won't beam from one transporter to another to move about, without orders. <br />
<br />
Walk paths should not be placed directly on the floor. A meter or less above the floor works well.<br />
<br />
Paths should be kept as simple as possible. <br />
<br />
Walk paths and ladder paths must form one continuous branching structure throughout the design, wherever NPCs are expected to find their way. It is ok to loop and branch as much as needed. <br />
<br />
Ladder paths are placed where the body is to travel, not inside the ladder rungs. When moving along a ladder path, the body is centered on the path and all obstructions are ignored. <br />
<br />
Each operable interior door needs a walk path that passes through the doorway and ends a short distance inside the room void on each side. Walk paths through hull doors have one end inside a room void and the other end outside the hull. <br />
<br />
Operable floor and ceiling hatches are created using doors. However they should incorporate a ladder path instead of a walk path, even if no ladder is depicted. <br />
<br />
===Doors===<br />
Make doors functional. '''Required.'''<br />
<br />
By now every doorway should have a door, a room void, and a path. The door jig created a ''Door'' part. If a jig was not used, draw a door using a mesh. Then use the ''Make Door'' command to convert the mesh into a ''Door'' that can open and close.<br />
<br />
Change the current state of the door to ''Open''. Select the door, room void and path together. Use the ''Associate Parts'' command to make them accessible only when the door is open.<br />
<br />
When making a hull door, the associated door parts must include a hull void. This distinguishes a hull door from an interior door. The hull void is usually needed to get through the collision margin around the hull. The hull void and room void associated with the hull door should overlap slightly near the middle of the doorway. <br />
<br />
To make a window in a door, simply make the appropriate faces transparent. This will serve as a window but it will not share lighting behavior with ''Window'' parts.<br />
<br />
When making a ramp, create the faces in the open state of the door. Then place a room void on the ramp to access the area on top of the ramp. Associate the room void with the open state of the door. Leave the group name of the room void blank so air pressure will match that of the outside. <br />
<br />
Door switches start out in the center of the door. Every door has two door switches that can be positioned using ''Properties, Door Switch Positions''. This is useful for large doors. <br />
<br />
When a switch is moved, a visual indicator of the new switch position should be created using a mesh, e.g. a small glowing box or ball. <br />
<br />
Paths in the room should have a node close enough to the switch to enable an NPC to operate the switch while standing at the node. Ideally this would be one of the nodes of the path segment associated with the open door. <br />
<br />
The icon for the door part shows what kind of door it is. Some changes require a door to be reanalyzed to determine what kind of door it has become. To reanalyze a door and set other properties, use the ''Properties, Door'' function. <br />
<br />
===Textures===<br />
Texture the faces. '''Required.'''<br />
<br />
Textures should be applied after all changes to the faces are completed. This saves retexturing later after edits are made. <br />
<br />
Textures are applied in face mode. Select faces in face mode and apply textures to them using various methods on the Texture Wrapper. <br />
<br />
The position of the grid affects every texturing command. A technique to insure all floor and ceiling tiles align throughout all rooms is to reset the grid before applying those textures. <br />
<br />
In addition to the base texture, faces have an effects texture layer that responds to the activity of certain subsystems. e.g. The appearance of active lit transporter pads is achieved in this way. <br />
<br />
===Decals===<br />
Add decals.<br />
<br />
Decals are textured faces that apply special rendering behavior to improve their appearance when placed on an underlying face.<br />
<br />
Decals are blended with underlying faces. This enables them to smoothly merge with underlying faces when the decal texture has transparent areas. Normally the transparent areas of textures are discarded which creates a crunchy edge on transparent areas. <br />
<br />
Decals are rendered with a slight offset from the face. That enables them to be drawn coplanar with the underlying faces without unsightly face collisions. <br />
<br />
A few generated decals are available, to display empire flag, empire name, and a few others. The color of word decals can be controlled by painting the faces. The decal that shows the name of a berth occupant must be associated with a berth. <br />
<br />
===Group Names===<br />
Assign group names. '''Required.'''<br />
<br />
Room voids are grouped to assign a name to the room. These room names appear in various user interfaces throughout the game. <br />
<br />
Room voids in the same group will have the same air pressure and lighting. Lighting is controlled by the player using Bright/Dim/Dark controls and it may come in through the windows. Room lighting can be preset using ''Properties, Room Lighting''. That is also where you specify if the room is normally exposed to sunlight. <br />
<br />
Meshes, rooms, control stations, windows, and items should be grouped with the room void they occupy so they will be lit appropriately. Doors can only be in one group; both sides of the door will be lit according to the chosen group. <br />
<br />
Translucent windows can be grouped together to cause them to be lit synchronously. This gives them the appearance of belonging to the same room, even if no room exists. <br />
<br />
Parts with no group name or the reserved name ''Hull'' will have atmosphere and lighting determined by the external environment. <br />
<br />
===Review===<br />
Review properties and design analysis. '''Required.'''<br />
<br />
Use the properties window to configure all settings and to adjust how much of the hull volume is allocated to each subsystem.<br />
<br />
===Finalize===<br />
Finalize the blueprint. '''Required.'''<br />
<br />
Finalize a blueprint to analyze it for errors and inconsistencies. Errors must be fixed before the blueprint can be used in the game. Warnings should be reviewed; changes may be needed but warnings do not prevent use of a blueprint. <br />
<br />
Finalize grabs a screen image to accompany the blueprint in the library. You can provide this image yourself. Use Preview mode to get a screen grab of your design the way it will look in the game. <br />
<br />
The finalize process is slow. It may produce a large number of errors and warnings that need to be fixed or analyzed. ''Previous Finalize Result'' shows the result of the last finalize attempt.<br />
<br />
===Preview===<br />
Preview the design. '''Required.'''<br />
<br />
Land on a world. Try to get out and see if you can get back aboard. <br />
<br />
Create crew to see that they can get to their stations. <br />
<br />
=Building Design=<br />
For building designer specific information, see the [[Building Design]] page.<br />
<br />
[[Category:Designer]]<br />
[[Category:Spacecraft]]<br />
[[Category:Buildings]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Designer&diff=10285Designer2024-02-24T20:03:51Z<p>Haxus: /* Design Checklist */</p>
<hr />
<div>The ''Designer'' is a modeling tool used to design spacecraft and building blueprints. <br />
<br />
The [[Designer Menu]] page describes each individual menu item.<br />
<br />
The [[Design Parts]] page describes each individual kind of part.<br />
<br />
=Architect=<br />
The person who creates a design is the architect of the design.<br />
The person who creates each part is the architect of that part.<br />
Parts retain their architect information with them.<br />
<br />
When multiple architects work on the same design, the architect who initiates the designer instance is the architect of the design.<br />
<br />
The analysis report for a design lists all architects whose parts are included in a design.<br />
<br />
=Blueprints=<br />
A blueprint is a design that has been analyzed and accepted for use in the game. Blueprints contain all of the information needed to make a functional building or spacecraft, such as its 3D model and design specifications. Blueprints are stored in a ''universal library'' where they are accessed by spacecraft and buildings during game play. Blueprints are identified by a unique number, assigned when stored in the library.<br />
<br />
Blueprints can be saved onto media items in an avatar's gear. Blank paper and blank disks can each hold only one blueprint. Storage devices can hold varying numbers of blueprints, depending on the device. <br />
<br />
Spacecraft, buildings, and storage devices reference their blueprints in the library throughout their lifetimes. Blueprints that are in use by game objects cannot be deleted. When a player deletes a blueprint, it may instead be deactivated in the library, until it is no longer referenced and it can be finally removed.<br />
<br />
In the designer and in this wiki, the word blueprint is used generally to refer to any design, whether or not it has been finalized.<br />
<br />
==In-Game Blueprint Exchange==<br />
The blueprint exchange provides a place for players to share blueprints with other players in the online game. Separate exchanges for spacecraft blueprints and building blueprints are accessed in the game. <br />
<br />
At the exchanges, blueprints can be published by architects and they can be purchased by players. Prices are in cronodollars ¢, the money of the game. Cronos are not related to real money. '''Spacecraft and building blueprints do not cost real money.''' <br />
<br />
Publishing is a way to share blueprints with other players. Publishing terms control the price and who is permitted to use the blueprint. <br />
<br />
'''A blueprint does not have to be published to be used in the game.''' A blueprint can be saved onto a storage device in your gear, then used to make buildings or spacecraft. Interfaces that request a blueprint know how to find them in your gear.<br />
<br />
==Web Blueprint Exchange==<br />
The web site offers access to a public blueprint exchange. This exchange is not connected with the in-game exchange in any way.<br />
<br />
The web blueprint exchange offers a place for players to publicly share their .SoH files. There are no publishing terms or restrictions. Blueprints posted to the web exchange are freely available for download by anyone on the Internet.<br />
<br />
===Prepare .SoH for Publishing===<br />
Two things should be done to prepare a .SoH file for publishing to the web blueprint exchange. <br />
<br />
Obstructions should be refreshed. Obstruction data provides volume information necessary to create the design analysis report. The report is presented on a web page in the exchange.<br />
<br />
A nice scene should be present in the view window. A screen grab of the scene is stored with the file. The screen grab is shown on the report. The screen grab is also shown on the button that accesses the report page.<br />
<br />
=Designer Access=<br />
The designer can be accessed both online and when playing offline solo.<br />
<br />
==Online Designer==<br />
Online, a designer is accessed by going to a [[Design_Studio|design studio]] building or by occupying a [[Design_Parts#Station.2C_Designer|designer station]] while aboard a spacecraft.<br />
<br />
To enter a designer at a design studio, display the ''Building'' (<code>F10</code>) window and click on the "Enter" button of a studio. When a studio is "Vacant", you may leave the password box blank or you may enter a password of your choice. The password you enter establishes that studio's password until the studio becomes vacant. To join an "Occupied" design studio, you must enter the password that was established by the first person to enter the studio.<br />
<br />
To enter a designer aboard a spacecraft, move to a designer station and enter the station by pressing the <code>E</code> key. Designers aboard a spacecraft are not password protected. Each designer station creates its own designer instance. People who enter the same designer station are placed in the same designer instance. The avatar enters the designer instance and their body does not remain at the station in the ship, like it does with other stations.<br />
<br />
Players may work together in the same studio to develop a design. In this case, the first player to enter the vacant studio is registered as the architect and owner of the design.<br />
<br />
==Offline Designer==<br />
When the game is launched, the designer can be entered ''solo'', instead of logging in to the game. Overall program performance is better when designing solo because no server is involved. Once a design is completed solo, it can be saved to a .SoH file. That file can be loaded into the on line designer, for storage in the universal library.<br />
<br />
=Design Process=<br />
General steps to making a design go something like this.<br />
* Adjust design properties to establish goals.<br />
* Create an exterior hull.<br />
* Create one or more rooms inside the hull.<br />
* Cut out doors and windows.<br />
* Create finer model details.<br />
* Apply textures and other effects to finish the surfaces.<br />
* Add details: control stations, berths, lights, display screens, etc.<br />
* Add room voids, paths and barriers.<br />
* Make doors operational.<br />
* Finalize the design.<br />
<br />
Designing typically involves creating many [[Design_Parts|''parts'']].<br />
Parts include things like hulls, rooms, jigs, lights, display screens, etc.<br />
<br />
Check design properties from time to time. It shows an assessment of the design, based on what you are trying to design.<br />
<br />
==Design Goal==<br />
Your goal as an architect is to make beautiful looking designs that are functional in the universe of Hazeron.<br />
Emphasis is placed on appearance over technical realism.<br />
<br />
Hull sections do not have to be sculpted to form airtight continuous shells where they join each other.<br />
This is inefficient and difficult to model.<br />
It is much better to butt an engine pylon into the side of the hull, rather than carving a hole so it can make a perfect junction.<br />
Carving that hole breaks the side face into many tiny faces.<br />
It is likely unnecessary, unless people are going to walk or see through the opening.<br />
<br />
A design does not require the interior to conform to the exterior.<br />
Your design may represent a large intricate spacecraft that appears to have many rooms.<br />
It is inefficient and unnecessary to create all of the interior rooms and detail that would exist in real life.<br />
Like a movie set, only a few key areas inside the hull need to be modeled.<br />
This enables the designer to efficiently achieve the look and feel desired, without laborious excess work.<br />
<br />
Interior details have no effect on the mass calculation of the design.<br />
Rich interior designs are encouraged.<br />
There is no performance advantage to making stark minimal interiors.<br />
<br />
Be efficient with your designs.<br />
There is no point in modeling details that can never be seen.<br />
A good example is a cargo hold full of cargo.<br />
An inefficient approach would be to build a huge room and fill it with shipping containers.<br />
Instead of being too literal, think of it like a movie set.<br />
It would be much more efficient to build only an accessible area representative of a cargo hold, with walls modeled and textured to look like stacks of shipping containers.<br />
Use those precious faces where they get the most impact; don't waste them.<br />
<br />
Remove faces that can never be seen. Many parts that contribute to the construction materials requirement of a design are affected by the total surface area of their faces. The amount of materials directly affects the construction time. Reducing faces will reduce the construction time and materials of a design.<br />
<br />
More parts are better than less.<br />
Parts help to manage large 3D models.<br />
Rendering information is collected and consolidated efficiently when the OpenGL model is constructed.<br />
It makes no difference in the final rendering if the information comes from one part or many.<br />
<br />
[[Design_Parts#Turbo_Lift|Turbo lifts]] help to make big designs feel elaborate and detailed on the inside, without extensive modeling effort. They are an effective scene change device in science fiction cinema and they are equally effective in the game, to give the feeling of being aboard a really big ship. They also save a lot of walking.<br />
<br />
==Part Mode vs Face Mode==<br />
Parts are composed of ''faces''.<br />
Faces have vertices and edges.<br />
To edit the faces of one or more selected parts, ''face mode'' is enabled.<br />
In a typical design session, face mode is enabled and disabled often, whenever the need arises to modify the faces that make up a part.<br />
<br />
Actions on the ''Parts'' menu operate on whole parts.<br />
Most actions on the Parts menu are disabled when face mode is enabled.<br />
Some part menu actions are only enabled when one or more parts are selected.<br />
<br />
Actions on the ''Face'' menu operate on faces of selected parts.<br />
Most actions on the Face menu are enabled when face mode is enabled.<br />
Textures are applied in face mode.<br />
<br />
==Geometry==<br />
Parts are represented by geometry that can be painted in an OpenGL scene.<br />
Geometry of parts is described by their vertices, edges and faces.<br />
<br />
===Vertices===<br />
Vertices contain 3D Cartesian coordinate locations that describe the position of edges and faces.<br />
Vertices also contain information needed when rendering.<br />
Texture coordinates are stored at vertices.<br />
Glow is emitted at vertices.<br />
<br />
Render information is interpolated between vertices.<br />
Thus, the glow of a vertex will fade off to a neighboring vertex that does not glow.<br />
<br />
Vertices also contain an up direction, for lighting calculations.<br />
The face menu commands ''Flatten Vertices'' and ''Smooth Vertices'' operate on vertex up directions.<br />
<br />
===Edges===<br />
Edges are the visible lines that go from one vertex to another to reveal the boundaries of faces.<br />
Edges exist for the benefit of the designer, to see the model.<br />
Their presence or absence has no effect on the final rendering result.<br />
<br />
===Faces===<br />
Faces are flat surfaces that compose a 3D model.<br />
OpenGL paints faces in front of each other depending upon their Z-depth in the scene.<br />
This is the essence of how 3D scenes are painted by a computer.<br />
<br />
Faces have a front and a back.<br />
Faces are not visible from the back in the final rendering result.<br />
They can be seen from the back in the designer, if back face visibility is enabled.<br />
The object menu command ''Reverse Faces'' flips their facing back and forth.<br />
<br />
''Facing direction'' is determined by the direction the boundary is drawn. <br />
The boundary is clockwise when viewing the front of a face.<br />
The boundary is counterclockwise when viewing the back of a face.<br />
<br />
All faces are created equal.<br />
A face copied from one part and pasted into another becomes a face of the destination part.<br />
It is irrelevant if it came from a hull and gets added to a room.<br />
The part is the hull or room; the face is just a face.<br />
<br />
Faces do not "know" how they were created. A face created as part of an extrusion is no different from a face that is created individually. The extrusion command merely assembles faces into a desired shape.<br />
<br />
Faces should not be bent. They expect to represent a flat plane. A face should be drawn as multiple faces if a curved surface will be represented.<br />
<br />
Three foundational shapes exist.<br />
<br />
*Triangle - A face defined using a boundary of three vertices.<br />
*Quad - A face defined using a boundary of four vertices.<br />
*Face - A face defined using a boundary with three or more vertices.<br />
<br />
==Shapes==<br />
Shapes use parameter-driven methods to generate faces. Primitive shapes can provide a general starting point for more detailed modeling.<br />
<br />
The resulting shape may be modified like any other set of faces. The faces are in no way different than if an architect painstakingly built the same shape using faces. It is typical to generate a quick shape then rip it apart, to use some portion of it, or embellish it to mold it into what you want.<br />
<br />
===Extrusion===<br />
[[file:ScFigExtrusion.png|right|Extrusion]]<br />
An extrusion is formed by projecting a shape along a straight path. Examples include: rooms, beams. <br />
<br />
The creation of an extrusion begins by entering the shape that will be extruded. After the shape is entered, a window presents options to finalize the extrusion. Straight extrusion is made by simply entering the length. <br />
<br />
Faces are formed at the sides of the extrusion. Stepping allows the sides to be divided along the length of the extrusion.<br />
<br />
When the extrusion is generated, the shape follows a straight line. Both ends of the extrusion are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the extrusion shape.<br />
* Subsequent points are entered to describe the extrusion shape.<br />
* A window offers extrusion options.<br />
* Depending on extrusion options, a point may be entered to indicate the height or direction of the extrusion. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Sphere Lon/Lat===<br />
[[file:ScFigSphereLonLat.png|right|Longitude/Latitude Sphere]]<br />
A longitude/latitude sphere is divided into equal divisions of latitude and longitude. The faces are largest at the equator. The faces converge together at the poles. <br />
<br />
Creation of a longitude/latitude sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of latitude divisions and number of longitude divisions. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Sphere Uniform===<br />
[[file:ScFigSphereUniform.png|right|Uniform Sphere]]<br />
A uniform sphere is divided uniformly into triangle faces. All triangles are close to the same size. <br />
<br />
Creation of a uniform sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of divisions at the equator. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Spindle===<br />
[[file:ScFigSpindle.png|right|Spindle]]<br />
A spindle is created by spinning a shape around an axis. Objects with axial symmetry are created as spindles. Examples include: flying saucer, spool, furniture leg, column, dome, sphere, dinner plate, door knob, dish antenna. <br />
<br />
The creation of a spindle begins by entering the shape that will be spun around an axis. After the shape is entered, a window presents options to finalize the spindle. Options include the number of steps around the axis and the choice of axes. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the spindle shape.<br />
* Subsequent points are entered to describe the spindle shape.<br />
* A window offers spindle options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Tubing===<br />
[[file:ScFigTubing.png|right|Tubing]]<br />
Tubing is very similar to an extrusion except that the path may be complex, instead of simply extruding along a straight line. When the tubing shape is extruded along the path, corners are mitered appropriately.<br />
<br />
Tubing is not just for making water pipes. Tubing is used to make any closed shape that is extruded along a complex path. Examples include: piping, ducts, crown molding, baseboard trim, railroad tracks, hand rails, soffits, wall conforming consoles, base and wall cabinets, and counter tops. <br />
<br />
Creation of tubing begins by entering the path along which the tubing will travel. After the path is entered, a window presents options to finalize the tubing. <br />
<br />
Circular tubing is made by simply entering the diameter and number of sides for the tube. <br />
<br />
Other tubing shapes are created by drawing the cross section shape of the tubing. <br />
<br />
After drawing the shape of the tubing cross section, a guide point is entered on the shape. <br />
<br />
When the tubing is generated, the shape follows the path along the guide. Both ends of the tubing are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the tubing path.<br />
* Subsequent points are entered to describe the tubing path.<br />
* A window offers tubing options.<br />
* Depending on tubing options, a point may be entered to begin the tubing shape.<br />
* Subsequent points are entered to describe the tubing shape.<br />
* Guide point for the tubing shape is entered.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> displays options for completing the tube.<br />
<br />
==Jigs==<br />
<br />
Jigs are found underneath the Part menu button. There are many different types of Jigs, such as Door Jigs, Window Jigs, Launch Tube Jigs, Cutting Jigs, and Decal Jigs. They are created like any other hull or room objects, by selecting the Shape type (Extrusion, Sphere, Tubing, Spindle) and drawing the shape wanted. A physical object is then created and added to the Parts list as a Jig of the type selected. <br />
<br />
Jigs are used by positioning the created Jig object between two rooms, or between a hull and room, ensuring that the Jig penetrates both walls. Once this is positioned correctly, select all 3 objects at once using the Parts panel, and then select "Jig Cut" under the Design Menu button. The jig then cuts the walls in the shape of the jig, allowing you to create tube hallways as an example. The cut walls are then converted to the object type of the jig, such as the walls being converted into transparent glass if using a Window Jig, or door objects if using a Door Jig. <br />
<br />
Jigs can be used in order to create different types of objects, exits or walls between two rooms or the interior and exterior of a design. For example, the Door Jig creates a door between whatever rooms the Jig is placed between. The Window Jig creates a Window between the rooms, while the Launch Tube and Cutting jigs just create holes between the hull and room and cut the faces of each side, respectively. <br />
<br />
All jigs create faces between the two walls that they penetrate, in order to give walls thickness and prevent you from seeing any back-faces.<br />
<br />
==Origin==<br />
<br />
At the center of the design space is a yellow marker, drawn as three intersecting yellow lines.<br />
It does not move when the design grid moves.<br />
The immovable yellow marker is the true origin (0,0,0) location of the design space.<br />
That is the point at which a spacecraft will pivot, when it maneuvers. The origin is the insertion point when placing a building, that determines the altitude of the building on the terrain.<br />
<br />
==Obstructions, Voids, and Barriers==<br />
The obstruction model describes what areas of the design are solid and what areas of the design are not. It is used to determine where a person is standing on the floor and where they are allowed to stand, where vehicles collide with the design and where they go inside, where missiles and gunfire hit or pass through. The obstruction model describes the solid shape of the design and its accessible inside areas.<br />
<br />
The obstruction model cannot be seen. <br />
It exists somewhat like an electrical field around the design.<br />
The presence of the obstruction model can be felt by moving around the design. <br />
The menu toggle ''Blueprint, Solids Obstruct Movement'' must be checked to bump against the obstruction model.<br />
<br />
The obstruction model is created by analyzing the geometry of the design. <br />
A lot of processing effort is required to maintain the model so it is not done automatically with every modification to the design.<br />
The obstruction model is updated using the ''Blueprint, Refresh Obstructions'' menu option.<br />
<br />
The obstruction model is created from hull and landing gear parts, voids, and barriers.<br />
Each state of landing gear is represented so its obstruction shape changes when the gear is extended.<br />
<br />
The obstruction model envelopes each part individually.<br />
To get the best fitting obstruction model, it is beneficial to split elaborate hull parts into<br />
multiple simpler hull parts.<br />
<br />
The obstruction model includes a margin around hull and landing gear parts.<br />
This helps to prevent the eye camera of players from getting close enough to see inside, which breaks the illusion of solidity.<br />
It can also prevent someone from moving close enough to operate a door.<br />
<br />
''Voids'' are used to carve out the spaces accessible to players, from the solid shape created by the hull. Room parts do not contribute to the obstruction model. It is the voids that really determine where people can go inside.<br />
<br />
''Barriers'' are used to create obstructions inside voids. Sometimes it is easier to add a barrier than to change the shape of the room void. Barriers can also be used to create the floor under stairs and ramps.<br />
<br />
==Part Association==<br />
''Association'' is when a part references another part by its id number.<br />
<br />
Certain parts can be associated with certain other parts.<br />
Association is a loose connection between parts.<br />
The meaning of this association depends upon the parts involved.<br />
<br />
A part can be associated with only one other part.<br />
Any number of parts can be associated with the same part.<br />
<br />
Associations are created using the [[Designer_Menu#Associate_Parts|Part, Associate Parts]] command. Associations are removed using the [[Designer_Menu#Dissociate_Parts|Part, Dissociate Parts]].<br />
<br />
Part associations are used by the following parts.<br />
<br />
===Barriers===<br />
[[Design_Parts#Barrier|Barriers]] can be associated with a '''state of a door or landing gear'''.<br />
This determines which barriers are obstructions when the door or landing gear is operated.<br />
<br />
It is ok to associate more than one barrier with a state of a door or landing gear.<br />
<br />
===Berth Name Decals===<br />
[[Design_Parts#Decal.2C_Berth_Name|Berth name decals]] are associated with a '''berth'''.<br />
This determines which name to display on the decal.<br />
''Unassigned'' is displayed when the berth is not assigned.<br />
<br />
It is ok to associate more than one berth name decal to the same berth.<br />
<br />
===FTL Drive Service Panels===<br />
[[Design_Parts#Panel.2C_FTL_Drive|FTL drive service panel]] is associated with an '''engineer station'''.<br />
This determines which FTL drive the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
===Hull Voids===<br />
[[Design_Parts#Void.2C_Hull|Hull voids]] are associated with the '''open state of a door''', when making operable hull doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Association of a hull void and a room void to a door causes it to become a hull door. This enables the interior room void and the exterior hull void to become accessible at once, presumably overlapping each other so a person can move from one void to the other.<br />
<br />
Hull voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Room Life Support Status Panels===<br />
[[Design_Parts#Status.2C_Life_Support|Room life support status panel]] is associated with a '''room void'''.<br />
This determines which room's air pressure reading appears on the panel.<br />
<br />
It is ok to associate more than one life support status panel with a single room.<br />
<br />
===Room Voids===<br />
[[Design_Parts#Void.2C_Room|Room voids]] are associated with the '''open state of a door''', when making operable doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Room voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Walk Paths and Ladder Paths===<br />
[[Design_Parts#Path.2C_Walk|Walk paths]] and [[Design_Parts#Path.2C_Ladder|ladder paths]] are associated with the '''open state of a door''', when making operable doors.<br />
This guides NPCs to find their way through the door when it is open.<br />
<br />
Paths may be associated with any state of a door or landing gear to make access to the void dependent upon those states.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Weapon Service Panels===<br />
[[Design_Parts#Panel.2C_Weapon|Weapon service panel]] is associated with a '''fire control station'''.<br />
This determines which weapon the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
==Walk Paths==<br />
In order for [[NPC]]s to successfully move around the interior of a design with multiple rooms. <br />
<br />
The walk paths need to be above the floor, hip height is usually good. Each end of a walk path is referred to as a ''node'', NPCs will need to always have a clear line to the nearest walk path node in whatever room they are in, or else they will get stuck. Walk paths need to form a full network where each walk path has to start where another ends, so that an NPC that is standing in one room can go to their nearest walk path node and then path through the network to their destination room.<br />
<br />
[[File:WalkPathExample.png|thumb|none|Example of walk paths seen from above. Grey is room voids, blue is door room voids, red is walk path node, and green are the walk paths.]]<br />
<br />
NPC pathing strategy is fairly primitive. When they want to go somewhere, they look for the closest path end point to them that they can move straight to without obstructions. Similar logic is used to find the path node closest to the destination. There must be a complete end-to-end chain of path segments from beginning to end, from there on.<br />
<br />
===Common Mistakes===<br />
Common mistake 1. NPCs will always start by going to the nearest node in their room when they need to path to another room. If the NPC cannot find a path to its destination from its nearest walk path node it will be unable to go anywhere. A walk path is needed to connect the doors across the room from each other, so the NPC can find the closest node at the nearby door, then follow the path to the room containing the destination, then walk across the room straight to destination's room.<br />
<br />
[[File:WalkPathFail.png|thumb|none|Common mistake 1. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
Common mistake 2. NPCs will need a clear line to the nearest node in their room, or they will be unable to leave it. If there are walls or solid furniture inside the room that will prevent a NPC from having a clear line to the nearest walk path node, add a closer walk path node they can use to path to the room's exit.<br />
<br />
[[File:WalkPathFail2.png|thumb|none|Common mistake 2. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
==Finalize==<br />
When a design is complete, it undergoes a finalizing process to insure that it is usable for its intended purpose. The result of the finalize process is presented to the architect in a list. The list may contain green notes, amber warnings and red errors.<br />
<br />
* Green notes are merely informative, providing information about the finalize process.<br />
* Amber warnings bring attention to things that may indicate a design error or oversight was made. Warnings do not prevent a design from being finalized.<br />
* Red errors highlight aspects of the design that must be changed before it can be finalized.<br />
<br />
In the on line designer, a design that finalizes with no errors can be saved into the universal library. Once saved to the library, a unique blueprint number is assigned and reported back to the architect. Then the design can be built in the game and it can be published in the appropriate exchange.<br />
<br />
In the solo designer, a design that finalizes with no errors reports that it could be saved to the library if it was finalized on line.<br />
<br />
=Designer Interface=<br />
The designer interface is dominated by a first person 3D view of the design space. It is in this space that the design will appear as it is created. The mouse pointer is used in this view to select things. The mouse is also used to drag the selected things from one place to another, to move or copy them.<br />
<br />
Hover the mouse pointer over most buttons and controls to see a tool tip. Tool tips on buttons explain their function and they sometimes reveal features that are not obvious at first. The tool tips on some buttons change, depending on current conditions. <br />
<br />
==Grid==<br />
The grid is a tool for drawing, initially visible in the view as a faint grid of lines at floor level. <br />
<br />
The grid is more like a ruler, a measuring tool, than the lines on a piece of graph paper, a static medium. The architect will move and rotate the grid many times during a typical design session, as needed, wherever it helps to draw. <br />
<br />
When more than one person is in the designer, each person sees and interacts with their own grid.<br />
<br />
===Coordinate Systems===<br />
[[file:NumberLine.png|right|Number Line]]<br />
An understanding of coordinate systems is helpful to use the grid effectively. <br />
<br />
Real numbers extend to infinity, both positive and negative. This can be represented visually as a ''number line''. Whole numbers are placed at regular intervals along the line. Fractional numbers fall proportionally between the whole numbers. i.e. 1.5 is 50% of the way between 1 and 2.<br />
<br />
A number can be expressed in units of length, such as meters, in either the positive or negative direction, along the number line. The number is its ordinal value or ''ordinate''. <br />
<br />
That defines a one-dimensional vector. The absolute value of the number is its length. The sign of the number indicates the direction, either positive or negative.<br />
[[file:CoordinateSystem.png|left|Cartesian Coordinate System]]<br />
A ''Cartesian coordinate system'' is created when two number lines are placed perpendicular to each other, so they cross at 0. In a Cartesian coordinate system, each number line is called an ''axis''. They are named X and Y.<br />
<br />
A plane is formed by the intersection of the two axes, called the ''XY plane''. At any location in the plane, the X ordinate and the Y ordinate can be determined by dropping the point perpendicular to the respective axes. Knowing that, we can plot any location in the plane if we know the X ordinate and the Y ordinate at the location.<br />
<br />
The combination of ordinates is called ''coordinates''. Coordinates are expressed using notation like this (X, Y). In the picture, the coordinates of the starship are (-4, -2). The coordinates of the asteroid are (2.5, 3). Coordinates (0,0) are called the ''origin'', because that is where the numbers originate, or begin, for all axes.<br />
<br />
This is a 2 dimensional (2D) coordinate system because it expresses locations as dimensions measured along two axes.<br />
[[file:3DCoordinateSystem.png|right|3D Coordinate System]]<br />
A third axis can be added perpendicular to each of the other two axes. It is named Z. <br />
<br />
Using the coordinates of three axes, any location in space can be described. This is a 3 dimensional (3D) coordinate system because it expresses locations as dimensions measured along three axes. 3D coordinates are expressed like this (X, Y, Z).<br />
<br />
====Right Hand Rule====<br />
Which way does the Z axis go? There are two possible orientations. <br />
<br />
Hazeron uses the right-hand rule for making that determination. It can be visualized by looking at the right hand held out flat. The thumb points in the direction of the positive X axis. The index finger points in the direction of the positive Y axis. Curl the remaining fingers upward, perpendicular to the palm. The middle finger points in the direction of the positive Z axis.<br />
<br />
Mathematically, that means the Z axis is equal to the cross product of the X axis against the Y axis.<br />
<br />
<code>Z = X cross Y</code><br />
<br />
Rotations around axes are also determined using the right hand rule. The positive direction of angular rotation around each axis can be determined by grasping the axis with the right hand, with the thumb pointing in the positive direction. The fingers curl around the axis in the positive angle direction.<br />
<br />
====Absolute Coordinate System====<br />
The ''absolute coordinate system'' underlies all geometry in the designer.<br />
<br />
The absolute coordinate system is indicated by an immovable yellow marker. It is visible in the view as three short intersecting XYZ axis lines.<br />
<br />
That is where the grid starts in a new drawing. To put the grid back to that position, use the [[Designer_Menu#Position_Grid|Position Grid]] command, then choose the '''S=Reset''' option.<br />
<br />
Mathematically, the grid shows the position of a 4x4 transformation matrix. The absolute coordinate system is defined as the identity matrix.<br />
<br />
<code>1 0 0 0</code><br><br />
<code>0 1 0 0</code><br><br />
<code>0 0 1 0</code><br><br />
<code>0 0 0 1</code><br />
<br />
*Origin is at (0,0,0).<br />
*X axis vector is (1,0,0).<br />
*Y axis vector is (0,1,0).<br />
*Z axis vector is (0,0,1).<br />
<br />
===Visible Grid===<br />
The visible grid represents a 3D coordinate system. Axis lines are bright in the positive direction and dim in the negative direction. The position of X is shown as a red line. The position of Y is shown as a green line. The position of Z is shown as a blue line.<br />
<br />
X and Y lines are marked at the ends with the axis name and direction.<br />
<br />
The XY plane contains lines parallel to the X and Y axes, forming a visible grid. Regular interval spacing between the grid lines is controlled by a combo box control on the reference tool bar. <br />
<br />
Grid colors are controlled on the Designer page of the Settings window.<br />
<br />
[[Designer_Menu#Show_Grid|Grid visibility]] can be turned off. <br />
<br />
Grid rounding can be turned on or off, independently of the grid visibility state.<br />
<br />
===Grid as a Tool===<br />
All drawing takes place in the 3D coordinate system of the grid. Position the grid to draw anywhere in the drawing, using coordinates relative to the subject matter. This is typically done frequently while creating a design, using commands accessed on the [[Designer#Reference_Tool_Bar|reference tool bar]] and the [[Designer_Menu#Helpers|helpers menu]].<br />
<br />
[[Designer#Coordinate_Input|Coordinates entered into the input tool bar]] are relative to the grid. <br />
<br />
Freehand drawing happens in the plane of the grid. In the view, the location of the mouse pointer is projected straight into the screen until it intersects the XY plane of the grid, regardless of the visibility state of the grid. If ''Snap to Grid'' is enabled, that location will be rounded to the nearest grid line intersection. Various snapping switches can be enabled. Grid rounding behavior is overridden when the mouse pointer snaps to existing geometry.<br />
<br />
Most drawing commands terminate/replace the current drawing command; grid positioning commands suspend the current drawing command instead. Whenever a drawing command is requesting point input, a grid positioning command can be invoked. Upon termination of the grid positioning command, the suspended drawing command will resume its request for point input.<br />
<br />
When selected geometry is copied to the clipboard, the geometry on the clipboard is in the coordinate space of the grid, at the time of the copy.<br />
<br />
When geometry is pasted from the clipboard, it is placed in the coordinate space of the grid, at its location at the time of the paste.<br />
<br />
For example, move the grid to the center of a selected part. Copy that part to the clipboard. Move the grid. Paste the clipboard; it will be added at the new location of the grid. Use [[Designer_Menu#Paste_At|Paste At]] to place more than one of them.<br />
<br />
==Menu Bar==<br />
[[file:DesignerMenu.png|right|Menu Bar]]<br />
At the top of the designer interface is a menu bar. Most functions of the program can be accessed using the menu bar.<br />
<br />
See [[Designer_Menu|designer menu]] for a list of the items on the menu bar.<br />
<br />
==Input Tool Bar==<br />
[[file:DesignerInputBar.png|right|Input Tool Bar]]<br />
The ''Input Tool Bar'' appears below the menu bar, at the left. It can be moved by dragging the dotted grip at the left end. Tool tips on the buttons explain their function.<br />
<br />
===Design Properties===<br />
Equivalent to the [[Designer_Menu#Properties|Blueprint, Properties]] menu item.<br />
<br />
===Refresh Obstructions===<br />
Equivalent to the [[Designer_Menu#Refresh_Obstructions|Blueprint, Refresh Obstructions]] menu item.<br />
<br />
===Solids Obstruct Movement===<br />
Equivalent to the [[Designer_Menu#Solids_Obstruct_Movement|Blueprint, Solids Obstruct Movment]] menu item.<br />
<br />
===Gravity===<br />
Equivalent to the [[Designer_Menu#Gravity_On.2FOff|Blueprint, Gravity On/Off]] menu item.<br />
<br />
===Preview===<br />
Equivalent to the [[Designer_Menu#Preview_On.2FOff|Blueprint, Preview On/Off]] menu item.<br />
<br />
===Preview Sun Position===<br />
Equivalent to the [[Designer_Menu#Preview_Settings|Blueprint, Preview Settings]] menu item.<br />
<br />
===Construct Building===<br />
Equivalent to the [[Designer_Menu#Preview_Place_Building|Blueprint, Preview Place Building]] menu item.<br />
<br />
===Preview People===<br />
Equivalent to the [[Designer_Menu#Preview_People|Blueprint, Preview People]] menu item.<br />
<br />
===Coordinate Input===<br />
Many design commands will ask the architect to enter a 3D point location. A location can then be entered by clicking with the mouse pointer in the view window. Alternatively, locations can be entered into the coordinate input box, at the end of the [[Designer#Input_Tool_Bar|Input Tool Bar]].<br />
<br />
3D coordinates are entered as '''X,Y,Z''' values, which are positive or negative offsets along the '''X''', '''Y''' and '''Z''' axes. <br />
Coordinates are not bracketed with parentheses.<br />
Omitted values are 0. e.g. <i>1,,2</i> is the same as <i>1,0,2</i>; <i>p2</i> is the same as <i>p2,0,0</i>; <i>a,3</i> is the same as <i>a0,3,0</i>.<br />
<br />
Polar coordinates are entered as '''pD,A,I''' values: '''D''' is distance from the origin; '''A''' is angle around the Z axis, positive counterclockwise and negative clockwise; '''I''' is the angle of inclination off the XY plane, positive above and negative below.<br />
<br />
Coordinates are relative to the location and orientation of the [[Designer#Grid|grid]] unless specified otherwise.<br />
<br />
Coordinates prefixed with '''a''' are ''absolute''. Absolute coordinates are relative to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]] of the design, ignoring the grid. e.g. ''a1.25,2.3,-4.5'' or ''ap2.5,-30,10''.<br />
<br />
Distances are interpreted in units depending upon the ''unit of measure'' setting. Whole numbers are interpreted as whole units of measure. For example, if the unit of measure is meters, which is the default, then 10 means 10 meters. Unit of measure is configured on the Designer page of the Settings window. Unit of measure can be changed at any time while drawing.<br />
<br />
====Rotating====<br />
Some design commands will ask the architect to enter a rotation value. e.g. rotate selected objects.<br />
<br />
Angles are entered in degrees.<br />
<br />
When responding to a request for rotation, input into the Coordinate Input box is interpreted as 3D rotation angles around the X, Y and Z axes. e.g. To rotate 45 degrees around the Z axis, enter 0,0,45, or simply ,,45.<br />
<br />
Positive and negative direction of rotation is determined by the [[Designer#Right_Hand_Rule|right hand rule]].<br />
<br />
====Scaling====<br />
Some design commands will ask the architect to enter a scale value. e.g. stretch selected objects.<br />
<br />
When responding to a request for scaling, input into the Coordinate Input box is interpreted as 3D stretch factors along the X, Y and Z axes. e.g. To double the overall size, enter 2,2,2; to reduce the X dimension by half, enter .5,1,1.<br />
<br />
====Move/Copy====<br />
When no design command is active, the coordinate input box can be used to move or copy the objects that are selected.<br />
* '''Move parts''' by entering a coordinate. The objects that are selected will be moved using the vector entered.<br />
* '''Copy parts''' by entering a coordinate while holding the <code>Ctrl</code> key. The objects that are selected will be copied and moved using the vector entered.<br />
<br />
==Reference Tool Bar==<br />
[[file:DesignerReferenceBar.png|right|Reference Tool Bar]]<br />
The ''Reference Tool Bar'' appears below the menu bar, to the right of the input tool bar. It can be moved by dragging the dotted grip at the left end.<br />
<br />
===Face Mode===<br />
Equivalent to the [[Designer_Menu#Face_Mode|Face, Face Mode]] menu item.<br />
<br />
===Isolate Parts===<br />
Equivalent to the [[Designer_Menu#Isolate_Parts|Face, Isolate Parts]] menu item.<br />
<br />
===Find Vertices===<br />
Equivalent to the [[Designer_Menu#Find_Vertices|Helpers, Find Vertices]] menu item.<br />
<br />
===Find Edges===<br />
Equivalent to the [[Designer_Menu#Find_Edges|Helpers, Find Edges]] menu item.<br />
<br />
===Find Faces===<br />
Equivalent to the [[Designer_Menu#Find_Faces|Helpers, Find Faces]] menu item.<br />
<br />
===Show Edges===<br />
Equivalent to the [[Designer_Menu#Show_Edges|View, Show Edges]] menu item.<br />
<br />
===Show Faces===<br />
Equivalent to the [[Designer_Menu#Show_Faces|View, Show Faces]] menu item.<br />
<br />
===Show Back Faces===<br />
Equivalent to the [[Designer_Menu#Show_Back_Faces|View, Show Back Faces]] menu item.<br />
<br />
===Move Grid===<br />
Equivalent to the [[Designer_Menu#Move_Grid|Helpers, Move Grid]] menu item.<br />
<br />
===XY Grid===<br />
Equivalent to the [[Designer_Menu#XY_Grid|Helpers, XY Grid]] menu item.<br />
<br />
===XZ Grid===<br />
Equivalent to the [[Designer_Menu#XZ_Grid|Helpers, XZ Grid]] menu item.<br />
<br />
===YZ Grid===<br />
Equivalent to the [[Designer_Menu#YZ_Grid|Helpers, YZ Grid]] menu item.<br />
<br />
===Position Grid===<br />
Equivalent to the [[Designer_Menu#Position_Grid|Helpers, Position Grid]] menu item.<br />
<br />
===Grid Spacing===<br />
Changes the spacing between lines in the grid.<br />
<br />
===Show Grid===<br />
Equivalent to the [[Designer_Menu#Show_Grid|Helpers, Show Grid]] menu item.<br />
<br />
===Grid Follows Work===<br />
Equivalent to the [[Designer_Menu#Grid_Follows_Work|Helpers, Grid Follows Work]] menu item.<br />
<br />
===Snap to Grid===<br />
Equivalent to the [[Designer_Menu#Snap_to_Grid|Helpers, Snap to Grid]] menu item.<br />
<br />
===Snap to Edges===<br />
Equivalent to the [[Designer_Menu#Snap_to_Edges|Helpers, Snap to Edges]] menu item.<br />
<br />
===Snap to Vertices===<br />
Equivalent to the [[Designer_Menu#Snap_to_Vertices|Helpers, Snap to Vertices]] menu item.<br />
<br />
===Coordinate Feedback===<br />
Shows coordinates relevant to the current drawing operation.<br />
<br />
When responding to coordinate input, the coordinate at the mouse pointer position is shown, relative to the grid. That coordinate is usually the location where the mouse pointer hits the grid, though it may change if the pointer snaps to an existing object.<br />
<br />
When dragging objects using the mouse pointer, the offset of the drag is shown. Dragging usually occurs in the grid plane, though it may change if the pointer snaps to an existing object.<br />
<br />
==Parts Window==<br />
[[file:DesignerParts.png|right|Parts]]<br />
The ''Parts'' window is displayed using the F6 key or the menu. It is typically docked at the right side of the designer window.<br />
<br />
The parts list contains every [[Design_Parts|part]] that is in the current design. This includes hull objects, imported meshes, rooms, berths, etc. This allows you to easily see everything within the design at once, and also provides buttons for toggling the visibility of each part, as well as other part properties. <br />
<br />
The parts list is also useful for selecting parts and deleting parts.<br />
<br />
===Id Column===<br />
Every part in a design is assigned a unique id number. Part id numbers may range from 1 to 65,535.<br />
<br />
Part id numbers are not preserved when copied and pasted between designs. Parts are assigned new ids when pasted into a design.<br />
<br />
===Name Column===<br />
The name column starts with an icon that indicates the kind of the [[Design_Parts|part]].<br />
<br />
The icon is followed by a text name assigned to the part. Names are assigned by the designer based on the type and properties of the part.<br />
<br />
===Group Column===<br />
The group column shows the name of the group assigned to each part. <br />
<br />
Select one or more parts and right-click to assign them to a group. Group names are chosen by the architect. Parts are assigned to groups as needed.<br />
<br />
Groups organize parts together. <br />
<br />
In building and spacecraft designs, groups define the rooms.<br />
* Group names become room names in the final blueprint, if the group contains a room void.<br />
* Room voids in the same group have the same internal air pressure.<br />
* All parts in the same group are lit similarly, according to room lighting.<br />
The '''Hull''' group is reserved for hull parts; it is never considered to be a room.<br />
Hull parts are lit according to the external environment of the building or spacecraft.<br />
* Parts with a blank group name are grouped with the hull, for lighting.<br />
<br />
In fence and wall blueprints, two groups are required: '''Post''' and '''Section'''.<br />
<br />
The '''Post''' group appears at each post of the final fence.<br />
The blueprint origin is where the post is placed on the ground,<br />
with +Z up according to the direction of gravity at the placement location.<br />
The post is oriented to align with the fence line on the ground.<br />
<br />
The '''Section''' group forms the fence between the posts, from post location to post location.<br />
A section of fence is designed from the origin, extending along the +X axis, with +Z up at each end.<br />
The +X extent of the section defines the typical post spacing of the fence.<br />
<br />
When placed on a world, the fence section is morphed to fit between two post locations.<br />
Post locations may vary in altitude and gravity direction and their spacing may vary from the typical section<br />
that is drawn.<br />
* The section origin, at Z=0, is placed at the first post.<br />
* The section +X extent, at Z=0, is placed at the second post.<br />
* The section geometry stretches accordingly.<br />
<br />
{| class="wikitable"<br />
! <br />
! On<br />
! Off<br />
! Description<br />
|-<br />
! Visibility Toggle<br />
| style="text-align:center;" | [[file:ScShow.png|40px]]<br />
| style="text-align:center;" | [[file:ScHide.png|40px]]<br />
| Toggles whether or not the part is visible.<br />
|-<br />
! Lock Toggle<br />
| style="text-align:center;" | [[file:ScLock.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnlock.png|40px]]<br />
| Toggles whether or not the part can be modified.<br />
|-<br />
! Omit Toggle<br />
| style="text-align:center;" | [[file:ScOmit.png|40px]]<br />
| style="text-align:center;" | [[file:ScInclude.png|40px]]<br />
| Toggles whether or not the part is included in the final design.<br />
|-<br />
! Seal Toggle<br />
| style="text-align:center;" | [[file:ScSeal.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnseal.png|40px]]<br />
| Toggles whether or not the part is sealed.<br />
|}<br />
<br />
==='''V'''isibility Column===<br />
Shows and controls the visibility state of parts. <br />
<br />
Parts can be made invisible to simplify the design view. Invisible parts are not selected when using the mouse in the scene. Editing functions do not operate on invisible parts.<br />
<br />
Left click to toggle the visibility of the selected parts. Right-click to choose visibility from a menu.<br />
<br />
Making a part invisible does not exclude it from the final design. Invisible parts are included in the final design.<br />
<br />
==='''L'''ock Column===<br />
Shows and controls the locked state of parts.<br />
<br />
Lock parts to protect them from accidental editing. The locked state of parts has no effect in the final design.<br />
<br />
Left click to toggle the lock of the selected parts. Right-click to choose the locked or unlocked state from a menu.<br />
<br />
==='''O'''mit Column===<br />
Shows and controls whether a part is omitted from the final design.<br />
<br />
Omit parts to prevent them from being included in the final design. Omitted parts are excluded from the design analysis report. Some parts are always omitted; they cannot be included.<br />
<br />
Excluded parts can be useful for reference purposes, as a way to keep images or geometry in the design that are not intended to be part of the final design. Parts that exist only as design tools are omitted regardless of this setting, e.g. door jigs.<br />
<br />
==='''S'''eal Column===<br />
Shows and controls whether a part is sealed.<br />
<br />
Parts remember who their architect was. Seal parts to prevent other architects from editing them in face mode. '''Only the architect of a part can seal or unseal the part.'''<br />
<br />
Sealed parts can be used in part mode like other whole parts. They can be moved, stretched, rotated, copied to the clipboard and saved into files. Whole part editing operations are mostly disabled when a sealed part is selected, to protect the design of the part from changes.<br />
<br />
A sealed part can be used as a jig but it cannot be cut using a jig.<br />
<br />
Only the architect of a sealed part can enter face mode when the part is selected. This prevents individual faces of sealed parts from being modified or copied to the clipboard by other architects.<br />
<br />
The design report lists all architects whose parts are included in a design.<br />
<br />
===State Column===<br />
Shows the current state of parts that can have multiple states, such as doors that can be open or closed. <br />
<br />
On some kinds of parts, a slide bar is shown for adjusting the transparency of the part.<br />
<br />
==Texture Wrapper Window==<br />
[[file:DesignerTextureWrapper.png|right|Texture Wrapper]]<br />
The ''Texture Wrapper'' window is displayed using the Shift+F6 key or the menu. It can be docked stacked on top of the parts window; tabs will appear at the bottom, to choose between them.<br />
<br />
'''The texture wrapper is only used in face mode.'''<br />
<br />
Texture wrapper is a tool for positioning textures on faces. <br />
Texture wrapper only operates on faces that are selected. <br />
The designer must be in face mode to select faces. <br />
<br />
The viewing area shows the texture applied to the faces. <br />
Edge lines of the faces are painted where the texture is mapped to them. <br />
The viewing area is blank when the texture differs between the selected faces. <br />
<br />
A combo box contains the current texture palette. <br />
Change the texture of faces by choosing a texture in the combo box. <br />
<br />
===Palette===<br />
A design has a palette of textures. <br />
Each face may refer to one of the textures in the palette for its primary surface texture. <br />
<br />
Faces reference palette entries. <br />
If the texture in a palette entry is changed, faces that refer to that palette entry will also change. <br />
<br />
Texture palette entries can be customized. <br />
Each palette entry can be loaded with a custom picture file or it can be configured to use one of the built-in <br />
textures included with the designer. <br />
<br />
The ''Material'' entry changes based on the material used to manufacture the design. <br />
Manufacturing material is configured in the design properties. <br />
The material texture can be overridden by loading a custom texture. <br />
When a custom texture is selected for the material entry, it no longer changes according to the manufacturing <br />
material.<br />
<br />
This is the material entry's only special behavior. <br />
The texture may be used on any faces that should change appearance based on material. <br />
<br />
The textures used for materials exist among the built-in choices included with the designer. <br />
To use one of those textures without it changing due to manufacturing material, <br />
simply assign it to a different palette entry. <br />
<br />
Custom picture files are limited to a size of 256x256 pixels. <br />
Pictures are automatically reduced to fit within that size, while maintaining aspect ratio. <br />
<br />
===Unwrap===<br />
Unwraps the faces onto the texture. A window presents options for unwrapping the faces.<br />
<br />
Texture unwrapper is a tool for automatically positioning textures on faces. <br />
Texture unwrapper only operates on faces that are selected.<br />
The designer must be in face mode to select faces.<br />
<br />
[[file:ScFigUnwrap.png|right|Unwrap Texture]]<br />
The term ''unwrap'' derives from the notion of unwrapping or unfolding the faces of a 3D solid onto a flat surface.<br />
The flat surface is the texture.<br />
<br />
Texture unwrapper is affected by the position and orientation of the grid.<br />
In particular, the texture pattern will start where the grid center corresponds to a face.<br />
<br />
A texture is selected from the design's texture palette.<br />
It will be applied to the selected faces.<br />
The size of the texture is specified, using the ''unit of measure'' configured in settings.<br />
<br />
Texture unwrapper offers several strategies to try keeping a continuous texture pattern around corners.<br />
Sometimes one strategy will produce a better result than another.<br />
<br />
Angle tolerance is used by all unwrap strategies except Unwrap by Face.<br />
Angle tolerance enables the unwrapper to group together faces with similar facing.<br />
<br />
'''Unwrap by Face''' maps each face individually.<br />
Texture is aligned to the plane of each face, with origin aligned to the grid center.<br />
Texture pattern restarts at each new face, without regard to others.<br />
No attempt is made to maintain a continuous texture pattern around corners.<br />
<br />
'''Unwrap by Facing''' maps faces in groups according to their facing.<br />
Texture is mapped to each group using a plane projection, with its origin aligned to the grid center.<br />
Texture pattern is continuous across all faces in each group.<br />
No attempt is made to maintain a continuous texture pattern around corners, between groups.<br />
<br />
'''Unwrap by Edges''' maps faces like Unwrap by Facing.<br />
Texture pattern continues around corners where possible.<br />
<br />
'''Unwrap by Edges Horizontally''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping horizontally rather than vertically.<br />
<br />
'''Unwrap by Edges Vertically''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping vertically rather than horizontally.<br />
<br />
===Plane Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a plane projection. Position of the grid plane affects the result.<br />
<br />
Plane projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a straight parallel projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture. <br />
<br />
The texture is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern is increasingly distorted as the angle of faces gets closer to perpendicular to the <br />
direction the texture is projected. <br />
The pattern smears along perpendicular faces.<br />
<br />
===Cylindrical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a cylindrical projection. Position of the grid plane affects the result.<br />
<br />
Cylindrical projection texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a cylindrical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture and the number of times the texture repeats around the cylinder. <br />
<br />
The texture is stretched into a cylinder that is aligned with the red X axis of the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows around the cylinder with distance from the axis. <br />
The pattern is sized along the X axis according to user choices, so it does not stretch in the X axis direction. <br />
<br />
Cylindrical mapping is useful for applying textures to spindles. <br />
Center the grid on the spindle's rotation axis, with the red X axis aligned to the spindle's rotation axis. <br />
Cylindrically apply a texture.<br />
<br />
===Spherical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a spherical projection. Position of the grid plane affects the result.<br />
<br />
Spherical projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a spherical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the number of times the texture repeats around the equator of a sphere. <br />
<br />
The texture is stretched into a sphere that is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
The center of the projection is the center of the grid plane. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows with distance from the center.<br />
<br />
===Repeat===<br />
Toggles a repeating pattern of the texture image, to aid in positioning. All textures repeat, regardless of this setting. <br />
<br />
The viewing area only shows faces that are selected in the scene. Vertices are highlighted when selected. Vertex selection matches the vertices selected in the scene. Vertices can be selected/deselected in the scene also. <br />
<br />
===Mouse Controls===<br />
* Left click an unselected vertex to select it. <br />
* Ctrl+left click a vertex to toggle its selection. <br />
* Left click a selected vertex, then drag, to move all selected vertices. <br />
* Left click in empty space to deselect all vertices; then drag, to drag a box to select vertices. <br />
* Ctrl+left click in empty space, then drag, to drag a box to toggle selection of vertices. <br />
* Right click then drag to pan the display. <br />
* Wheel to change view magnification. <br />
* Ctrl+wheel to change view magnification in larger steps. <br />
<br />
===Key Commands===<br />
*<code>A</code> selects all vertices. <br />
*<code>G</code> grabs selected vertices to move them. <br />
*<code>R</code> rotates selected vertices. <br />
*<code>S</code> stretches selected vertices. <br />
*<code>X</code> constraint. While moving, moves in X only. While stretching, stretches in X only. <br />
*<code>Y</code> constraint. While moving, moves in Y only. While stretching, stretches in Y only.<br />
<br />
=Building Design=<br />
For building designer specific information, see the [[Building Design]] page.<br />
<br />
[[Category:Designer]]<br />
[[Category:Spacecraft]]<br />
[[Category:Buildings]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Designer&diff=10283Designer2024-02-24T20:02:06Z<p>Haxus: /* Spacecraft Design */</p>
<hr />
<div>The ''Designer'' is a modeling tool used to design spacecraft and building blueprints. <br />
<br />
The [[Designer Menu]] page describes each individual menu item.<br />
<br />
The [[Design Parts]] page describes each individual kind of part.<br />
<br />
=Architect=<br />
The person who creates a design is the architect of the design.<br />
The person who creates each part is the architect of that part.<br />
Parts retain their architect information with them.<br />
<br />
When multiple architects work on the same design, the architect who initiates the designer instance is the architect of the design.<br />
<br />
The analysis report for a design lists all architects whose parts are included in a design.<br />
<br />
=Blueprints=<br />
A blueprint is a design that has been analyzed and accepted for use in the game. Blueprints contain all of the information needed to make a functional building or spacecraft, such as its 3D model and design specifications. Blueprints are stored in a ''universal library'' where they are accessed by spacecraft and buildings during game play. Blueprints are identified by a unique number, assigned when stored in the library.<br />
<br />
Blueprints can be saved onto media items in an avatar's gear. Blank paper and blank disks can each hold only one blueprint. Storage devices can hold varying numbers of blueprints, depending on the device. <br />
<br />
Spacecraft, buildings, and storage devices reference their blueprints in the library throughout their lifetimes. Blueprints that are in use by game objects cannot be deleted. When a player deletes a blueprint, it may instead be deactivated in the library, until it is no longer referenced and it can be finally removed.<br />
<br />
In the designer and in this wiki, the word blueprint is used generally to refer to any design, whether or not it has been finalized.<br />
<br />
==In-Game Blueprint Exchange==<br />
The blueprint exchange provides a place for players to share blueprints with other players in the online game. Separate exchanges for spacecraft blueprints and building blueprints are accessed in the game. <br />
<br />
At the exchanges, blueprints can be published by architects and they can be purchased by players. Prices are in cronodollars ¢, the money of the game. Cronos are not related to real money. '''Spacecraft and building blueprints do not cost real money.''' <br />
<br />
Publishing is a way to share blueprints with other players. Publishing terms control the price and who is permitted to use the blueprint. <br />
<br />
'''A blueprint does not have to be published to be used in the game.''' A blueprint can be saved onto a storage device in your gear, then used to make buildings or spacecraft. Interfaces that request a blueprint know how to find them in your gear.<br />
<br />
==Web Blueprint Exchange==<br />
The web site offers access to a public blueprint exchange. This exchange is not connected with the in-game exchange in any way.<br />
<br />
The web blueprint exchange offers a place for players to publicly share their .SoH files. There are no publishing terms or restrictions. Blueprints posted to the web exchange are freely available for download by anyone on the Internet.<br />
<br />
===Prepare .SoH for Publishing===<br />
Two things should be done to prepare a .SoH file for publishing to the web blueprint exchange. <br />
<br />
Obstructions should be refreshed. Obstruction data provides volume information necessary to create the design analysis report. The report is presented on a web page in the exchange.<br />
<br />
A nice scene should be present in the view window. A screen grab of the scene is stored with the file. The screen grab is shown on the report. The screen grab is also shown on the button that accesses the report page.<br />
<br />
=Designer Access=<br />
The designer can be accessed both online and when playing offline solo.<br />
<br />
==Online Designer==<br />
Online, a designer is accessed by going to a [[Design_Studio|design studio]] building or by occupying a [[Design_Parts#Station.2C_Designer|designer station]] while aboard a spacecraft.<br />
<br />
To enter a designer at a design studio, display the ''Building'' (<code>F10</code>) window and click on the "Enter" button of a studio. When a studio is "Vacant", you may leave the password box blank or you may enter a password of your choice. The password you enter establishes that studio's password until the studio becomes vacant. To join an "Occupied" design studio, you must enter the password that was established by the first person to enter the studio.<br />
<br />
To enter a designer aboard a spacecraft, move to a designer station and enter the station by pressing the <code>E</code> key. Designers aboard a spacecraft are not password protected. Each designer station creates its own designer instance. People who enter the same designer station are placed in the same designer instance. The avatar enters the designer instance and their body does not remain at the station in the ship, like it does with other stations.<br />
<br />
Players may work together in the same studio to develop a design. In this case, the first player to enter the vacant studio is registered as the architect and owner of the design.<br />
<br />
==Offline Designer==<br />
When the game is launched, the designer can be entered ''solo'', instead of logging in to the game. Overall program performance is better when designing solo because no server is involved. Once a design is completed solo, it can be saved to a .SoH file. That file can be loaded into the on line designer, for storage in the universal library.<br />
<br />
=Design Process=<br />
General steps to making a design go something like this.<br />
* Adjust design properties to establish goals.<br />
* Create an exterior hull.<br />
* Create one or more rooms inside the hull.<br />
* Cut out doors and windows.<br />
* Create finer model details.<br />
* Apply textures and other effects to finish the surfaces.<br />
* Add details: control stations, berths, lights, display screens, etc.<br />
* Add room voids, paths and barriers.<br />
* Make doors operational.<br />
* Finalize the design.<br />
<br />
Designing typically involves creating many [[Design_Parts|''parts'']].<br />
Parts include things like hulls, rooms, jigs, lights, display screens, etc.<br />
<br />
Check design properties from time to time. It shows an assessment of the design, based on what you are trying to design.<br />
<br />
==Design Goal==<br />
Your goal as an architect is to make beautiful looking designs that are functional in the universe of Hazeron.<br />
Emphasis is placed on appearance over technical realism.<br />
<br />
Hull sections do not have to be sculpted to form airtight continuous shells where they join each other.<br />
This is inefficient and difficult to model.<br />
It is much better to butt an engine pylon into the side of the hull, rather than carving a hole so it can make a perfect junction.<br />
Carving that hole breaks the side face into many tiny faces.<br />
It is likely unnecessary, unless people are going to walk or see through the opening.<br />
<br />
A design does not require the interior to conform to the exterior.<br />
Your design may represent a large intricate spacecraft that appears to have many rooms.<br />
It is inefficient and unnecessary to create all of the interior rooms and detail that would exist in real life.<br />
Like a movie set, only a few key areas inside the hull need to be modeled.<br />
This enables the designer to efficiently achieve the look and feel desired, without laborious excess work.<br />
<br />
Interior details have no effect on the mass calculation of the design.<br />
Rich interior designs are encouraged.<br />
There is no performance advantage to making stark minimal interiors.<br />
<br />
Be efficient with your designs.<br />
There is no point in modeling details that can never be seen.<br />
A good example is a cargo hold full of cargo.<br />
An inefficient approach would be to build a huge room and fill it with shipping containers.<br />
Instead of being too literal, think of it like a movie set.<br />
It would be much more efficient to build only an accessible area representative of a cargo hold, with walls modeled and textured to look like stacks of shipping containers.<br />
Use those precious faces where they get the most impact; don't waste them.<br />
<br />
Remove faces that can never be seen. Many parts that contribute to the construction materials requirement of a design are affected by the total surface area of their faces. The amount of materials directly affects the construction time. Reducing faces will reduce the construction time and materials of a design.<br />
<br />
More parts are better than less.<br />
Parts help to manage large 3D models.<br />
Rendering information is collected and consolidated efficiently when the OpenGL model is constructed.<br />
It makes no difference in the final rendering if the information comes from one part or many.<br />
<br />
[[Design_Parts#Turbo_Lift|Turbo lifts]] help to make big designs feel elaborate and detailed on the inside, without extensive modeling effort. They are an effective scene change device in science fiction cinema and they are equally effective in the game, to give the feeling of being aboard a really big ship. They also save a lot of walking.<br />
<br />
==Part Mode vs Face Mode==<br />
Parts are composed of ''faces''.<br />
Faces have vertices and edges.<br />
To edit the faces of one or more selected parts, ''face mode'' is enabled.<br />
In a typical design session, face mode is enabled and disabled often, whenever the need arises to modify the faces that make up a part.<br />
<br />
Actions on the ''Parts'' menu operate on whole parts.<br />
Most actions on the Parts menu are disabled when face mode is enabled.<br />
Some part menu actions are only enabled when one or more parts are selected.<br />
<br />
Actions on the ''Face'' menu operate on faces of selected parts.<br />
Most actions on the Face menu are enabled when face mode is enabled.<br />
Textures are applied in face mode.<br />
<br />
==Geometry==<br />
Parts are represented by geometry that can be painted in an OpenGL scene.<br />
Geometry of parts is described by their vertices, edges and faces.<br />
<br />
===Vertices===<br />
Vertices contain 3D Cartesian coordinate locations that describe the position of edges and faces.<br />
Vertices also contain information needed when rendering.<br />
Texture coordinates are stored at vertices.<br />
Glow is emitted at vertices.<br />
<br />
Render information is interpolated between vertices.<br />
Thus, the glow of a vertex will fade off to a neighboring vertex that does not glow.<br />
<br />
Vertices also contain an up direction, for lighting calculations.<br />
The face menu commands ''Flatten Vertices'' and ''Smooth Vertices'' operate on vertex up directions.<br />
<br />
===Edges===<br />
Edges are the visible lines that go from one vertex to another to reveal the boundaries of faces.<br />
Edges exist for the benefit of the designer, to see the model.<br />
Their presence or absence has no effect on the final rendering result.<br />
<br />
===Faces===<br />
Faces are flat surfaces that compose a 3D model.<br />
OpenGL paints faces in front of each other depending upon their Z-depth in the scene.<br />
This is the essence of how 3D scenes are painted by a computer.<br />
<br />
Faces have a front and a back.<br />
Faces are not visible from the back in the final rendering result.<br />
They can be seen from the back in the designer, if back face visibility is enabled.<br />
The object menu command ''Reverse Faces'' flips their facing back and forth.<br />
<br />
''Facing direction'' is determined by the direction the boundary is drawn. <br />
The boundary is clockwise when viewing the front of a face.<br />
The boundary is counterclockwise when viewing the back of a face.<br />
<br />
All faces are created equal.<br />
A face copied from one part and pasted into another becomes a face of the destination part.<br />
It is irrelevant if it came from a hull and gets added to a room.<br />
The part is the hull or room; the face is just a face.<br />
<br />
Faces do not "know" how they were created. A face created as part of an extrusion is no different from a face that is created individually. The extrusion command merely assembles faces into a desired shape.<br />
<br />
Faces should not be bent. They expect to represent a flat plane. A face should be drawn as multiple faces if a curved surface will be represented.<br />
<br />
Three foundational shapes exist.<br />
<br />
*Triangle - A face defined using a boundary of three vertices.<br />
*Quad - A face defined using a boundary of four vertices.<br />
*Face - A face defined using a boundary with three or more vertices.<br />
<br />
==Shapes==<br />
Shapes use parameter-driven methods to generate faces. Primitive shapes can provide a general starting point for more detailed modeling.<br />
<br />
The resulting shape may be modified like any other set of faces. The faces are in no way different than if an architect painstakingly built the same shape using faces. It is typical to generate a quick shape then rip it apart, to use some portion of it, or embellish it to mold it into what you want.<br />
<br />
===Extrusion===<br />
[[file:ScFigExtrusion.png|right|Extrusion]]<br />
An extrusion is formed by projecting a shape along a straight path. Examples include: rooms, beams. <br />
<br />
The creation of an extrusion begins by entering the shape that will be extruded. After the shape is entered, a window presents options to finalize the extrusion. Straight extrusion is made by simply entering the length. <br />
<br />
Faces are formed at the sides of the extrusion. Stepping allows the sides to be divided along the length of the extrusion.<br />
<br />
When the extrusion is generated, the shape follows a straight line. Both ends of the extrusion are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the extrusion shape.<br />
* Subsequent points are entered to describe the extrusion shape.<br />
* A window offers extrusion options.<br />
* Depending on extrusion options, a point may be entered to indicate the height or direction of the extrusion. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Sphere Lon/Lat===<br />
[[file:ScFigSphereLonLat.png|right|Longitude/Latitude Sphere]]<br />
A longitude/latitude sphere is divided into equal divisions of latitude and longitude. The faces are largest at the equator. The faces converge together at the poles. <br />
<br />
Creation of a longitude/latitude sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of latitude divisions and number of longitude divisions. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Sphere Uniform===<br />
[[file:ScFigSphereUniform.png|right|Uniform Sphere]]<br />
A uniform sphere is divided uniformly into triangle faces. All triangles are close to the same size. <br />
<br />
Creation of a uniform sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of divisions at the equator. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Spindle===<br />
[[file:ScFigSpindle.png|right|Spindle]]<br />
A spindle is created by spinning a shape around an axis. Objects with axial symmetry are created as spindles. Examples include: flying saucer, spool, furniture leg, column, dome, sphere, dinner plate, door knob, dish antenna. <br />
<br />
The creation of a spindle begins by entering the shape that will be spun around an axis. After the shape is entered, a window presents options to finalize the spindle. Options include the number of steps around the axis and the choice of axes. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the spindle shape.<br />
* Subsequent points are entered to describe the spindle shape.<br />
* A window offers spindle options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Tubing===<br />
[[file:ScFigTubing.png|right|Tubing]]<br />
Tubing is very similar to an extrusion except that the path may be complex, instead of simply extruding along a straight line. When the tubing shape is extruded along the path, corners are mitered appropriately.<br />
<br />
Tubing is not just for making water pipes. Tubing is used to make any closed shape that is extruded along a complex path. Examples include: piping, ducts, crown molding, baseboard trim, railroad tracks, hand rails, soffits, wall conforming consoles, base and wall cabinets, and counter tops. <br />
<br />
Creation of tubing begins by entering the path along which the tubing will travel. After the path is entered, a window presents options to finalize the tubing. <br />
<br />
Circular tubing is made by simply entering the diameter and number of sides for the tube. <br />
<br />
Other tubing shapes are created by drawing the cross section shape of the tubing. <br />
<br />
After drawing the shape of the tubing cross section, a guide point is entered on the shape. <br />
<br />
When the tubing is generated, the shape follows the path along the guide. Both ends of the tubing are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the tubing path.<br />
* Subsequent points are entered to describe the tubing path.<br />
* A window offers tubing options.<br />
* Depending on tubing options, a point may be entered to begin the tubing shape.<br />
* Subsequent points are entered to describe the tubing shape.<br />
* Guide point for the tubing shape is entered.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> displays options for completing the tube.<br />
<br />
==Jigs==<br />
<br />
Jigs are found underneath the Part menu button. There are many different types of Jigs, such as Door Jigs, Window Jigs, Launch Tube Jigs, Cutting Jigs, and Decal Jigs. They are created like any other hull or room objects, by selecting the Shape type (Extrusion, Sphere, Tubing, Spindle) and drawing the shape wanted. A physical object is then created and added to the Parts list as a Jig of the type selected. <br />
<br />
Jigs are used by positioning the created Jig object between two rooms, or between a hull and room, ensuring that the Jig penetrates both walls. Once this is positioned correctly, select all 3 objects at once using the Parts panel, and then select "Jig Cut" under the Design Menu button. The jig then cuts the walls in the shape of the jig, allowing you to create tube hallways as an example. The cut walls are then converted to the object type of the jig, such as the walls being converted into transparent glass if using a Window Jig, or door objects if using a Door Jig. <br />
<br />
Jigs can be used in order to create different types of objects, exits or walls between two rooms or the interior and exterior of a design. For example, the Door Jig creates a door between whatever rooms the Jig is placed between. The Window Jig creates a Window between the rooms, while the Launch Tube and Cutting jigs just create holes between the hull and room and cut the faces of each side, respectively. <br />
<br />
All jigs create faces between the two walls that they penetrate, in order to give walls thickness and prevent you from seeing any back-faces.<br />
<br />
==Origin==<br />
<br />
At the center of the design space is a yellow marker, drawn as three intersecting yellow lines.<br />
It does not move when the design grid moves.<br />
The immovable yellow marker is the true origin (0,0,0) location of the design space.<br />
That is the point at which a spacecraft will pivot, when it maneuvers. The origin is the insertion point when placing a building, that determines the altitude of the building on the terrain.<br />
<br />
==Obstructions, Voids, and Barriers==<br />
The obstruction model describes what areas of the design are solid and what areas of the design are not. It is used to determine where a person is standing on the floor and where they are allowed to stand, where vehicles collide with the design and where they go inside, where missiles and gunfire hit or pass through. The obstruction model describes the solid shape of the design and its accessible inside areas.<br />
<br />
The obstruction model cannot be seen. <br />
It exists somewhat like an electrical field around the design.<br />
The presence of the obstruction model can be felt by moving around the design. <br />
The menu toggle ''Blueprint, Solids Obstruct Movement'' must be checked to bump against the obstruction model.<br />
<br />
The obstruction model is created by analyzing the geometry of the design. <br />
A lot of processing effort is required to maintain the model so it is not done automatically with every modification to the design.<br />
The obstruction model is updated using the ''Blueprint, Refresh Obstructions'' menu option.<br />
<br />
The obstruction model is created from hull and landing gear parts, voids, and barriers.<br />
Each state of landing gear is represented so its obstruction shape changes when the gear is extended.<br />
<br />
The obstruction model envelopes each part individually.<br />
To get the best fitting obstruction model, it is beneficial to split elaborate hull parts into<br />
multiple simpler hull parts.<br />
<br />
The obstruction model includes a margin around hull and landing gear parts.<br />
This helps to prevent the eye camera of players from getting close enough to see inside, which breaks the illusion of solidity.<br />
It can also prevent someone from moving close enough to operate a door.<br />
<br />
''Voids'' are used to carve out the spaces accessible to players, from the solid shape created by the hull. Room parts do not contribute to the obstruction model. It is the voids that really determine where people can go inside.<br />
<br />
''Barriers'' are used to create obstructions inside voids. Sometimes it is easier to add a barrier than to change the shape of the room void. Barriers can also be used to create the floor under stairs and ramps.<br />
<br />
==Part Association==<br />
''Association'' is when a part references another part by its id number.<br />
<br />
Certain parts can be associated with certain other parts.<br />
Association is a loose connection between parts.<br />
The meaning of this association depends upon the parts involved.<br />
<br />
A part can be associated with only one other part.<br />
Any number of parts can be associated with the same part.<br />
<br />
Associations are created using the [[Designer_Menu#Associate_Parts|Part, Associate Parts]] command. Associations are removed using the [[Designer_Menu#Dissociate_Parts|Part, Dissociate Parts]].<br />
<br />
Part associations are used by the following parts.<br />
<br />
===Barriers===<br />
[[Design_Parts#Barrier|Barriers]] can be associated with a '''state of a door or landing gear'''.<br />
This determines which barriers are obstructions when the door or landing gear is operated.<br />
<br />
It is ok to associate more than one barrier with a state of a door or landing gear.<br />
<br />
===Berth Name Decals===<br />
[[Design_Parts#Decal.2C_Berth_Name|Berth name decals]] are associated with a '''berth'''.<br />
This determines which name to display on the decal.<br />
''Unassigned'' is displayed when the berth is not assigned.<br />
<br />
It is ok to associate more than one berth name decal to the same berth.<br />
<br />
===FTL Drive Service Panels===<br />
[[Design_Parts#Panel.2C_FTL_Drive|FTL drive service panel]] is associated with an '''engineer station'''.<br />
This determines which FTL drive the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
===Hull Voids===<br />
[[Design_Parts#Void.2C_Hull|Hull voids]] are associated with the '''open state of a door''', when making operable hull doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Association of a hull void and a room void to a door causes it to become a hull door. This enables the interior room void and the exterior hull void to become accessible at once, presumably overlapping each other so a person can move from one void to the other.<br />
<br />
Hull voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Room Life Support Status Panels===<br />
[[Design_Parts#Status.2C_Life_Support|Room life support status panel]] is associated with a '''room void'''.<br />
This determines which room's air pressure reading appears on the panel.<br />
<br />
It is ok to associate more than one life support status panel with a single room.<br />
<br />
===Room Voids===<br />
[[Design_Parts#Void.2C_Room|Room voids]] are associated with the '''open state of a door''', when making operable doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Room voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Walk Paths and Ladder Paths===<br />
[[Design_Parts#Path.2C_Walk|Walk paths]] and [[Design_Parts#Path.2C_Ladder|ladder paths]] are associated with the '''open state of a door''', when making operable doors.<br />
This guides NPCs to find their way through the door when it is open.<br />
<br />
Paths may be associated with any state of a door or landing gear to make access to the void dependent upon those states.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Weapon Service Panels===<br />
[[Design_Parts#Panel.2C_Weapon|Weapon service panel]] is associated with a '''fire control station'''.<br />
This determines which weapon the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
==Walk Paths==<br />
In order for [[NPC]]s to successfully move around the interior of a design with multiple rooms. <br />
<br />
The walk paths need to be above the floor, hip height is usually good. Each end of a walk path is referred to as a ''node'', NPCs will need to always have a clear line to the nearest walk path node in whatever room they are in, or else they will get stuck. Walk paths need to form a full network where each walk path has to start where another ends, so that an NPC that is standing in one room can go to their nearest walk path node and then path through the network to their destination room.<br />
<br />
[[File:WalkPathExample.png|thumb|none|Example of walk paths seen from above. Grey is room voids, blue is door room voids, red is walk path node, and green are the walk paths.]]<br />
<br />
NPC pathing strategy is fairly primitive. When they want to go somewhere, they look for the closest path end point to them that they can move straight to without obstructions. Similar logic is used to find the path node closest to the destination. There must be a complete end-to-end chain of path segments from beginning to end, from there on.<br />
<br />
===Common Mistakes===<br />
Common mistake 1. NPCs will always start by going to the nearest node in their room when they need to path to another room. If the NPC cannot find a path to its destination from its nearest walk path node it will be unable to go anywhere. A walk path is needed to connect the doors across the room from each other, so the NPC can find the closest node at the nearby door, then follow the path to the room containing the destination, then walk across the room straight to destination's room.<br />
<br />
[[File:WalkPathFail.png|thumb|none|Common mistake 1. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
Common mistake 2. NPCs will need a clear line to the nearest node in their room, or they will be unable to leave it. If there are walls or solid furniture inside the room that will prevent a NPC from having a clear line to the nearest walk path node, add a closer walk path node they can use to path to the room's exit.<br />
<br />
[[File:WalkPathFail2.png|thumb|none|Common mistake 2. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
==Finalize==<br />
When a design is complete, it undergoes a finalizing process to insure that it is usable for its intended purpose. The result of the finalize process is presented to the architect in a list. The list may contain green notes, amber warnings and red errors.<br />
<br />
* Green notes are merely informative, providing information about the finalize process.<br />
* Amber warnings bring attention to things that may indicate a design error or oversight was made. Warnings do not prevent a design from being finalized.<br />
* Red errors highlight aspects of the design that must be changed before it can be finalized.<br />
<br />
In the on line designer, a design that finalizes with no errors can be saved into the universal library. Once saved to the library, a unique blueprint number is assigned and reported back to the architect. Then the design can be built in the game and it can be published in the appropriate exchange.<br />
<br />
In the solo designer, a design that finalizes with no errors reports that it could be saved to the library if it was finalized on line.<br />
<br />
=Designer Interface=<br />
The designer interface is dominated by a first person 3D view of the design space. It is in this space that the design will appear as it is created. The mouse pointer is used in this view to select things. The mouse is also used to drag the selected things from one place to another, to move or copy them.<br />
<br />
Hover the mouse pointer over most buttons and controls to see a tool tip. Tool tips on buttons explain their function and they sometimes reveal features that are not obvious at first. The tool tips on some buttons change, depending on current conditions. <br />
<br />
==Grid==<br />
The grid is a tool for drawing, initially visible in the view as a faint grid of lines at floor level. <br />
<br />
The grid is more like a ruler, a measuring tool, than the lines on a piece of graph paper, a static medium. The architect will move and rotate the grid many times during a typical design session, as needed, wherever it helps to draw. <br />
<br />
When more than one person is in the designer, each person sees and interacts with their own grid.<br />
<br />
===Coordinate Systems===<br />
[[file:NumberLine.png|right|Number Line]]<br />
An understanding of coordinate systems is helpful to use the grid effectively. <br />
<br />
Real numbers extend to infinity, both positive and negative. This can be represented visually as a ''number line''. Whole numbers are placed at regular intervals along the line. Fractional numbers fall proportionally between the whole numbers. i.e. 1.5 is 50% of the way between 1 and 2.<br />
<br />
A number can be expressed in units of length, such as meters, in either the positive or negative direction, along the number line. The number is its ordinal value or ''ordinate''. <br />
<br />
That defines a one-dimensional vector. The absolute value of the number is its length. The sign of the number indicates the direction, either positive or negative.<br />
[[file:CoordinateSystem.png|left|Cartesian Coordinate System]]<br />
A ''Cartesian coordinate system'' is created when two number lines are placed perpendicular to each other, so they cross at 0. In a Cartesian coordinate system, each number line is called an ''axis''. They are named X and Y.<br />
<br />
A plane is formed by the intersection of the two axes, called the ''XY plane''. At any location in the plane, the X ordinate and the Y ordinate can be determined by dropping the point perpendicular to the respective axes. Knowing that, we can plot any location in the plane if we know the X ordinate and the Y ordinate at the location.<br />
<br />
The combination of ordinates is called ''coordinates''. Coordinates are expressed using notation like this (X, Y). In the picture, the coordinates of the starship are (-4, -2). The coordinates of the asteroid are (2.5, 3). Coordinates (0,0) are called the ''origin'', because that is where the numbers originate, or begin, for all axes.<br />
<br />
This is a 2 dimensional (2D) coordinate system because it expresses locations as dimensions measured along two axes.<br />
[[file:3DCoordinateSystem.png|right|3D Coordinate System]]<br />
A third axis can be added perpendicular to each of the other two axes. It is named Z. <br />
<br />
Using the coordinates of three axes, any location in space can be described. This is a 3 dimensional (3D) coordinate system because it expresses locations as dimensions measured along three axes. 3D coordinates are expressed like this (X, Y, Z).<br />
<br />
====Right Hand Rule====<br />
Which way does the Z axis go? There are two possible orientations. <br />
<br />
Hazeron uses the right-hand rule for making that determination. It can be visualized by looking at the right hand held out flat. The thumb points in the direction of the positive X axis. The index finger points in the direction of the positive Y axis. Curl the remaining fingers upward, perpendicular to the palm. The middle finger points in the direction of the positive Z axis.<br />
<br />
Mathematically, that means the Z axis is equal to the cross product of the X axis against the Y axis.<br />
<br />
<code>Z = X cross Y</code><br />
<br />
Rotations around axes are also determined using the right hand rule. The positive direction of angular rotation around each axis can be determined by grasping the axis with the right hand, with the thumb pointing in the positive direction. The fingers curl around the axis in the positive angle direction.<br />
<br />
====Absolute Coordinate System====<br />
The ''absolute coordinate system'' underlies all geometry in the designer.<br />
<br />
The absolute coordinate system is indicated by an immovable yellow marker. It is visible in the view as three short intersecting XYZ axis lines.<br />
<br />
That is where the grid starts in a new drawing. To put the grid back to that position, use the [[Designer_Menu#Position_Grid|Position Grid]] command, then choose the '''S=Reset''' option.<br />
<br />
Mathematically, the grid shows the position of a 4x4 transformation matrix. The absolute coordinate system is defined as the identity matrix.<br />
<br />
<code>1 0 0 0</code><br><br />
<code>0 1 0 0</code><br><br />
<code>0 0 1 0</code><br><br />
<code>0 0 0 1</code><br />
<br />
*Origin is at (0,0,0).<br />
*X axis vector is (1,0,0).<br />
*Y axis vector is (0,1,0).<br />
*Z axis vector is (0,0,1).<br />
<br />
===Visible Grid===<br />
The visible grid represents a 3D coordinate system. Axis lines are bright in the positive direction and dim in the negative direction. The position of X is shown as a red line. The position of Y is shown as a green line. The position of Z is shown as a blue line.<br />
<br />
X and Y lines are marked at the ends with the axis name and direction.<br />
<br />
The XY plane contains lines parallel to the X and Y axes, forming a visible grid. Regular interval spacing between the grid lines is controlled by a combo box control on the reference tool bar. <br />
<br />
Grid colors are controlled on the Designer page of the Settings window.<br />
<br />
[[Designer_Menu#Show_Grid|Grid visibility]] can be turned off. <br />
<br />
Grid rounding can be turned on or off, independently of the grid visibility state.<br />
<br />
===Grid as a Tool===<br />
All drawing takes place in the 3D coordinate system of the grid. Position the grid to draw anywhere in the drawing, using coordinates relative to the subject matter. This is typically done frequently while creating a design, using commands accessed on the [[Designer#Reference_Tool_Bar|reference tool bar]] and the [[Designer_Menu#Helpers|helpers menu]].<br />
<br />
[[Designer#Coordinate_Input|Coordinates entered into the input tool bar]] are relative to the grid. <br />
<br />
Freehand drawing happens in the plane of the grid. In the view, the location of the mouse pointer is projected straight into the screen until it intersects the XY plane of the grid, regardless of the visibility state of the grid. If ''Snap to Grid'' is enabled, that location will be rounded to the nearest grid line intersection. Various snapping switches can be enabled. Grid rounding behavior is overridden when the mouse pointer snaps to existing geometry.<br />
<br />
Most drawing commands terminate/replace the current drawing command; grid positioning commands suspend the current drawing command instead. Whenever a drawing command is requesting point input, a grid positioning command can be invoked. Upon termination of the grid positioning command, the suspended drawing command will resume its request for point input.<br />
<br />
When selected geometry is copied to the clipboard, the geometry on the clipboard is in the coordinate space of the grid, at the time of the copy.<br />
<br />
When geometry is pasted from the clipboard, it is placed in the coordinate space of the grid, at its location at the time of the paste.<br />
<br />
For example, move the grid to the center of a selected part. Copy that part to the clipboard. Move the grid. Paste the clipboard; it will be added at the new location of the grid. Use [[Designer_Menu#Paste_At|Paste At]] to place more than one of them.<br />
<br />
==Menu Bar==<br />
[[file:DesignerMenu.png|right|Menu Bar]]<br />
At the top of the designer interface is a menu bar. Most functions of the program can be accessed using the menu bar.<br />
<br />
See [[Designer_Menu|designer menu]] for a list of the items on the menu bar.<br />
<br />
==Input Tool Bar==<br />
[[file:DesignerInputBar.png|right|Input Tool Bar]]<br />
The ''Input Tool Bar'' appears below the menu bar, at the left. It can be moved by dragging the dotted grip at the left end. Tool tips on the buttons explain their function.<br />
<br />
===Design Properties===<br />
Equivalent to the [[Designer_Menu#Properties|Blueprint, Properties]] menu item.<br />
<br />
===Refresh Obstructions===<br />
Equivalent to the [[Designer_Menu#Refresh_Obstructions|Blueprint, Refresh Obstructions]] menu item.<br />
<br />
===Solids Obstruct Movement===<br />
Equivalent to the [[Designer_Menu#Solids_Obstruct_Movement|Blueprint, Solids Obstruct Movment]] menu item.<br />
<br />
===Gravity===<br />
Equivalent to the [[Designer_Menu#Gravity_On.2FOff|Blueprint, Gravity On/Off]] menu item.<br />
<br />
===Preview===<br />
Equivalent to the [[Designer_Menu#Preview_On.2FOff|Blueprint, Preview On/Off]] menu item.<br />
<br />
===Preview Sun Position===<br />
Equivalent to the [[Designer_Menu#Preview_Settings|Blueprint, Preview Settings]] menu item.<br />
<br />
===Construct Building===<br />
Equivalent to the [[Designer_Menu#Preview_Place_Building|Blueprint, Preview Place Building]] menu item.<br />
<br />
===Preview People===<br />
Equivalent to the [[Designer_Menu#Preview_People|Blueprint, Preview People]] menu item.<br />
<br />
===Coordinate Input===<br />
Many design commands will ask the architect to enter a 3D point location. A location can then be entered by clicking with the mouse pointer in the view window. Alternatively, locations can be entered into the coordinate input box, at the end of the [[Designer#Input_Tool_Bar|Input Tool Bar]].<br />
<br />
3D coordinates are entered as '''X,Y,Z''' values, which are positive or negative offsets along the '''X''', '''Y''' and '''Z''' axes. <br />
Coordinates are not bracketed with parentheses.<br />
Omitted values are 0. e.g. <i>1,,2</i> is the same as <i>1,0,2</i>; <i>p2</i> is the same as <i>p2,0,0</i>; <i>a,3</i> is the same as <i>a0,3,0</i>.<br />
<br />
Polar coordinates are entered as '''pD,A,I''' values: '''D''' is distance from the origin; '''A''' is angle around the Z axis, positive counterclockwise and negative clockwise; '''I''' is the angle of inclination off the XY plane, positive above and negative below.<br />
<br />
Coordinates are relative to the location and orientation of the [[Designer#Grid|grid]] unless specified otherwise.<br />
<br />
Coordinates prefixed with '''a''' are ''absolute''. Absolute coordinates are relative to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]] of the design, ignoring the grid. e.g. ''a1.25,2.3,-4.5'' or ''ap2.5,-30,10''.<br />
<br />
Distances are interpreted in units depending upon the ''unit of measure'' setting. Whole numbers are interpreted as whole units of measure. For example, if the unit of measure is meters, which is the default, then 10 means 10 meters. Unit of measure is configured on the Designer page of the Settings window. Unit of measure can be changed at any time while drawing.<br />
<br />
====Rotating====<br />
Some design commands will ask the architect to enter a rotation value. e.g. rotate selected objects.<br />
<br />
Angles are entered in degrees.<br />
<br />
When responding to a request for rotation, input into the Coordinate Input box is interpreted as 3D rotation angles around the X, Y and Z axes. e.g. To rotate 45 degrees around the Z axis, enter 0,0,45, or simply ,,45.<br />
<br />
Positive and negative direction of rotation is determined by the [[Designer#Right_Hand_Rule|right hand rule]].<br />
<br />
====Scaling====<br />
Some design commands will ask the architect to enter a scale value. e.g. stretch selected objects.<br />
<br />
When responding to a request for scaling, input into the Coordinate Input box is interpreted as 3D stretch factors along the X, Y and Z axes. e.g. To double the overall size, enter 2,2,2; to reduce the X dimension by half, enter .5,1,1.<br />
<br />
====Move/Copy====<br />
When no design command is active, the coordinate input box can be used to move or copy the objects that are selected.<br />
* '''Move parts''' by entering a coordinate. The objects that are selected will be moved using the vector entered.<br />
* '''Copy parts''' by entering a coordinate while holding the <code>Ctrl</code> key. The objects that are selected will be copied and moved using the vector entered.<br />
<br />
==Reference Tool Bar==<br />
[[file:DesignerReferenceBar.png|right|Reference Tool Bar]]<br />
The ''Reference Tool Bar'' appears below the menu bar, to the right of the input tool bar. It can be moved by dragging the dotted grip at the left end.<br />
<br />
===Face Mode===<br />
Equivalent to the [[Designer_Menu#Face_Mode|Face, Face Mode]] menu item.<br />
<br />
===Isolate Parts===<br />
Equivalent to the [[Designer_Menu#Isolate_Parts|Face, Isolate Parts]] menu item.<br />
<br />
===Find Vertices===<br />
Equivalent to the [[Designer_Menu#Find_Vertices|Helpers, Find Vertices]] menu item.<br />
<br />
===Find Edges===<br />
Equivalent to the [[Designer_Menu#Find_Edges|Helpers, Find Edges]] menu item.<br />
<br />
===Find Faces===<br />
Equivalent to the [[Designer_Menu#Find_Faces|Helpers, Find Faces]] menu item.<br />
<br />
===Show Edges===<br />
Equivalent to the [[Designer_Menu#Show_Edges|View, Show Edges]] menu item.<br />
<br />
===Show Faces===<br />
Equivalent to the [[Designer_Menu#Show_Faces|View, Show Faces]] menu item.<br />
<br />
===Show Back Faces===<br />
Equivalent to the [[Designer_Menu#Show_Back_Faces|View, Show Back Faces]] menu item.<br />
<br />
===Move Grid===<br />
Equivalent to the [[Designer_Menu#Move_Grid|Helpers, Move Grid]] menu item.<br />
<br />
===XY Grid===<br />
Equivalent to the [[Designer_Menu#XY_Grid|Helpers, XY Grid]] menu item.<br />
<br />
===XZ Grid===<br />
Equivalent to the [[Designer_Menu#XZ_Grid|Helpers, XZ Grid]] menu item.<br />
<br />
===YZ Grid===<br />
Equivalent to the [[Designer_Menu#YZ_Grid|Helpers, YZ Grid]] menu item.<br />
<br />
===Position Grid===<br />
Equivalent to the [[Designer_Menu#Position_Grid|Helpers, Position Grid]] menu item.<br />
<br />
===Grid Spacing===<br />
Changes the spacing between lines in the grid.<br />
<br />
===Show Grid===<br />
Equivalent to the [[Designer_Menu#Show_Grid|Helpers, Show Grid]] menu item.<br />
<br />
===Grid Follows Work===<br />
Equivalent to the [[Designer_Menu#Grid_Follows_Work|Helpers, Grid Follows Work]] menu item.<br />
<br />
===Snap to Grid===<br />
Equivalent to the [[Designer_Menu#Snap_to_Grid|Helpers, Snap to Grid]] menu item.<br />
<br />
===Snap to Edges===<br />
Equivalent to the [[Designer_Menu#Snap_to_Edges|Helpers, Snap to Edges]] menu item.<br />
<br />
===Snap to Vertices===<br />
Equivalent to the [[Designer_Menu#Snap_to_Vertices|Helpers, Snap to Vertices]] menu item.<br />
<br />
===Coordinate Feedback===<br />
Shows coordinates relevant to the current drawing operation.<br />
<br />
When responding to coordinate input, the coordinate at the mouse pointer position is shown, relative to the grid. That coordinate is usually the location where the mouse pointer hits the grid, though it may change if the pointer snaps to an existing object.<br />
<br />
When dragging objects using the mouse pointer, the offset of the drag is shown. Dragging usually occurs in the grid plane, though it may change if the pointer snaps to an existing object.<br />
<br />
==Parts Window==<br />
[[file:DesignerParts.png|right|Parts]]<br />
The ''Parts'' window is displayed using the F6 key or the menu. It is typically docked at the right side of the designer window.<br />
<br />
The parts list contains every [[Design_Parts|part]] that is in the current design. This includes hull objects, imported meshes, rooms, berths, etc. This allows you to easily see everything within the design at once, and also provides buttons for toggling the visibility of each part, as well as other part properties. <br />
<br />
The parts list is also useful for selecting parts and deleting parts.<br />
<br />
===Id Column===<br />
Every part in a design is assigned a unique id number. Part id numbers may range from 1 to 65,535.<br />
<br />
Part id numbers are not preserved when copied and pasted between designs. Parts are assigned new ids when pasted into a design.<br />
<br />
===Name Column===<br />
The name column starts with an icon that indicates the kind of the [[Design_Parts|part]].<br />
<br />
The icon is followed by a text name assigned to the part. Names are assigned by the designer based on the type and properties of the part.<br />
<br />
===Group Column===<br />
The group column shows the name of the group assigned to each part. <br />
<br />
Select one or more parts and right-click to assign them to a group. Group names are chosen by the architect. Parts are assigned to groups as needed.<br />
<br />
Groups organize parts together. <br />
<br />
In building and spacecraft designs, groups define the rooms.<br />
* Group names become room names in the final blueprint, if the group contains a room void.<br />
* Room voids in the same group have the same internal air pressure.<br />
* All parts in the same group are lit similarly, according to room lighting.<br />
The '''Hull''' group is reserved for hull parts; it is never considered to be a room.<br />
Hull parts are lit according to the external environment of the building or spacecraft.<br />
* Parts with a blank group name are grouped with the hull, for lighting.<br />
<br />
In fence and wall blueprints, two groups are required: '''Post''' and '''Section'''.<br />
<br />
The '''Post''' group appears at each post of the final fence.<br />
The blueprint origin is where the post is placed on the ground,<br />
with +Z up according to the direction of gravity at the placement location.<br />
The post is oriented to align with the fence line on the ground.<br />
<br />
The '''Section''' group forms the fence between the posts, from post location to post location.<br />
A section of fence is designed from the origin, extending along the +X axis, with +Z up at each end.<br />
The +X extent of the section defines the typical post spacing of the fence.<br />
<br />
When placed on a world, the fence section is morphed to fit between two post locations.<br />
Post locations may vary in altitude and gravity direction and their spacing may vary from the typical section<br />
that is drawn.<br />
* The section origin, at Z=0, is placed at the first post.<br />
* The section +X extent, at Z=0, is placed at the second post.<br />
* The section geometry stretches accordingly.<br />
<br />
{| class="wikitable"<br />
! <br />
! On<br />
! Off<br />
! Description<br />
|-<br />
! Visibility Toggle<br />
| style="text-align:center;" | [[file:ScShow.png|40px]]<br />
| style="text-align:center;" | [[file:ScHide.png|40px]]<br />
| Toggles whether or not the part is visible.<br />
|-<br />
! Lock Toggle<br />
| style="text-align:center;" | [[file:ScLock.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnlock.png|40px]]<br />
| Toggles whether or not the part can be modified.<br />
|-<br />
! Omit Toggle<br />
| style="text-align:center;" | [[file:ScOmit.png|40px]]<br />
| style="text-align:center;" | [[file:ScInclude.png|40px]]<br />
| Toggles whether or not the part is included in the final design.<br />
|-<br />
! Seal Toggle<br />
| style="text-align:center;" | [[file:ScSeal.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnseal.png|40px]]<br />
| Toggles whether or not the part is sealed.<br />
|}<br />
<br />
==='''V'''isibility Column===<br />
Shows and controls the visibility state of parts. <br />
<br />
Parts can be made invisible to simplify the design view. Invisible parts are not selected when using the mouse in the scene. Editing functions do not operate on invisible parts.<br />
<br />
Left click to toggle the visibility of the selected parts. Right-click to choose visibility from a menu.<br />
<br />
Making a part invisible does not exclude it from the final design. Invisible parts are included in the final design.<br />
<br />
==='''L'''ock Column===<br />
Shows and controls the locked state of parts.<br />
<br />
Lock parts to protect them from accidental editing. The locked state of parts has no effect in the final design.<br />
<br />
Left click to toggle the lock of the selected parts. Right-click to choose the locked or unlocked state from a menu.<br />
<br />
==='''O'''mit Column===<br />
Shows and controls whether a part is omitted from the final design.<br />
<br />
Omit parts to prevent them from being included in the final design. Omitted parts are excluded from the design analysis report. Some parts are always omitted; they cannot be included.<br />
<br />
Excluded parts can be useful for reference purposes, as a way to keep images or geometry in the design that are not intended to be part of the final design. Parts that exist only as design tools are omitted regardless of this setting, e.g. door jigs.<br />
<br />
==='''S'''eal Column===<br />
Shows and controls whether a part is sealed.<br />
<br />
Parts remember who their architect was. Seal parts to prevent other architects from editing them in face mode. '''Only the architect of a part can seal or unseal the part.'''<br />
<br />
Sealed parts can be used in part mode like other whole parts. They can be moved, stretched, rotated, copied to the clipboard and saved into files. Whole part editing operations are mostly disabled when a sealed part is selected, to protect the design of the part from changes.<br />
<br />
A sealed part can be used as a jig but it cannot be cut using a jig.<br />
<br />
Only the architect of a sealed part can enter face mode when the part is selected. This prevents individual faces of sealed parts from being modified or copied to the clipboard by other architects.<br />
<br />
The design report lists all architects whose parts are included in a design.<br />
<br />
===State Column===<br />
Shows the current state of parts that can have multiple states, such as doors that can be open or closed. <br />
<br />
On some kinds of parts, a slide bar is shown for adjusting the transparency of the part.<br />
<br />
==Texture Wrapper Window==<br />
[[file:DesignerTextureWrapper.png|right|Texture Wrapper]]<br />
The ''Texture Wrapper'' window is displayed using the Shift+F6 key or the menu. It can be docked stacked on top of the parts window; tabs will appear at the bottom, to choose between them.<br />
<br />
'''The texture wrapper is only used in face mode.'''<br />
<br />
Texture wrapper is a tool for positioning textures on faces. <br />
Texture wrapper only operates on faces that are selected. <br />
The designer must be in face mode to select faces. <br />
<br />
The viewing area shows the texture applied to the faces. <br />
Edge lines of the faces are painted where the texture is mapped to them. <br />
The viewing area is blank when the texture differs between the selected faces. <br />
<br />
A combo box contains the current texture palette. <br />
Change the texture of faces by choosing a texture in the combo box. <br />
<br />
===Palette===<br />
A design has a palette of textures. <br />
Each face may refer to one of the textures in the palette for its primary surface texture. <br />
<br />
Faces reference palette entries. <br />
If the texture in a palette entry is changed, faces that refer to that palette entry will also change. <br />
<br />
Texture palette entries can be customized. <br />
Each palette entry can be loaded with a custom picture file or it can be configured to use one of the built-in <br />
textures included with the designer. <br />
<br />
The ''Material'' entry changes based on the material used to manufacture the design. <br />
Manufacturing material is configured in the design properties. <br />
The material texture can be overridden by loading a custom texture. <br />
When a custom texture is selected for the material entry, it no longer changes according to the manufacturing <br />
material.<br />
<br />
This is the material entry's only special behavior. <br />
The texture may be used on any faces that should change appearance based on material. <br />
<br />
The textures used for materials exist among the built-in choices included with the designer. <br />
To use one of those textures without it changing due to manufacturing material, <br />
simply assign it to a different palette entry. <br />
<br />
Custom picture files are limited to a size of 256x256 pixels. <br />
Pictures are automatically reduced to fit within that size, while maintaining aspect ratio. <br />
<br />
===Unwrap===<br />
Unwraps the faces onto the texture. A window presents options for unwrapping the faces.<br />
<br />
Texture unwrapper is a tool for automatically positioning textures on faces. <br />
Texture unwrapper only operates on faces that are selected.<br />
The designer must be in face mode to select faces.<br />
<br />
[[file:ScFigUnwrap.png|right|Unwrap Texture]]<br />
The term ''unwrap'' derives from the notion of unwrapping or unfolding the faces of a 3D solid onto a flat surface.<br />
The flat surface is the texture.<br />
<br />
Texture unwrapper is affected by the position and orientation of the grid.<br />
In particular, the texture pattern will start where the grid center corresponds to a face.<br />
<br />
A texture is selected from the design's texture palette.<br />
It will be applied to the selected faces.<br />
The size of the texture is specified, using the ''unit of measure'' configured in settings.<br />
<br />
Texture unwrapper offers several strategies to try keeping a continuous texture pattern around corners.<br />
Sometimes one strategy will produce a better result than another.<br />
<br />
Angle tolerance is used by all unwrap strategies except Unwrap by Face.<br />
Angle tolerance enables the unwrapper to group together faces with similar facing.<br />
<br />
'''Unwrap by Face''' maps each face individually.<br />
Texture is aligned to the plane of each face, with origin aligned to the grid center.<br />
Texture pattern restarts at each new face, without regard to others.<br />
No attempt is made to maintain a continuous texture pattern around corners.<br />
<br />
'''Unwrap by Facing''' maps faces in groups according to their facing.<br />
Texture is mapped to each group using a plane projection, with its origin aligned to the grid center.<br />
Texture pattern is continuous across all faces in each group.<br />
No attempt is made to maintain a continuous texture pattern around corners, between groups.<br />
<br />
'''Unwrap by Edges''' maps faces like Unwrap by Facing.<br />
Texture pattern continues around corners where possible.<br />
<br />
'''Unwrap by Edges Horizontally''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping horizontally rather than vertically.<br />
<br />
'''Unwrap by Edges Vertically''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping vertically rather than horizontally.<br />
<br />
===Plane Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a plane projection. Position of the grid plane affects the result.<br />
<br />
Plane projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a straight parallel projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture. <br />
<br />
The texture is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern is increasingly distorted as the angle of faces gets closer to perpendicular to the <br />
direction the texture is projected. <br />
The pattern smears along perpendicular faces.<br />
<br />
===Cylindrical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a cylindrical projection. Position of the grid plane affects the result.<br />
<br />
Cylindrical projection texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a cylindrical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture and the number of times the texture repeats around the cylinder. <br />
<br />
The texture is stretched into a cylinder that is aligned with the red X axis of the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows around the cylinder with distance from the axis. <br />
The pattern is sized along the X axis according to user choices, so it does not stretch in the X axis direction. <br />
<br />
Cylindrical mapping is useful for applying textures to spindles. <br />
Center the grid on the spindle's rotation axis, with the red X axis aligned to the spindle's rotation axis. <br />
Cylindrically apply a texture.<br />
<br />
===Spherical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a spherical projection. Position of the grid plane affects the result.<br />
<br />
Spherical projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a spherical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the number of times the texture repeats around the equator of a sphere. <br />
<br />
The texture is stretched into a sphere that is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
The center of the projection is the center of the grid plane. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows with distance from the center.<br />
<br />
===Repeat===<br />
Toggles a repeating pattern of the texture image, to aid in positioning. All textures repeat, regardless of this setting. <br />
<br />
The viewing area only shows faces that are selected in the scene. Vertices are highlighted when selected. Vertex selection matches the vertices selected in the scene. Vertices can be selected/deselected in the scene also. <br />
<br />
===Mouse Controls===<br />
* Left click an unselected vertex to select it. <br />
* Ctrl+left click a vertex to toggle its selection. <br />
* Left click a selected vertex, then drag, to move all selected vertices. <br />
* Left click in empty space to deselect all vertices; then drag, to drag a box to select vertices. <br />
* Ctrl+left click in empty space, then drag, to drag a box to toggle selection of vertices. <br />
* Right click then drag to pan the display. <br />
* Wheel to change view magnification. <br />
* Ctrl+wheel to change view magnification in larger steps. <br />
<br />
===Key Commands===<br />
*<code>A</code> selects all vertices. <br />
*<code>G</code> grabs selected vertices to move them. <br />
*<code>R</code> rotates selected vertices. <br />
*<code>S</code> stretches selected vertices. <br />
*<code>X</code> constraint. While moving, moves in X only. While stretching, stretches in X only. <br />
*<code>Y</code> constraint. While moving, moves in Y only. While stretching, stretches in Y only.<br />
<br />
==Design Checklist==<br />
The designer offers a checklist as a guide to completing a design. It provides general how-to instructions on how to design a spacecraft.<br />
<br />
===Properties===<br />
Configure the structure. '''Required.'''<br />
<br />
The ''structure'' tells the designer what you are trying to make. Configure this right away. <br />
<br />
The structure affects the design analysis. It also affects the spacecraft when viewed in ''Preview Mode''. <br />
<br />
===Hull===<br />
Construct the hull. '''Required.'''<br />
<br />
''Hull'' parts are the most visible part of a spacecraft when it is seen from the outside. This is the spacecraft people see; make the hull look nice. <br />
<br />
Hull parts determine the volume of the spacecraft. Internal subsystems are allocated from this volume. Parts inside the hull do not reduce hull volume. <br />
<br />
Hull parts may overlap each other. Hull parts may not form separated pieces of a spacecraft. Hull parts must form a single contiguous spacecraft. <br />
<br />
Do not ''join'' hull parts together when done. Collision logic prefers simple hull parts instead of complicated hull parts.<br />
<br />
A concave depression into a hull part is always obstructed. Use hull voids to gain access to obstructed areas if needed. <br />
<br />
Hull parts are not required to form airtight shells; they can have holes. <br />
<br />
If you can see completely through a hull part, through an area that should be solid, its calculated volume may be incorrect. ''Door'', ''window'', ''room'' and ''room void'' parts inside the hull part will block such openings during volume calculations. It may be necessary to add faces, rooms, or room voids to a hull part with holes through it. <br />
<br />
A hull can be created by importing a 3DS or STL file. Many free spacecraft models are available on the Internet. They typically define only the outside shell and they rarely include textures, which makes them ideal for use here. <br />
<br />
The origin (0,0) location after the grid is reset is the center of gravity (CG) of the spacecraft. The CG is the point about which the spacecraft will pitch, roll, and yaw. <br />
<br />
To move the CG of a spacecraft, all the parts must be moved. Unhide and unlock all parts before proceeding. Position the grid at the desired CG and orientation: +X is starboard, +Y is forward, +Z is up. Select all the parts and ''Edit, Cut'' them. Use the ''Position Grid'' function and press '''S''' to reset the grid. ''Edit, Paste'' the parts at their new location. <br />
<br />
===Turrets===<br />
Construct gun turrets.<br />
<br />
A turret consists of a base that spins and an optional gun that tilts. The turret is remotely operated by a troop at a control station aboard the spacecraft. <br />
<br />
Turrets need an unobstructed field of fire. Turrets can hit their own hull and its occupants; NPCs avoid doing so. <br />
<br />
Draw the base of a turret on the hull using a mesh part. Select the base and use the ''Make Turret'' function. The function prompts for the base pivot point and pivot axis. If the turret spins backward when operated, use the ''Properties, Turret Base Position'' function to flip the pivot axis in the opposite direction. <br />
<br />
At this point the turret can be used. Gunfire will emit from the center of the turret base.<br />
<br />
To add a gun to a turret, right-click the Turret in the parts list and select ''Add State'' to add a Gun. Change the turret to the Gun state and draw a gun in face mode. Use the ''Properties, Turret Gun Position'' function to configure where the gun tilts, where it shoots, and where the gunner sees out when operating the turret. <br />
<br />
In the designer, a turret shows the faces of both the base and gun only when it is in the Gunner Screen state. Otherwise a turret only shows the faces appropriate to its current state.<br />
<br />
===Lights===<br />
Construct exterior lights.<br />
<br />
Exterior lights add visibility and draw attention. Interior lights are not represented by any part. <br />
<br />
The appearance of exterior lights can be created using mesh or hull parts. Hull parts have the advantage of adding hull volume. <br />
<br />
''Light Lens'' parts glow when the headlight of the spacecraft is on. Use ''Make Light Lens'' to convert each selected part into a light lens. Each lit light lens adds a glow sprite at the center of the part. <br />
<br />
''Nav Light Lens'' parts glow when the nav lights of the spacecraft are on. Use ''Make Navigation Light Lens'' to convert each selected part into a nav light lens. Each lit nav light lens adds a glow sprite at the center of the part. <br />
<br />
''Rotating Beacon Lens'' parts glow when the rotating beacons of the spacecraft are on. Position the grid to establish the beacon rotation axis, which will align with the Z axis when the beacon is made. Use ''Make Rotating Beacon Lens'' to convert each selected part into a rotating beacon. Each lit rotating beacon adds a rotating glow sprite at the center of the part. <br />
<br />
''Strobe Lens'' parts blink when the strobe lights of the spacecraft are on. Use ''Make Strobe Lens'' to convert each selected part into a strobe. Each lit strobe adds a glow sprite at the center of the part. <br />
<br />
===Landing Gear===<br />
Construct landing gear.<br />
<br />
Landing gear is optional. The spacecraft will settle on its hull without landing gear. <br />
<br />
Landing altitude is determined by the bottom extent of the spacecraft. Landing gear changes the extents of the spacecraft. In the presence of more than one landing gear part, the one that reaches the farthest down will determine the landing altitude. <br />
<br />
Build each landing gear using a mesh part. Use the ''Make Landing Gear'' function to convert the mesh into a ''Landing Gear'' part. <br />
===Rooms===<br />
Construct rooms inside the hull. '''Required.'''<br />
<br />
''Room'' parts do not contribute to collision logic. They exist only for appearance. Rooms are what players see most of the time they are aboard; make them look nice. <br />
<br />
Separate rooms should be spaced apart slightly, to allow for wall thickness between them. <br />
<br />
If the design will incorporate turbo lifts, draw one room for each turbo lift at only one of its stops. That room will become a turbo lift car in another step, after more parts have been added. <br />
<br />
===Meshes===<br />
Construct details.<br />
<br />
Use meshes to create '''control stations''', furnishings, equipment, and other interesting details. <br />
<br />
Meshes do not create an obstacle to movement. They exist only for appearance. Make them look nice. <br />
<br />
===Doorways===<br />
Cut doorways. '''Required.'''<br />
<br />
A ''door jig'' cuts a doorway from one room to another room, or from a room to a hull. The door jig cuts the faces, adds a lining of faces to the hole, and creates a ''Door'' part in the hole. <br />
<br />
Place a door jig into each room that will become a turbo lift. '''Do not cut doors into turbo lifts at this time.'''<br />
<br />
Jigs do not work when placed flat against a face. Raise jigs slightly above the floor before cutting doors.<br />
<br />
Jigs aren't perfect; they sometimes create too many or not enough faces when lining the hole. You may have to delete excess faces or draw missing faces there. <br />
<br />
===Windows===<br />
Cut windows. '''Required.'''<br />
<br />
A ''window jig'' cuts a window opening from one room to another room, or from a room to a hull. A window jig can also cut a window into a hull where no room exists on the inside. The window jig cuts the faces, adds a lining of faces to the hole, and creates a ''Window'' part in the hole. <br />
<br />
Windows are for human players. People like to see out; make lots of windows. NPCs do not need windows to operate a spacecraft. <br />
<br />
Translucent windows give the appearance of occupancy in areas where there may be no rooms at all. They do this by lighting and darkening while the spacecraft has power, which gives the impression that someone is in there. <br />
<br />
In some cases an entire hull part or some faces on a hull part would make a nice window. Use ''Split Faces'' in face mode to make a separate part from selected faces. The ''Make Window'' function converts the part into a window. <br />
<br />
===Control Stations===<br />
Add control stations. '''Required.'''<br />
<br />
Control stations are used by players and NPCs to operate subsystems of the spacecraft. In some cases the creation of the control station causes the appropriate subsystem to exist in the design. <br />
<br />
The simplest control stations to draw are the swivel consoles with chairs. They are simple because a built in model of a control station is used. You only have to specify the location and spin of the control station.<br />
<br />
Meshes are used to create the appearance of integrated control stations. The functions that create integrated control stations will prompt for the operator's location and body position. <br />
<br />
Some stations request additional information such as the screen position. The screen position can be changed by moving the face in face mode. Additional information can be changed using properties functions. <br />
<br />
Turrets require an integrated control station to operate them. Select a turret to add an integrated turret control station. <br />
<br />
Weapon stations request the weapon emit location. These weapons are omnidirectional and they do not hit their own hull or its contents. <br />
<br />
Troop posts provide a location for troops to be stationed when they are not operating a turret. <br />
<br />
===Panels===<br />
Add service and other panels.<br />
<br />
Service panels create a place at which a subsystem of the spacecraft can be repaired manually. In the absence of a service panel, a subsystem can only be repaired by an airport repair shop. Other panels simply provide information. <br />
<br />
Some service panels must be associated with the control station of the appropriate subsystem, to know what subsystem the panel is intended to service.<br />
<br />
''Alert Status Panels'' act as the speaker grill for alert tones. Alert sounds are emitted from alert status panels.<br />
<br />
''Room Life Support Panel'' must be associated with the room void it monitors. <br />
<br />
''World Map Panel'' aspect ratio is 2:1 for spherical worlds. Aspect ratio is 10:1 for ringworld arc sections. <br />
<br />
===Vehicles===<br />
Add vehicle parking spots.<br />
<br />
''Specific vehicle parking spots'' show a solid vehicle model in the spot with a small icon beneath them. <br />
<br />
''General vehicle parking spots'' show a bounding box that fits any vehicle that can park there. e.g. ''Ground vehicle parking spot'' shows a box large enough for any ground vehicle in the game. <br />
<br />
Spacecraft fill their vehicle parking spots by teleporting new vehicles from buildings in trade range. <br />
<br />
With a ''vehicle transporter'' in the design, vehicle parking spots act as vehicle transporter pads. A vehicle does not have to be able to move from its parking spot. The driver simply calls for transport on the comm. <br />
<br />
''Space vehicle launcher'' creates a launch pad and a launch path. While launching, a space vehicle travels along the path. It is not obstructed by the hull or anything else while launching. Voids are not required at the launcher or along the path. The exit end of the path must be clear of the hull. <br />
<br />
When a pilot requests launch, their space vehicle is teleported to an available launch pad. Doors associated with the launcher are opened and the vehicle is launched along the path. The departure speed of the vehicle is determined by the length of the path. Launcher doors close automatically after the vehicle is launched. <br />
<br />
''Space vehicle recovery subsystem'' creates a virtual runway for arriving space vehicles. It should be placed outside the hull. Allow for botched landings; sometimes a pilot has to go around. A space vehicle that stops along the centerline of the runway is teleported to an empty parking spot. <br />
<br />
===Details===<br />
Add berths and other details.<br />
<br />
''Berths'' define the accommodations for captain, officers, crew, troops and passengers. Berths are optional. <br />
<br />
When an avatar dies who has taken a berth aboard a spacecraft, they reappear in their berth aboard that spacecraft if the life support subsystem is functioning and the spacecraft has not been captured by an enemy. On a spacecraft with no berths, the avatar reappears at the helm. <br />
<br />
''Contrail emitters'' help to see and identify spacecraft. Contrails are much easier to see than a fast moving sparkling pixel. Contrails are colored according to each empire's preferences. The size of the contrail emitter part determines the size of the contrail.<br />
<br />
If no contrail emitters are added, a single contrail emitter will automatically be added at the center of the aft extents. This is not done for space stations. <br />
<br />
''Light bulb'' is the source of light emitted by the spacecraft when the headlights switch is on. The light can be omnidirectional or focused into a cone. The light bulb part is not visible in the final spacecraft. Emitted light is not shadowed by faces of the spacecraft. <br />
<br />
''Remote cameras'' are accessed by players using the command station. <br />
<br />
''Items'' can be placed in the design. Items are populated from the city's inventory when the spacecraft is manufactured. Players can take these items. Items are replenished from the spacecraft's cargo. <br />
<br />
===Voids===<br />
Carve out void spaces and add barriers. '''Required.'''<br />
<br />
The hull is treated as a solid mass through and through. Room meshes have no effect on this. <br />
<br />
Voids carve out the areas in which people, vehicles and other spacecraft can go. Barriers create obstacles inside those carved out areas. Voids and barriers are not visible in the final model. <br />
<br />
When two voids are placed next to each other, overlap them slightly. This assures a positive handoff as something moves from one void to another, without bouncing off an infinitesimally thin wall in between.<br />
<br />
Each void and barrier must form a single airtight bubble. There can be no holes or missing faces. Overlapping or excess faces will cause trouble. Concave areas are ok. <br />
<br />
Do not ''join'' voids together. It is better to have a few simple intersecting voids than one single complicated void. <br />
<br />
''Room Voids'' are placed inside rooms, turbo lifts and on ramps. Each operable door must have a room void in the doorway to connect the room voids accessed by the door. <br />
<br />
Voids must be as simple as possible with very few faces. Rooms can be very complex, bumpy, curvy and full of holes. Do not conform to every bump and bulge in the walls. Build simple voids just inside the bumps and most people will never notice. <br />
<br />
''Hull Voids'' allow access to areas of the hull that should '''not''' obstruct movement. <br />
<br />
''Barriers'' create obstacles to movement inside room voids. Barriers can be used to create stairs and ramps or to surround things the player should not walk through. Barriers should use extremely few faces. <br />
<br />
When blocking a large portion of a room void, consider making the room void smaller instead.<br />
<br />
Stairs can be created using a mesh that looks like stairs and a ramp-shaped barrier, instead of shaping the barrier to fit every step. Less faces are needed to make the barrier and movement on the stairs is smoother; it is also easier for small or legless creatures. <br />
<br />
===Turbo Lifts===<br />
Make turbo lifts functional.<br />
<br />
This step is required if you are building any turbo lifts in the design. Two concepts are introduced: doors and paths. They are discussed in detail in the following '''Doors''' and '''Paths''' steps. <br />
<br />
Select the turbo lift room, room void, and door jig for one turbo lift. Use the ''Make Turbo Lift'' function to fuse them together into a ''Turbo Lift'' part.<br />
<br />
Right-click on the turbo lift in the parts list and select ''Add Stop''. Provide a name for the current stop of the turbo lift. Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. The turbo lift must be outside a room to cut into it. The turbo lift must be inside a hull to cut out of it. <br />
<br />
Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
For each additional stop, do the following. <br />
<br />
* Add a stop name for the next stop position. The current stop of the car does not matter. <br />
<br />
* Use the ''Align Turbo Lift Stop'' function to position the car at the newly added stop. The turbo lift can be moved more than once while aligning it; only the final position matters. It is essential to use the ''Align Turbo Lift Stop'' command. Mouse drag moving and cut/copy/paste will change the positions of all stops at once. <br />
<br />
* Select the turbo lift and the adjoining room or hull and use the ''Jig Cut'' function to cut the door. <br />
<br />
* Draw a room void inside the new doorway and a walk path through the doorway. Associate them with the open state of the new ''Turbo Lift Door''.<br />
<br />
* When a turbo lift cuts through a hull, an exterior turbo lift door is created. Add a hull void there and associate it with the open state of the door. <br />
<br />
Repeat this step for each turbo lift in the design.<br />
<br />
===Paths===<br />
Add walk paths and ladder paths. '''Required.'''<br />
<br />
NPCs do not analyze or even see rooms or obstacles. They blindly trust paths to get them where they want to go. Simple well planned paths enable NPCs to quickly and efficiently move to any room. <br />
<br />
To get from one room to another, an NPC walks straight to the closest path node in their room. Then they follow the path to the closest node to the destination location in the final room. Then they walk directly to the destination location. Any obstruction along the way will physically stop them and their ability to recover from this is poor. Any break in the path along the way is uncrossable. <br />
<br />
NPCs know how to use doors, ladders and turbo lifts. NPCs do not know how to use multiple transporters; they won't beam from one transporter to another to move about, without orders. <br />
<br />
Walk paths should not be placed directly on the floor. A meter or less above the floor works well.<br />
<br />
Paths should be kept as simple as possible. <br />
<br />
Walk paths and ladder paths must form one continuous branching structure throughout the design, wherever NPCs are expected to find their way. It is ok to loop and branch as much as needed. <br />
<br />
Ladder paths are placed where the body is to travel, not inside the ladder rungs. When moving along a ladder path, the body is centered on the path and all obstructions are ignored. <br />
<br />
Each operable interior door needs a walk path that passes through the doorway and ends a short distance inside the room void on each side. Walk paths through hull doors have one end inside a room void and the other end outside the hull. <br />
<br />
Operable floor and ceiling hatches are created using doors. However they should incorporate a ladder path instead of a walk path, even if no ladder is depicted. <br />
<br />
===Doors===<br />
Make doors functional. '''Required.'''<br />
<br />
By now every doorway should have a door, a room void, and a path. The door jig created a ''Door'' part. If a jig was not used, draw a door using a mesh. Then use the ''Make Door'' command to convert the mesh into a ''Door'' that can open and close.<br />
<br />
Change the current state of the door to ''Open''. Select the door, room void and path together. Use the ''Associate Parts'' command to make them accessible only when the door is open.<br />
<br />
When making a hull door, the associated door parts must include a hull void. This distinguishes a hull door from an interior door. The hull void is usually needed to get through the collision margin around the hull. The hull void and room void associated with the hull door should overlap slightly near the middle of the doorway. <br />
<br />
To make a window in a door, simply make the appropriate faces transparent. This will serve as a window but it will not share lighting behavior with ''Window'' parts.<br />
<br />
When making a ramp, create the faces in the open state of the door. Then place a room void on the ramp to access the area on top of the ramp. Associate the room void with the open state of the door. Leave the group name of the room void blank so air pressure will match that of the outside. <br />
<br />
Door switches start out in the center of the door. Every door has two door switches that can be positioned using ''Properties, Door Switch Positions''. This is useful for large doors. <br />
<br />
When a switch is moved, a visual indicator of the new switch position should be created using a mesh, e.g. a small glowing box or ball. <br />
<br />
Paths in the room should have a node close enough to the switch to enable an NPC to operate the switch while standing at the node. Ideally this would be one of the nodes of the path segment associated with the open door. <br />
<br />
The icon for the door part shows what kind of door it is. Some changes require a door to be reanalyzed to determine what kind of door it has become. To reanalyze a door and set other properties, use the ''Properties, Door'' function. <br />
<br />
===Textures===<br />
Texture the faces. '''Required.'''<br />
<br />
Textures should be applied after all changes to the faces are completed. This saves retexturing later after edits are made. <br />
<br />
Textures are applied in face mode. Select faces in face mode and apply textures to them using various methods on the Texture Wrapper. <br />
<br />
The position of the grid affects every texturing command. A technique to insure all floor and ceiling tiles align throughout all rooms is to reset the grid before applying those textures. <br />
<br />
In addition to the base texture, faces have an effects texture layer that responds to the activity of certain subsystems. e.g. The appearance of active lit transporter pads is achieved in this way. <br />
<br />
===Decals===<br />
Add decals.<br />
<br />
Decals are textured faces that apply special rendering behavior to improve their appearance when placed on an underlying face.<br />
<br />
Decals are blended with underlying faces. This enables them to smoothly merge with underlying faces when the decal texture has transparent areas. Normally the transparent areas of textures are discarded which creates a crunchy edge on transparent areas. <br />
<br />
Decals are rendered with a slight offset from the face. That enables them to be drawn coplanar with the underlying faces without unsightly face collisions. <br />
<br />
A few generated decals are available, to display empire flag, empire name, and a few others. The color of word decals can be controlled by painting the faces. The decal that shows the name of a berth occupant must be associated with a berth. <br />
<br />
===Group Names===<br />
Assign group names. '''Required.'''<br />
<br />
Room voids are grouped to assign a name to the room. These room names appear in various user interfaces throughout the game. <br />
<br />
Room voids in the same group will have the same air pressure and lighting. Lighting is controlled by the player using Bright/Dim/Dark controls and it may come in through the windows. Room lighting can be preset using ''Properties, Room Lighting''. That is also where you specify if the room is normally exposed to sunlight. <br />
<br />
Meshes, rooms, control stations, windows, and items should be grouped with the room void they occupy so they will be lit appropriately. Doors can only be in one group; both sides of the door will be lit according to the chosen group. <br />
<br />
Translucent windows can be grouped together to cause them to be lit synchronously. This gives them the appearance of belonging to the same room, even if no room exists. <br />
<br />
Parts with no group name or the reserved name ''Hull'' will have atmosphere and lighting determined by the external environment. <br />
<br />
===Review===<br />
Review properties and design analysis. '''Required.'''<br />
<br />
Use the properties window to configure all settings and to adjust how much of the hull volume is allocated to each subsystem.<br />
<br />
===Finalize===<br />
Finalize the blueprint. '''Required.'''<br />
<br />
Finalize a blueprint to analyze it for errors and inconsistencies. Errors must be fixed before the blueprint can be used in the game. Warnings should be reviewed; changes may be needed but warnings do not prevent use of a blueprint. <br />
<br />
Finalize grabs a screen image to accompany the blueprint in the library. You can provide this image yourself. Use Preview mode to get a screen grab of your design the way it will look in the game. <br />
<br />
The finalize process is slow. It may produce a large number of errors and warnings that need to be fixed or analyzed. ''Previous Finalize Result'' shows the result of the last finalize attempt.<br />
<br />
===Preview===<br />
Preview the design. '''Required.'''<br />
<br />
Land on a world. Try to get out and see if you can get back aboard. <br />
<br />
Create crew to see that they can get to their stations.<br />
<br />
=Building Design=<br />
For building designer specific information, see the [[Building Design]] page.<br />
<br />
[[Category:Designer]]<br />
[[Category:Spacecraft]]<br />
[[Category:Buildings]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Main_Page&diff=10003Main Page2024-02-23T04:11:23Z<p>Haxus: </p>
<hr />
<div>__NOTOC__ __NOEDITSECTION__ {{DISPLAYTITLE:{{FULLPAGENAME}}}}<br />
<center><span style="font-size: 162%">Welcome to the Hazeron Starship Wiki.</span></center><br />
<br />
{| align="center" width="75%" style="text-align: center;"<br />
||<br />
This wiki provides everything you could ever need to know about ''Hazeron Starship'', the revolutionary space empire simulation by Hazeron Freehold LLC.<br><br />
You will find help about various themes and mechanics in Hazeron Starship.<br><br />
We hope you enjoy your visit on this Wiki, which currently holds [[Special:Statistics|{{NUMBEROFARTICLES}}]] articles.<br />
|}<br />
<br />
{| align="center" style="text-align: center;"<br />
| width="20%" | <span class="plainlinks"><big>[https://hazeron.com/ Main Website]</big></span><br />
| width="10%" | <span class="plainlinks"><big>[https://hazeron.com/mybb/index.php Forums]</big></span><br />
| width="25%" | <big>[[File:Discord-Logo-Color.png|50px|link=https://discord.gg/CPrpDzJ]][https://discord.gg/CPrpDzJ Discord Server]</big><br />
<!--| width="20%" | <big>[[File:Steam-Logo.png|50px|link=https://store.steampowered.com/search/?term=Hazeron]][https://store.steampowered.com/search/?term=Hazeron Store Page]</big>--><br />
|}<br />
<br />
{| align="center" width="100%"<br />
| style="color:gray; background-color:gray; text-align: center;" | <nowiki>|</nowiki><br />
| width="33%" style="vertical-align: top;" |<br />
{|<br />
! <big>For New Players</big><br />
|-<br />
| style="vertical-align: top;" |<br />
{{FrontpagePlayerInfoNew}}<br />
|-<br />
! <big>For Returning Players</big><br />
|-<br />
| style="vertical-align: top;" |<br />
{{FrontpagePlayerInfoReturning}}<br />
|}<br />
| style="color:gray; background-color:gray; text-align: center;" | <nowiki>|</nowiki><br />
| width="33%" style="vertical-align: top;" | <br />
{|<br />
! <big>Main Pages</big><br />
|-<br />
| style="vertical-align: top;" |<br />
{{FrontpageMain}}<br />
|-<br />
! <big>Wiki News</big><br />
|-<br />
| style="vertical-align: top;" |<br />
{{FrontpageNewsWiki}}<br />
|}<br />
| style="color:gray; background-color:gray; text-align: center;" | <nowiki>|</nowiki><br />
| width="33%" style="vertical-align: top;" |<br />
{|<br />
! <big>Game News</big><br />
|-<br />
| style="vertical-align: top;" |<br />
{{FrontpageNewsGame}}<br />
|}<br />
| style="color:gray; background-color:gray; text-align: center;" | <nowiki>|</nowiki></div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9989Decay2022-01-15T23:36:21Z<p>Haxus: /* Officer Homesickness */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star-field-only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
Solar systems initially exist in a star-field-only state. Such solar systems contain a bare minimum of data.<br />
<br />
The contents of a solar system are generated when needed.<br />
<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system decays, it reverts to a star-field-only state. It retains little more than its name. All data associated with individual worlds and suns is lost, such as names and claims.<br />
<br />
When a solar system regenerates after having decayed, it will generate as it did the first time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
Solar systems never decay if they contain a ringworld.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. <br />
<br />
The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits. Severity of corrosion damage is based on the type of the atmosphere and its density.<br />
<br />
A spacecraft in space without capacitor power will be unable to withstand the cold void of space. It will slowly take meteor damage until the hull fails.<br />
<br />
A spacecraft sitting in visible liquid takes corrosion damage based upon the type of liquid.<br />
<br />
When a spacecraft is completely submerged, atmosphere damage is not applied.<br />
<br />
To prevent environmental decay:<br />
* Have an [[NPC]] or [[avatar]] on the spacecraft's roster as Captain or Officer. Land at an [[Airport_Terminal|airport terminal]], [[Military_Airport_Terminal|military airport terminal]], or [[Airport_Repair_Shop|airport repair shop]].<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant. <br />
* Store the spacecraft in a [[hangar]].<br />
* Park the spacecraft aboard another spacecraft.<br />
* Park the spacecraft inside a building.<br />
<br />
===Officer Homesickness===<br />
NPC officers need an empire city on their homeworld. If all cities on an [[officer]]'s homeworld are lost, either to decay or captured by an enemy empire, the officer will commit suicide after a week.<br />
<br />
When committing suicide, the commanding officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster. An officer who is not in command (does not have the con), will not self-destruct the ship.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9988Decay2022-01-15T23:33:42Z<p>Haxus: /* Commander-less Officer */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star-field-only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
Solar systems initially exist in a star-field-only state. Such solar systems contain a bare minimum of data.<br />
<br />
The contents of a solar system are generated when needed.<br />
<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system decays, it reverts to a star-field-only state. It retains little more than its name. All data associated with individual worlds and suns is lost, such as names and claims.<br />
<br />
When a solar system regenerates after having decayed, it will generate as it did the first time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
Solar systems never decay if they contain a ringworld.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. <br />
<br />
The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits. Severity of corrosion damage is based on the type of the atmosphere and its density.<br />
<br />
A spacecraft in space without capacitor power will be unable to withstand the cold void of space. It will slowly take meteor damage until the hull fails.<br />
<br />
A spacecraft sitting in visible liquid takes corrosion damage based upon the type of liquid.<br />
<br />
When a spacecraft is completely submerged, atmosphere damage is not applied.<br />
<br />
To prevent environmental decay:<br />
* Have an [[NPC]] or [[avatar]] on the spacecraft's roster as Captain or Officer. Land at an [[Airport_Terminal|airport terminal]], [[Military_Airport_Terminal|military airport terminal]], or [[Airport_Repair_Shop|airport repair shop]].<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant. <br />
* Store the spacecraft in a [[hangar]].<br />
* Park the spacecraft aboard another spacecraft.<br />
* Park the spacecraft inside a building.<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9987Decay2022-01-15T23:30:43Z<p>Haxus: /* Crew Mutiny */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star-field-only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
Solar systems initially exist in a star-field-only state. Such solar systems contain a bare minimum of data.<br />
<br />
The contents of a solar system are generated when needed.<br />
<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system decays, it reverts to a star-field-only state. It retains little more than its name. All data associated with individual worlds and suns is lost, such as names and claims.<br />
<br />
When a solar system regenerates after having decayed, it will generate as it did the first time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
Solar systems never decay if they contain a ringworld.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. <br />
<br />
The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits. Severity of corrosion damage is based on the type of the atmosphere and its density.<br />
<br />
A spacecraft in space without capacitor power will be unable to withstand the cold void of space. It will slowly take meteor damage until the hull fails.<br />
<br />
A spacecraft sitting in visible liquid takes corrosion damage based upon the type of liquid.<br />
<br />
When a spacecraft is completely submerged, atmosphere damage is not applied.<br />
<br />
To prevent environmental decay:<br />
* Have an [[NPC]] or [[avatar]] on the spacecraft's roster as Captain or Officer. Land at an [[Airport_Terminal|airport terminal]], [[Military_Airport_Terminal|military airport terminal]], or [[Airport_Repair_Shop|airport repair shop]].<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant. <br />
* Store the spacecraft in a [[hangar]].<br />
* Park the spacecraft aboard another spacecraft.<br />
* Park the spacecraft inside a building.<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9986Decay2022-01-15T23:29:17Z<p>Haxus: /* Environmental Decay */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star-field-only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
Solar systems initially exist in a star-field-only state. Such solar systems contain a bare minimum of data.<br />
<br />
The contents of a solar system are generated when needed.<br />
<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system decays, it reverts to a star-field-only state. It retains little more than its name. All data associated with individual worlds and suns is lost, such as names and claims.<br />
<br />
When a solar system regenerates after having decayed, it will generate as it did the first time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
Solar systems never decay if they contain a ringworld.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. <br />
<br />
The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits. Severity of corrosion damage is based on the type of the atmosphere and its density.<br />
<br />
A spacecraft in space without capacitor power will be unable to withstand the cold void of space. It will slowly take meteor damage until the hull fails.<br />
<br />
A spacecraft sitting in visible liquid takes corrosion damage based upon the type of liquid.<br />
<br />
When a spacecraft is completely submerged, atmosphere damage is not applied.<br />
<br />
To prevent environmental decay:<br />
* Have an [[NPC]] or [[avatar]] on the spacecraft's roster as Captain or Officer. Land at an [[Airport_Terminal|airport terminal]], [[Military_Airport_Terminal|military airport terminal]], or [[Airport_Repair_Shop|airport repair shop]].<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant. <br />
* Store the spacecraft in a [[hangar]].<br />
* Park the spacecraft aboard another spacecraft.<br />
* Park the spacecraft inside a building.<br />
<br />
===Crew Mutiny===<br />
All [[spacecraft]] need to be hailed once every 4 weeks or the ship will be lost to mutiny. Which ends with the officer ordering the spacecraft to self-destruct.<br />
<br />
{| class="wikitable"<br />
|+ Since last hailed by command<br />
|-<br />
! Days<br />
! Ship log message<br />
|-<br />
| 0 - 6<br />
| The crew has high spirits. Every day seems filled with anticipation.<br />
|-<br />
| 7 - 13<br />
| More than a week has passed since we were last hailed by command.<br> The crew is quiet, intent on their work as they attend to their duties.<br />
|-<br />
| 14 - 20<br />
| More than two weeks have passed since we last heard from command.<br> There have been some tense confrontations between the crew members.<br />
|-<br />
| 21 - 27<br />
| More than three weeks have passed since we lost contact with command.<br> Some of the crew have become surly and insubordinate. Fighting among them is a daily occurrence.<br />
|}<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9985Decay2022-01-15T23:11:14Z<p>Haxus: /* City Decay */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star-field-only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
Solar systems initially exist in a star-field-only state. Such solar systems contain a bare minimum of data.<br />
<br />
The contents of a solar system are generated when needed.<br />
<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system decays, it reverts to a star-field-only state. It retains little more than its name. All data associated with individual worlds and suns is lost, such as names and claims.<br />
<br />
When a solar system regenerates after having decayed, it will generate as it did the first time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
Solar systems never decay if they contain a ringworld.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. <br />
<br />
The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits.<br />
<br />
A spacecraft in space without power will be unable to withstand the cold void of space, slowly taking damage until the hull fails.<br />
<br />
To prevent environmental decay:<br />
* Have a [[NPC]] [[officer]] or an [[avatar]] on the spacecraft's roster and have it landed at an [[Airport_Terminal|airport terminal]]<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant<br />
* Store the spacecraft in a [[hangar]]<br />
<br />
===Crew Mutiny===<br />
All [[spacecraft]] need to be hailed once every 4 weeks or the ship will be lost to mutiny. Which ends with the officer ordering the spacecraft to self-destruct.<br />
<br />
{| class="wikitable"<br />
|+ Since last hailed by command<br />
|-<br />
! Days<br />
! Ship log message<br />
|-<br />
| 0 - 6<br />
| The crew has high spirits. Every day seems filled with anticipation.<br />
|-<br />
| 7 - 13<br />
| More than a week has passed since we were last hailed by command.<br> The crew is quiet, intent on their work as they attend to their duties.<br />
|-<br />
| 14 - 20<br />
| More than two weeks have passed since we last heard from command.<br> There have been some tense confrontations between the crew members.<br />
|-<br />
| 21 - 27<br />
| More than three weeks have passed since we lost contact with command.<br> Some of the crew have become surly and insubordinate. Fighting among them is a daily occurrence.<br />
|}<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9984Decay2022-01-15T23:08:55Z<p>Haxus: /* Solar System Decay */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star-field-only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
Solar systems initially exist in a star-field-only state. Such solar systems contain a bare minimum of data.<br />
<br />
The contents of a solar system are generated when needed.<br />
<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system decays, it reverts to a star-field-only state. It retains little more than its name. All data associated with individual worlds and suns is lost, such as names and claims.<br />
<br />
When a solar system regenerates after having decayed, it will generate as it did the first time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
Solar systems never decay if they contain a ringworld.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits.<br />
<br />
A spacecraft in space without power will be unable to withstand the cold void of space, slowly taking damage until the hull fails.<br />
<br />
To prevent environmental decay:<br />
* Have a [[NPC]] [[officer]] or an [[avatar]] on the spacecraft's roster and have it landed at an [[Airport_Terminal|airport terminal]]<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant<br />
* Store the spacecraft in a [[hangar]]<br />
<br />
===Crew Mutiny===<br />
All [[spacecraft]] need to be hailed once every 4 weeks or the ship will be lost to mutiny. Which ends with the officer ordering the spacecraft to self-destruct.<br />
<br />
{| class="wikitable"<br />
|+ Since last hailed by command<br />
|-<br />
! Days<br />
! Ship log message<br />
|-<br />
| 0 - 6<br />
| The crew has high spirits. Every day seems filled with anticipation.<br />
|-<br />
| 7 - 13<br />
| More than a week has passed since we were last hailed by command.<br> The crew is quiet, intent on their work as they attend to their duties.<br />
|-<br />
| 14 - 20<br />
| More than two weeks have passed since we last heard from command.<br> There have been some tense confrontations between the crew members.<br />
|-<br />
| 21 - 27<br />
| More than three weeks have passed since we lost contact with command.<br> Some of the crew have become surly and insubordinate. Fighting among them is a daily occurrence.<br />
|}<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9983Decay2022-01-15T23:08:08Z<p>Haxus: /* Solar System Decay */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star-field-only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
Solar systems initially exist in a star-field-only state. Such solar systems contain a bare minimum of data.<br />
<br />
The contents of a solar system are generated when needed.<br />
<br />
When a solar system decays, it reverts to a star-field-only state. It retains little more than its name. All data associated with individual worlds and suns is lost, such as names and claims.<br />
<br />
When a solar system regenerates after having decayed, it will generate as it did the first time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
Solar systems never decay if they contain a ringworld.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits.<br />
<br />
A spacecraft in space without power will be unable to withstand the cold void of space, slowly taking damage until the hull fails.<br />
<br />
To prevent environmental decay:<br />
* Have a [[NPC]] [[officer]] or an [[avatar]] on the spacecraft's roster and have it landed at an [[Airport_Terminal|airport terminal]]<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant<br />
* Store the spacecraft in a [[hangar]]<br />
<br />
===Crew Mutiny===<br />
All [[spacecraft]] need to be hailed once every 4 weeks or the ship will be lost to mutiny. Which ends with the officer ordering the spacecraft to self-destruct.<br />
<br />
{| class="wikitable"<br />
|+ Since last hailed by command<br />
|-<br />
! Days<br />
! Ship log message<br />
|-<br />
| 0 - 6<br />
| The crew has high spirits. Every day seems filled with anticipation.<br />
|-<br />
| 7 - 13<br />
| More than a week has passed since we were last hailed by command.<br> The crew is quiet, intent on their work as they attend to their duties.<br />
|-<br />
| 14 - 20<br />
| More than two weeks have passed since we last heard from command.<br> There have been some tense confrontations between the crew members.<br />
|-<br />
| 21 - 27<br />
| More than three weeks have passed since we lost contact with command.<br> Some of the crew have become surly and insubordinate. Fighting among them is a daily occurrence.<br />
|}<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9982Decay2022-01-15T23:00:53Z<p>Haxus: /* Sector Decay */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star-field-only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system regenerate after having decayed, it will generate as it did last time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits.<br />
<br />
A spacecraft in space without power will be unable to withstand the cold void of space, slowly taking damage until the hull fails.<br />
<br />
To prevent environmental decay:<br />
* Have a [[NPC]] [[officer]] or an [[avatar]] on the spacecraft's roster and have it landed at an [[Airport_Terminal|airport terminal]]<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant<br />
* Store the spacecraft in a [[hangar]]<br />
<br />
===Crew Mutiny===<br />
All [[spacecraft]] need to be hailed once every 4 weeks or the ship will be lost to mutiny. Which ends with the officer ordering the spacecraft to self-destruct.<br />
<br />
{| class="wikitable"<br />
|+ Since last hailed by command<br />
|-<br />
! Days<br />
! Ship log message<br />
|-<br />
| 0 - 6<br />
| The crew has high spirits. Every day seems filled with anticipation.<br />
|-<br />
| 7 - 13<br />
| More than a week has passed since we were last hailed by command.<br> The crew is quiet, intent on their work as they attend to their duties.<br />
|-<br />
| 14 - 20<br />
| More than two weeks have passed since we last heard from command.<br> There have been some tense confrontations between the crew members.<br />
|-<br />
| 21 - 27<br />
| More than three weeks have passed since we lost contact with command.<br> Some of the crew have become surly and insubordinate. Fighting among them is a daily occurrence.<br />
|}<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9981Decay2022-01-15T23:00:10Z<p>Haxus: /* Sector Decay */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. A sector where every solar system exists in a star field only state is eligible for decay, unless it is a perimeter sector.<br />
<br />
A perimeter sector is one that is needed to provide the star field around a sector that contains a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system regenerate after having decayed, it will generate as it did last time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits.<br />
<br />
A spacecraft in space without power will be unable to withstand the cold void of space, slowly taking damage until the hull fails.<br />
<br />
To prevent environmental decay:<br />
* Have a [[NPC]] [[officer]] or an [[avatar]] on the spacecraft's roster and have it landed at an [[Airport_Terminal|airport terminal]]<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant<br />
* Store the spacecraft in a [[hangar]]<br />
<br />
===Crew Mutiny===<br />
All [[spacecraft]] need to be hailed once every 4 weeks or the ship will be lost to mutiny. Which ends with the officer ordering the spacecraft to self-destruct.<br />
<br />
{| class="wikitable"<br />
|+ Since last hailed by command<br />
|-<br />
! Days<br />
! Ship log message<br />
|-<br />
| 0 - 6<br />
| The crew has high spirits. Every day seems filled with anticipation.<br />
|-<br />
| 7 - 13<br />
| More than a week has passed since we were last hailed by command.<br> The crew is quiet, intent on their work as they attend to their duties.<br />
|-<br />
| 14 - 20<br />
| More than two weeks have passed since we last heard from command.<br> There have been some tense confrontations between the crew members.<br />
|-<br />
| 21 - 27<br />
| More than three weeks have passed since we lost contact with command.<br> Some of the crew have become surly and insubordinate. Fighting among them is a daily occurrence.<br />
|}<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9980Decay2022-01-15T22:57:01Z<p>Haxus: /* Sector Decay */</p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
Sector decay occurs when the master server is restarted, which happens at unscheduled intervals. At that time, certain maintenance processes can be safely and reliably run on the universe database, before any other activity is permitted. <br />
<br />
Sectors are examined at that time to remove the ones that are not needed. Sectors where every solar system exists in a star field only state are eligible for decay, unless they are adjacent to a solar system with a fully generated solar system.<br />
<br />
==Solar System Decay==<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system regenerate after having decayed, it will generate as it did last time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits.<br />
<br />
A spacecraft in space without power will be unable to withstand the cold void of space, slowly taking damage until the hull fails.<br />
<br />
To prevent environmental decay:<br />
* Have a [[NPC]] [[officer]] or an [[avatar]] on the spacecraft's roster and have it landed at an [[Airport_Terminal|airport terminal]]<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant<br />
* Store the spacecraft in a [[hangar]]<br />
<br />
===Crew Mutiny===<br />
All [[spacecraft]] need to be hailed once every 4 weeks or the ship will be lost to mutiny. Which ends with the officer ordering the spacecraft to self-destruct.<br />
<br />
{| class="wikitable"<br />
|+ Since last hailed by command<br />
|-<br />
! Days<br />
! Ship log message<br />
|-<br />
| 0 - 6<br />
| The crew has high spirits. Every day seems filled with anticipation.<br />
|-<br />
| 7 - 13<br />
| More than a week has passed since we were last hailed by command.<br> The crew is quiet, intent on their work as they attend to their duties.<br />
|-<br />
| 14 - 20<br />
| More than two weeks have passed since we last heard from command.<br> There have been some tense confrontations between the crew members.<br />
|-<br />
| 21 - 27<br />
| More than three weeks have passed since we lost contact with command.<br> Some of the crew have become surly and insubordinate. Fighting among them is a daily occurrence.<br />
|}<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Decay&diff=9979Decay2022-01-15T22:44:29Z<p>Haxus: </p>
<hr />
<div>{{HaxusNeeded|There are things about decay that I don't know. Haxus you may have to help with this.<br>[[Item]] decay?<br>[[Solar_System|Solar system]] decay?<br>[[Sector]] decay?<br>And of course check what I wrote. ^^;}}<br />
<br />
Everything in the universe decays over time if it is not visited or used. [[Commodities]] dropped on the ground will decay, unless placed on [[Static_Display|Static Display]]. [[Spacecraft]] slowly decay when they are without a captain or officer. [[Cities]] decay when they become deserted. Even whole [[System|solar system]]s can decay and revert back to their original state.<br />
<br />
==Sector Decay==<br />
<br />
==Solar System Decay==<br />
A [[Solar_System|solar system]] will decay if it has no [[unit]]s, [[spacecraft]] or [[building]]s for over a week and isn't on an active [[avatar]]'s [[land]].<br />
<br />
When a solar system regenerate after having decayed, it will generate as it did last time it was generated. This means that if a [[world]] was destroyed by an [[asteroid]] before the solar system decayed, it will appear again when it is regenerated.<br />
<br />
==City Decay==<br />
Cities and buildings both can decay.<br />
<br />
Building abandonment begins three days after: 1) an avatar on line was last present in its solar system or 2) it stops being protected by the [[land]] designation of an avatar.<br />
<br />
Probability of decay increases as the negative morale modifier from [[abandonment]] increases.<br />
<br />
Up to three abandoned buildings in a city will decay at each [[City_Report|city report]] cycle. Decayed buildings are listed on the city report. When a building decays due to abandonment, it is completely destroyed. Decay conforms to city build rules so bases will decay before cities, on any given world. The final city report from a decaying city does not expire in the mail queue. It is marked with a highlighted icon. <br />
<br />
===City Abandonment===<br />
The most common cause of city decay is [[abandonment]], if the solar system containing it isn't protected by a [[land]] designation and an avatar hasn't visited in at least three days.<br />
<br />
For more information, see the [[Abandonment]] page.<br />
<br />
==Spacecraft Decay==<br />
===Environmental Decay===<br />
[[Spacecraft]] slowly decay in the form of environmental damage when left abandoned in unsuitable environments.<br />
<br />
If a spacecraft is inside an [[atmosphere]] it will very slowly take damage from the environment reported as weather corrosion. This includes [[world]]s with no atmosphere density, such as moons, but it is instead reported as meteor hits.<br />
<br />
A spacecraft in space without power will be unable to withstand the cold void of space, slowly taking damage until the hull fails.<br />
<br />
To prevent environmental decay:<br />
* Have a [[NPC]] [[officer]] or an [[avatar]] on the spacecraft's roster and have it landed at an [[Airport_Terminal|airport terminal]]<br />
* Park the spacecraft in orbit and make sure it has [[fuel]] to maintain its power plant<br />
* Store the spacecraft in a [[hangar]]<br />
<br />
===Crew Mutiny===<br />
All [[spacecraft]] need to be hailed once every 4 weeks or the ship will be lost to mutiny. Which ends with the officer ordering the spacecraft to self-destruct.<br />
<br />
{| class="wikitable"<br />
|+ Since last hailed by command<br />
|-<br />
! Days<br />
! Ship log message<br />
|-<br />
| 0 - 6<br />
| The crew has high spirits. Every day seems filled with anticipation.<br />
|-<br />
| 7 - 13<br />
| More than a week has passed since we were last hailed by command.<br> The crew is quiet, intent on their work as they attend to their duties.<br />
|-<br />
| 14 - 20<br />
| More than two weeks have passed since we last heard from command.<br> There have been some tense confrontations between the crew members.<br />
|-<br />
| 21 - 27<br />
| More than three weeks have passed since we lost contact with command.<br> Some of the crew have become surly and insubordinate. Fighting among them is a daily occurrence.<br />
|}<br />
<br />
===Officer Homesickness===<br />
If all cities on an [[officer]]'s homeworld is lost, either to decay or captured by an enemy empire, the officer will commit suicide.<br />
<br />
When committing suicide, the officer will self-destruct the [[spacecraft]] on which he is stationed, unless there is another officer or captain on the spacecraft's roster.<br />
<br />
===Commander-less Officer===<br />
If there is no [[avatar]] in charge of the homeworld of an [[officer]], it will commit suicide.<br />
<br />
The [[spacecraft]] the officer was stationed on will not be harmed.<br />
<br />
==Item Decay==<br />
[[Item]]s dropped on the ground will decay slowly, taking ??? durability damage every ???. The decay is significantly increased when there is no online [[avatar]] near the item.<br />
<br />
Items placed on [[Static_Display|Static Display]] will not decay, and they will even stay on a ship after it has been [[Spacecraft_Respawn|respawned]].<br />
<br />
[[Category:Science]]<br />
[[Category:Colonization]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9863Story Script2021-02-25T18:04:08Z<p>Haxus: /* ll worldRelativeLL(world,ll,real,real) */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
===angle===<br />
Angle in degrees, in the range -360 to 360.<br />
===animal===<br />
A wild animal. A creature that is not sentient.<br />
===atom===<br />
A variable that references an atom. Most objects in the game universe are atoms.<br />
===avatar===<br />
A variable that references an avatar atom.<br />
===bool===<br />
Boolean value returned by calling one or more functions. Can use logical operators '''&''', '''|''', and '''!'''.<br />
===bool===<br />
Boolean argument. Accepts '''true''' or '''false''', not case sensitive.<br />
===building===<br />
Building name, not case sensitive.<br />
===city===<br />
A variable that references a capitol building atom.<br />
===commodity===<br />
Commodity name, not case sensitive.<br />
===channel===<br />
Communication channel name. Not limited to standard channel names.<br />
===character===<br />
A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
===choiceValue===<br />
A value associated with multiple choices, in the range -127 to 127.<br />
===creature===<br />
A variable that references a creature atom. Animals and sentients are creature atoms.<br />
===dna===<br />
DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a city.<br />
===empire===<br />
Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
===file===<br />
A file name found in the same path as the script.<br />
===gearslot===<br />
Gear slot, not case sensitive: '''Hand''', '''Head''', '''Face''', '''Neck''', '''Body''', '''Wear''', '''Limb''', '''Digit''', '''Waist'''. <br />
<br />
All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. <br />
<br />
All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. <br />
<br />
All creatures have at least one body slot for carrying gear. <br />
<br />
Wear is specifically for things worn on the body, such as clothing and armor. <br />
<br />
Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. <br />
<br />
Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. <br />
<br />
All creatures have four waist slots; there is a size limit to items placed at the waist. <br />
===gender===<br />
Gender of creature, not case sensitive: '''Male''', '''Female''', '''Asexual''', '''Hermaphrodite'''.<br />
===hand===<br />
Dominant hand of creature, not case sensitive: '''Left Handed''', '''Right Handed'''<br />
===int===<br />
Signed integer value. Decimals are truncated.<br />
===item===<br />
A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
===ll===<br />
A variable that contains a longitude latitude coordinate on a world.<br />
===npc===<br />
A variable that references an npc atom. All AI controlled citizens are npc atoms.<br />
===npcrole===<br />
A role for an AI controlled sentient: '''Citizen''', '''Worker''', '''Passenger''', '''Crew''', '''Troop''', '''Officer''', '''IndigenousPerson''', '''IndigenousElder''', '''IndigenousHealer''', '''IndigenousStargazer'''.<br />
===orbit===<br />
Orbit: '''Inferno''', '''Inner''', '''Habitable''', '''Outer''' or '''Frigid''' also '''Any''', '''Harsh''' (Inferno or Frigid), '''Mild''' (Inner, Habitable, or Outer), '''Uninhabitable''' (not Habitable).<br />
===quality===<br />
Quality in the range 1 to 255.<br />
===range===<br />
Communication range, not case sensitive.<br />
===real===<br />
Signed real value.<br />
===scenario===<br />
'''Reach for the Stars''', '''Citizen of the Galaxy''', '''The Savage State''', '''Lost Atlantis'''. Comparison is not case sensitive. <br />
===sector===<br />
A variable that references a sector atom.<br />
===sentient===<br />
A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
===ship===<br />
A variable that references a spacecraft atom, could be a station.<br />
===stage===<br />
Growth stage of creature, not case sensitive: '''Mature''', '''Juvenile'''.<br />
===stance===<br />
Political stance, not case sensitive. '''Empire''', '''Vassal''', '''Friend''', '''Neutral''', '''Enemy'''. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
===station===<br />
Station that can be occupied, not case sensitive: '''Command''', '''Citizen''', '''Designer''', '''Engine''', '''FireControl''', '''Game''', '''Helm''', '''Livestock''', '''Medic''', '''Navigation''', '''Patient''', '''Power''', '''Sensor''', '''Shield''', '''Transporter''', '''Troop''', '''Turret'''<br />
===system===<br />
A variable that references a solar system atom.<br />
===text===<br />
Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
===unit===<br />
A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
===vehicle===<br />
A variable that references a vehicle atom.<br />
===visage===<br />
A pose for the face: '''None''', '''Agape''', '''Closed''', '''Cry2Sec''', '''Frown''', '''Grim''', '''Grin''', '''Laugh1Sec''', '''Laugh2Sec''', '''Laugh4Sec''', '''Open''', '''OpenWide''', '''Perplexed''', '''Pursed''', '''Sad''', '''Sardonic''', '''Smile''', and '''Yawn'''.<br />
===void===<br />
A function return value placeholder indicating a function does not return anything.<br />
===world===<br />
A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
====goto blockName====<br />
Unconditional branch to a block of the story.<br />
<br />
====if(bool) blockName====<br />
In the catalyst block, ''if'' tests determine when the story can start for an avatar and which block will begin the story.<br />
<br />
In body blocks, ''if'' tests determine when to branch to another block of the story.<br />
<br />
Each block of the story, including the catalyst, may contain more than one ''if'' to test and branch based on different conditions. The story engine checks the ''if'' conditions of the current block every 10 seconds. Each ''if'' is tested in the order it appears in the script. The first ''if'' to return true results in a branch to its block of the story.<br />
<br />
====choiceValue choiceMade()====<br />
Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
====bool dateIsChristmas()====<br />
Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
====int secondsElapsed()====<br />
Returns the number of seconds that have passed since the current story block was started.<br />
<br />
====bool wait(int)====<br />
Returns true if ''int'' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the ''storyDroppable'' function.<br />
<br />
====void storyAuthor(text)====<br />
Identifies the author of the story. Required in catalyst block.<br />
<br />
====void storyAutoRepeat()====<br />
Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoRepeatUntilComplete()====<br />
Enables the story to automatically start repeatedly, based on the catalyst. <br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed. <br />
<br />
A story that is dropped is not considered to be completed. <br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoStart()====<br />
Enables the story to automatically start once, based on the catalyst. <br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyBrief(text)====<br />
Gives a brief description of the story. Required in catalyst block.<br />
<br />
====void storyDroppable(bool)====<br />
Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script. <br />
<br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story. <br />
<br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way. <br />
<br />
====void storyInterval(int)====<br />
Specifies the time interval in minutes before the story can start again. <br />
<br />
The time interval starts when the story terminates, whether by finishing or by dropping. <br />
<br />
====void storyTitle(text)====<br />
Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
Avatar functions operate on the avatar atom for whom the story is running. <br />
<br />
====avatar avatar()====<br />
Returns the person executing the story.<br />
<br />
====bool avatarConstructedBuildingHabitable(building)====<br />
Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====bool avatarConstructedBuildingHarsh(building)====<br />
Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====void avatarCreditGovtDebt(real)====<br />
Credits the person's government debt account with a number of cronodollars.<br />
<br />
====bool avatarCurrentItem(commodity)====<br />
Test if the person's current item is a commodity.<br />
<br />
====atom avatarEnvironment()====<br />
Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
====int avatarEVAMinutes()====<br />
Returns the number of minutes of EVA experience.<br />
<br />
====bool avatarHadItem(commodity)====<br />
Test if the person's gear has ever contained a commodity.<br />
<br />
====bool avatarHasFood()====<br />
Test if the person's gear contains any food.<br />
<br />
====bool avatarHasItem(commodity)====<br />
Test if the person's gear contains a commodity.<br />
<br />
====bool avatarHasItemInHand(commodity)====<br />
Test if the person is holding a commodity in their hand.<br />
<br />
====bool avatarHasItemInHandSpecific(commodity,quality,empire,text)====<br />
Test if the person is holding a specific commodity in their hand. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarHasItemSpecific(commodity,quality,empire,text)====<br />
Test if the person's gear contains a very specific commodity. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarInCity()====<br />
Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
====bool avatarInitScenario(scenario)====<br />
Test if the person started the game using a specified ''scenario''.<br />
<br />
====bool avatarInOrbit()====<br />
Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
====bool avatarInStudio()====<br />
Test if the person is inside a design studio instance.<br />
<br />
====bool avatarInVehicle(commodity)====<br />
Test if the person is inside a certain type of vehicle.<br />
<br />
====bool avatarInVehicleMoving(commodity)====<br />
Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
====bool avatarInVehicleOnGround(commodity)====<br />
Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
====int avatarItemCount(commodity)====<br />
Returns the amount of a commodity possessed by the avatar.<br />
<br />
====void avatarItemMakePermanent(commodity,quality,empire,text)====<br />
Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void avatarItemSetDropOnDeath(int,commodity,quality,empire,text)====<br />
Sets the ''drop'' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. ''bool'' is the new state.<br />
<br />
====bool avatarLineageAvatar()====<br />
Returns true if the avatar's lineage is a regular avatar.<br />
<br />
====bool avatarLineageDemiavatar()====<br />
Returns true if the avatar's lineage is demiavatar.<br />
<br />
====bool avatarLineageHighborn()====<br />
Returns true if the avatar's lineage is highborn.<br />
<br />
====int avatarOnLineMinutes()====<br />
Returns number of minutes the person has been on line.<br />
<br />
====bool avatarStoryCompleted(int)====<br />
Test if the person has completed a particular story script id.<br />
<br />
====int avatarStoryLastResult(int)====<br />
Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
====void avatarStoryResult(int)====<br />
Stores the result for the current story in an avatar's memory. ''int'' is result, in the range 0 to 255. <br />
<br />
====int avatarVehicleMinutes(commodity)====<br />
Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the ''atom'' argument is not valid, all functions return quietly. <br />
<br />
====atom atom(int)====<br />
Casts ''int'' to be an atom identifier.<br />
<br />
====city atomCity(atom)====<br />
Returns the city capitol building atom whose jurisdiction controls the building site that contains ''atom''. <br />
<br />
The result is 0 if the atom's current building is not part of a city. <br />
<br />
If ''atom'' is on a road, the capitol building whose jurisdiction contains ''atom'' is returned. <br />
<br />
The result is 0 if ''atom'' is not at a building site or on a road in a city. <br />
<br />
====void atomComm(atom,channel,range,text)====<br />
Atom sends a message on a comm channel.<br />
<br />
====void atomCommChannelToAtom(atom,atom,channel)====<br />
Atom opens a channel to the other atom.<br />
<br />
====void atomCommChoice(atom,channel,range,choiceValue,text)====<br />
Atom says a choice on a comm channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage)====<br />
Creates a character near ''atom'', subordinate to the same parent as ''atom''. Will not create the charater if ''atom'' is in a vehicle. <br />
<br />
Arguments:<br />
: ''angle'' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind. <br />
: ''real'' is a distance in meters. <br />
:: The new character's location will be in the domain of ''atom''s parent. i.e. on the same ship or world. The path from ''atom'' to the new character's location will be unobstructed. The final starting location will be no farther than ''real'' meters from ''atom'', even if it means starting on top of ''atom''. It will be closer than ''real'' if the path to the starting location from the ''atom'' is obstructed. <br />
: ''text'' is the name of the new character. <br />
:: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====real atomDistanceToAtom(atom,atom)====<br />
Returns the distance between two atoms, in meters. <br />
<br />
====int atomEmpire(atom)====<br />
Returns id value of an atom's empire. 0 if none.<br />
<br />
====atom atomFindBuilding(atom,building,int,stance,int)====<br />
Locates a building of a specific ''building'' type, subordinate to ''atom''. <br />
<br />
Arguments:<br />
: ''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
: ''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====vehicle atomFindVehicle(atom,commodity,int)====<br />
Locates a vehicle of a specific ''commodity'' type, subordinate to ''atom''. ''int'' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care. <br />
<br />
====bool atomHasAtom(atom,atom)====<br />
Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
====bool atomHasBuilding(atom,building,int,stance,int)====<br />
Test recursively if an atom has a building type. The atom might typically be a system, world or city. <br />
<br />
Arguments:<br />
: ''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
: ''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====bool atomInSystem(atom,system)====<br />
Returns true if atom is in a solar system.<br />
<br />
====bool atomIsAtom(atom,atom)====<br />
Returns true if atom == atom and atom is valid.<br />
<br />
====sector atomSector(atom)====<br />
Returns the sector atom that contains ''atom''.<br />
<br />
====bool atomValid(atom)====<br />
Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
====world atomWorld(atom)====<br />
Returns the world atom that contains ''atom''. ''atom'' may be subordinate to the world at any subatom level or distance, possibly in space. <br />
<br />
Returns ''atom'' if atom is a world.<br />
<br />
====ll atomWorldLL(atom)====<br />
Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time. <br />
<br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
====bool blueprintSpacecraftLoad(int)====<br />
Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story. <br />
<br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously. <br />
<br />
====void characterDepart(character)====<br />
Causes a character to depart the scene. The character disappears instantly with no visual effect. <br />
<br />
====void characterDie(character)====<br />
Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time. <br />
<br />
====void characterEquipFromCity(character,gearslot,commodity,text)====<br />
Transfer an item to a character's gear from the inventory of the current city. <br />
<br />
Arguments:<br />
: ''text'' is an optional inscription to place on the item.<br />
<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
====void characterSetIndestructible(character,bool)====<br />
Sets indestructible state of a character. <br />
<br />
====void characterWantItem(character,commodity)====<br />
Causes the character to want a specific commodity. <br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
====void characterWantItemSpecific(character,commodity,quality,empire,text)====<br />
Causes the character to want a very specific commodity. <br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank. <br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom. <br />
<br />
====vehicle cityFindNewVehicle(city,commodity)====<br />
Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
====bool cityHasBuilding(city,building,int)====<br />
Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building. <br />
<br />
====bool cityHasFood(city)====<br />
Test if a city has any food in any of its buildings.<br />
<br />
====bool cityHasItem(city,commodity)====<br />
Test if a city has a commodity in any of its buildings. <br />
<br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
====bool cityHasPower(city)====<br />
Test if a city has any electricity. <br />
<br />
Arguments:<br />
: ''city'' can be any building. <br />
<br />
====int cityItemCount(city,commodity)====<br />
Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
====int cityPopulation(city)====<br />
Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions. <br />
<br />
====bool creatureIsDyingOrDead(creature)====<br />
Test if the creature's body is dying or dead.<br />
<br />
====void creatureSetHealth(creature,int)====<br />
Sets health level of a creature. <br />
<br />
Arguments:<br />
: ''int'' is the health level as a percentage, 0 to 100.<br />
<br />
====void creatureSetMouth(creature,visage,visage)====<br />
Sets ''visage'' pose of a creature. <br />
<br />
When the first ''visage'' pose is an animated pose, the second ''visage'' pose is set when the animation completes. <br />
<br />
====void creatureSetVisage(creature,visage)====<br />
Sets ''visage'' of a creature. <br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar. <br />
<br />
====world findGasGiant(orbit)====<br />
Locates a gas giant in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findMoon(orbit)====<br />
Locates a moon in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findPlanet(orbit,int)====<br />
Locates a planet in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types. <br />
: ''int'' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
====world findRing(orbit)====<br />
Locates a ring around a world in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findRingWorld()====<br />
Locates a ringworld arc section in the current environment. <br />
<br />
Arguments:<br />
: Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector. <br />
<br />
====text hengeSystemName(system)====<br />
Returns the name of a solar system that is known to contain a henge, as returned by the ''sectorHengeSystem'' function. <br />
<br />
====worldcat hengeSystemWorld(system,int)====<br />
Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city. <br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====world hengeWorld(worldcat)====<br />
Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
====ll hengeWorldLL(worldcat)====<br />
Returns the longitude latitude of a henge if there is one. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
====text hengeWorldName(worldcat)====<br />
Returns the name assigned to a henge world, given its catalog name.<br />
<br />
====bool hengeWorldPortalActive(worldcat,ll)====<br />
Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions. <br />
<br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that. <br />
<br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom. <br />
<br />
====void itemArmWeapon(item,unit,empire)====<br />
Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive. <br />
<br />
Arguments:<br />
: ''unit'' is the unit who armed the weapon. <br />
: ''empire'' is the empire who armed the weapon. <br />
<br />
====void itemCreateContent(item,bool,int,commodity,quality,empire,text)====<br />
Creates a new item inside ''item'', which is expected to be a container. <br />
<br />
Arguments:<br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''int'' is condition percent, 1 to 100. <br />
: If ''text'' is not blank, it is inscribed onto the item.<br />
<br />
====void itemDetonate(item)====<br />
Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
====void itemMakePermanent(item)====<br />
Changes a story item into a permanent item. <br />
<br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
====item itemOnGround(commodity,real)====<br />
Locates an item on the ground nearby. <br />
<br />
Arguments:<br />
: ''real'' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
====item itemOnGroundSpecific(int,commodity,quality,empire,text)====<br />
Locates a specific item on the ground nearby. <br />
<br />
Arguments:<br />
: ''int'' is the farthest distance from the story avatar to find the item, in meters. <br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void itemSetDropOnDeath(item,int)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
<br />
Arguments:<br />
: ''int'' is the new state.<br />
<br />
====void itemSetMessage(item,text)====<br />
Sets the message of an item, such as a beacon. This is not the inscription. <br />
<br />
Arguments:<br />
: ''text'' is the new message.<br />
<br />
====void itemSetState(item,int)====<br />
Sets the state of an item, such as the on/off state of a light or musical instrument. <br />
<br />
Arguments:<br />
: ''int'' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source. <br />
<br />
====void narratorHint(text)====<br />
Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window. <br />
<br />
====void narratorImage(file,text,text)====<br />
Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window. <br />
<br />
====void narratorSay(text)====<br />
Sends a text message on the narrator comm channel. <br />
<br />
====void narratorSayAudio(file,text)====<br />
Sends audio and an optional text message on the narrator comm channel.<br />
<br />
====void narratorSayChoice(choiceValue,text)====<br />
Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====void narratorTitle(text)====<br />
Sends a text message on the narrator comm channel formatted as a title. <br />
<br />
====void narratorVideo(file,text)====<br />
Sends video and an optional text message on the narrator comm channel. <br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled. <br />
<br />
====void npcSetRole(npcrole)====<br />
Changes the role of an npc. <br />
<br />
The role of an npc cannot be changed while they hold a berth. <br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions. <br />
<br />
====bool sectorHasHengeSystem(sector,int)====<br />
Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city. <br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====system sectorHengeSystem(sector,int)====<br />
Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city. <br />
<br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions. <br />
<br />
====void sentientAttackUnit(sentient,unit)====<br />
Order a sentient to attack a unit.<br />
<br />
====void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text)====<br />
Create an item in a sentient's gear. <br />
<br />
Arguments:<br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''text'' is inscribed on the item if not blank.<br />
<br />
====item sentientDropGear(sentient,gearslot)====<br />
Drops the item at a sentient's gear slot.<br />
<br />
====item sentientDropGearItem(sentient,commodity)====<br />
Drops an item from a sentient's gear.<br />
<br />
====void sentientFireWeapon(sentient)====<br />
Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
====void sentientFollowAvatar(sentient)====<br />
Order a sentient to follow the person.<br />
<br />
====void sentientFollowSentient(sentient,sentient)====<br />
Order a sentient to follow another sentient.<br />
<br />
====void sentientGetItem(sentient,item)====<br />
Order a sentient to pick an item up off the ground.<br />
<br />
====void sentientGoToAvatar(sentient)====<br />
Order a sentient to go to the avatar.<br />
<br />
====void sentientGoToLL(sentient,ll)====<br />
Order a sentient to go to a longitude latitude.<br />
<br />
====void sentientGoToLLExactly(sentient,ll)====<br />
Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
====void sentientGoToRoom(sentient,text)====<br />
Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
====void sentientGoToUnit(sentient,unit)====<br />
Order a sentient to go to a unit.<br />
<br />
====bool sentientHasItem(sentient,commodity)====<br />
Test if the sentient possesses a specific commodity.<br />
<br />
====bool sentientHasItemSpecific(sentient,commodity,quality,empire,text)====<br />
Test if the sentient's gear contains a very specific commodity. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientHengeCeremony(sentient,ll)====<br />
Order a sentient to perform the henge ceremony, if a henge is found near ''ll''.<br />
<br />
====void sentientItemMakePermanent(sentient,commodity,quality,empire,text)====<br />
Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
<br />
Arguments:<br />
: ''bool'' is the new state.<br />
<br />
====void sentientMoveBack(sentient,real)====<br />
Order a sentient to move backward a distance specified in meters.<br />
<br />
====void sentientMoveForward(sentient,real)====<br />
Order a sentient to move forward a distance specified in meters.<br />
<br />
====void sentientSay(sentient,text,visage)====<br />
Order a sentient being to say a message on the Voice channel.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayAudio(sentient,file,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayChoice(sentient,choiceValue,text,visage)====<br />
Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function. <br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayImage(sentient,file,text,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
<br />
Arguments:<br />
: ''text'' args are image title and text to say. <br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayTo(sentient,atom,text,visage)====<br />
Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSellGearItem(sentient,atom,commodity,int)====<br />
Offers an item from a sentient's gear on the Voice channel. <br />
<br />
Arguments:<br />
: ''atom'' is the target of the sale, causing sentient to turn to face them; it can be null. <br />
: The best Q ''commodity'' possessed by ''sentient'' is offered for sale. <br />
: ''int'' is the price, which can be 0 to offer it for free. <br />
<br />
====void sentientStay(sentient)====<br />
Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions. <br />
<br />
====void shipChargeCapacitor(ship)====<br />
Fills the capacitor to 100% on a ship.<br />
<br />
====void shipChargeShields(ship)====<br />
Fills the shields to 100% on a ship.<br />
<br />
====character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage)====<br />
Creates a character aboard ''ship''. <br />
<br />
Arguments:<br />
: ''int'' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location. <br />
: ''text'' is the name of the new character. <br />
:: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void shipCreateCrew(ship,dna)====<br />
Fills all empty crew positions on a ship. <br />
<br />
Arguments:<br />
: ''dna'' is used to create the new crew members.<br />
<br />
====void shipCreateTroops(ship,dna)====<br />
Fills all empty troop positions on a ship. <br />
<br />
Arguments:<br />
: ''dna'' is used to create the new troops.<br />
<br />
====sentient shipFindAI(ship,npcrole)====<br />
Locates an AI controlled sentient aboard a ship. <br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
====sentient shipFindAIInRoom(ship,npcrole,text)====<br />
Locates an AI controlled sentient aboard a ship, in a specific room. <br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====npc shipFindNpc(ship,npcrole)====<br />
Locates an npc aboard a ship. <br />
<br />
Does not find demiavatars. <br />
<br />
====npc shipFindNpcInRoom(ship,npcrole,text)====<br />
Locates an npc aboard a ship, in a specific room. <br />
<br />
Does not find demiavatars. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====void shipInteriorLight(ship,int)====<br />
Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
====void shipManeuverDrive(ship,int)====<br />
Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
====void shipPowerPlant(ship,int)====<br />
Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
====void shipRefuel(ship,int)====<br />
Fills the fuel cells to 100% on a ship with ''int'' quality fuel.<br />
<br />
====void shipRetreat(ship)====<br />
Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
====void shipShields(ship,int)====<br />
Sets a ship's shield state. 0=off, 1=on.<br />
<br />
====creature shipStationOccupant(ship,station)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
<br />
Designer returns an avatar in a designer instance. <br />
<br />
Livestock returns an animal. <br />
<br />
====creature shipStationOccupantInRoom(ship,station,text)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
<br />
Designer returns an avatar in a designer instance. <br />
<br />
Livestock returns an animal. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft. <br />
<br />
====ship unitAboardShip(unit)====<br />
Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
====bool unitAtBuilding(unit,building)====<br />
Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
====world unitAtWorld(unit)====<br />
Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
====bool unitInOrbit(unit)====<br />
Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
====ship unitInsideShip(unit)====<br />
Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
====text unitRoomName(unit)====<br />
Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room. <br />
<br />
====ship unitStationInTradeRange(unit,stance,int)====<br />
Returns station that is within trade range of the unit. <br />
<br />
Arguments:<br />
: ''stance'' and ''int'' are used to check the station empire's stance toward the unit's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions. <br />
<br />
====void vehicleRefuel(vehicle)====<br />
Fills the fuel cells to 100% on a vehicle. <br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions. <br />
<br />
====bool worldAtmosphereBreathable(world)====<br />
Test if the world atmosphere is breathable.<br />
<br />
====bool worldClaimed(world)====<br />
Test if the world is claimed by any empire.<br />
<br />
====bool worldClaimedBy(world,empire)====<br />
Test if the world is claimed by ''empire''.<br />
<br />
====character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage)====<br />
Creates a character on ''world'' at ''ll''. <br />
<br />
Arguments:<br />
: ''text'' is the name of the new character. <br />
: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void worldCreateIndigenous(world,ll,dna)====<br />
Create an indigenous village on a world. Establishes the indigenous DNA using ''dna'' if it is not already set.<br />
<br />
====item worldCreateItem(world,ll,bool,commodity,quality,empire,text)====<br />
Create an item on a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the item. <br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''text'' is inscribed on the item if not blank.<br />
<br />
====ship worldCreateShip(world,ll,real,int,quality,empire,text)====<br />
Create a spaceship at a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed. <br />
: ''real'' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
: ''int'' is the design id of the ship. <br />
: ''empire'' is the empire who owns the spaceship. <br />
: ''text'' is the name of the ship, set randomly if this is blank.<br />
<br />
====vehicle worldCreateVehicle(world,ll,commodity,quality,empire)====<br />
Create a vehicle on a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed. <br />
: ''empire'' is the empire who owns the vehicle.<br />
<br />
====bool worldHasCity(world)====<br />
Test if the world has any cities at all.<br />
<br />
====void worldHengeCeremony(world,ll,int)====<br />
Sets the state of the henge ceremony, if there is a henge. <br />
<br />
Arguments:<br />
: ''int'' is ceremony state: 1=Active, 0=inactive.<br />
<br />
====int worldHydrographics(world)====<br />
Returns the world's water percentage in the range 0 to 100.<br />
<br />
====bool worldIsGasGiant(world)====<br />
Test if the world is a gas giant.<br />
<br />
====bool worldIsMoon(world)====<br />
Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
====bool worldIsPlanet(world)====<br />
Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
====bool worldIsPlanetoid(world)====<br />
Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
====bool worldIsRing(world)====<br />
Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
====bool worldIsRingworld(world)====<br />
Test if the world is a ringworld arc section.<br />
<br />
====bool worldIsTitan(world)====<br />
Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
====ll worldLandLocation(world,real,real)====<br />
Returns a location that is on land. <br />
<br />
Arguments:<br />
: First ''real'' is minimum altitude MSL, in meters. <br />
: Second ''real'' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
====ll worldLandLocationNear(world,ll,real,real,real)====<br />
Returns a location that is on land somewhere near ''ll''. <br />
<br />
Arguments:<br />
: First ''real'' is minimum altitude MSL, in meters. <br />
: Second ''real'' is minimum distance from ''ll'', in meters. <br />
: Third ''real'' is maximum distance from ''ll'', in meters.<br />
<br />
====bool worldOrbitFrigid(world)====<br />
Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitHabitable(world)====<br />
Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInferno(world)====<br />
Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInner(world)====<br />
Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitOuter(world)====<br />
Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====ll worldRelativeLL(world,ll,real,real)====<br />
Returns a location that is offset from another location. <br />
<br />
Arguments:<br />
: ''ll'' is the reference location. <br />
: ''real,real'' is horizontal, vertical offset, in meters.<br />
:: Horizontal + is easterly and - is westerly on a globe. On a ringworld, + is east and - is west.<br />
:: Vertical + is north and - is south.<br />
<br />
====void worldScheduleAsteroid(world,int)====<br />
Schedules an asteroid to destroy the world in ''int'' minutes. <br />
<br />
Arguments:<br />
: ''world'' is the world that will be the target of the asteroid. <br />
: ''int'' is the number of minutes before impact. Must be at least 1.<br />
<br />
====bool worldSupportsAnimals(world)====<br />
Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals. <br />
<br />
All worlds that support animals also support plants. <br />
<br />
====bool worldSupportsPlants(world)====<br />
Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants. <br />
<br />
Worlds that support plants do not necessarily support animals.</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9862Story Script2021-02-25T17:56:13Z<p>Haxus: /* Function Argument Types */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
===angle===<br />
Angle in degrees, in the range -360 to 360.<br />
===animal===<br />
A wild animal. A creature that is not sentient.<br />
===atom===<br />
A variable that references an atom. Most objects in the game universe are atoms.<br />
===avatar===<br />
A variable that references an avatar atom.<br />
===bool===<br />
Boolean value returned by calling one or more functions. Can use logical operators '''&''', '''|''', and '''!'''.<br />
===bool===<br />
Boolean argument. Accepts '''true''' or '''false''', not case sensitive.<br />
===building===<br />
Building name, not case sensitive.<br />
===city===<br />
A variable that references a capitol building atom.<br />
===commodity===<br />
Commodity name, not case sensitive.<br />
===channel===<br />
Communication channel name. Not limited to standard channel names.<br />
===character===<br />
A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
===choiceValue===<br />
A value associated with multiple choices, in the range -127 to 127.<br />
===creature===<br />
A variable that references a creature atom. Animals and sentients are creature atoms.<br />
===dna===<br />
DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a city.<br />
===empire===<br />
Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
===file===<br />
A file name found in the same path as the script.<br />
===gearslot===<br />
Gear slot, not case sensitive: '''Hand''', '''Head''', '''Face''', '''Neck''', '''Body''', '''Wear''', '''Limb''', '''Digit''', '''Waist'''. <br />
<br />
All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. <br />
<br />
All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. <br />
<br />
All creatures have at least one body slot for carrying gear. <br />
<br />
Wear is specifically for things worn on the body, such as clothing and armor. <br />
<br />
Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. <br />
<br />
Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. <br />
<br />
All creatures have four waist slots; there is a size limit to items placed at the waist. <br />
===gender===<br />
Gender of creature, not case sensitive: '''Male''', '''Female''', '''Asexual''', '''Hermaphrodite'''.<br />
===hand===<br />
Dominant hand of creature, not case sensitive: '''Left Handed''', '''Right Handed'''<br />
===int===<br />
Signed integer value. Decimals are truncated.<br />
===item===<br />
A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
===ll===<br />
A variable that contains a longitude latitude coordinate on a world.<br />
===npc===<br />
A variable that references an npc atom. All AI controlled citizens are npc atoms.<br />
===npcrole===<br />
A role for an AI controlled sentient: '''Citizen''', '''Worker''', '''Passenger''', '''Crew''', '''Troop''', '''Officer''', '''IndigenousPerson''', '''IndigenousElder''', '''IndigenousHealer''', '''IndigenousStargazer'''.<br />
===orbit===<br />
Orbit: '''Inferno''', '''Inner''', '''Habitable''', '''Outer''' or '''Frigid''' also '''Any''', '''Harsh''' (Inferno or Frigid), '''Mild''' (Inner, Habitable, or Outer), '''Uninhabitable''' (not Habitable).<br />
===quality===<br />
Quality in the range 1 to 255.<br />
===range===<br />
Communication range, not case sensitive.<br />
===real===<br />
Signed real value.<br />
===scenario===<br />
'''Reach for the Stars''', '''Citizen of the Galaxy''', '''The Savage State''', '''Lost Atlantis'''. Comparison is not case sensitive. <br />
===sector===<br />
A variable that references a sector atom.<br />
===sentient===<br />
A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
===ship===<br />
A variable that references a spacecraft atom, could be a station.<br />
===stage===<br />
Growth stage of creature, not case sensitive: '''Mature''', '''Juvenile'''.<br />
===stance===<br />
Political stance, not case sensitive. '''Empire''', '''Vassal''', '''Friend''', '''Neutral''', '''Enemy'''. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
===station===<br />
Station that can be occupied, not case sensitive: '''Command''', '''Citizen''', '''Designer''', '''Engine''', '''FireControl''', '''Game''', '''Helm''', '''Livestock''', '''Medic''', '''Navigation''', '''Patient''', '''Power''', '''Sensor''', '''Shield''', '''Transporter''', '''Troop''', '''Turret'''<br />
===system===<br />
A variable that references a solar system atom.<br />
===text===<br />
Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
===unit===<br />
A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
===vehicle===<br />
A variable that references a vehicle atom.<br />
===visage===<br />
A pose for the face: '''None''', '''Agape''', '''Closed''', '''Cry2Sec''', '''Frown''', '''Grim''', '''Grin''', '''Laugh1Sec''', '''Laugh2Sec''', '''Laugh4Sec''', '''Open''', '''OpenWide''', '''Perplexed''', '''Pursed''', '''Sad''', '''Sardonic''', '''Smile''', and '''Yawn'''.<br />
===void===<br />
A function return value placeholder indicating a function does not return anything.<br />
===world===<br />
A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
====goto blockName====<br />
Unconditional branch to a block of the story.<br />
<br />
====if(bool) blockName====<br />
In the catalyst block, ''if'' tests determine when the story can start for an avatar and which block will begin the story.<br />
<br />
In body blocks, ''if'' tests determine when to branch to another block of the story.<br />
<br />
Each block of the story, including the catalyst, may contain more than one ''if'' to test and branch based on different conditions. The story engine checks the ''if'' conditions of the current block every 10 seconds. Each ''if'' is tested in the order it appears in the script. The first ''if'' to return true results in a branch to its block of the story.<br />
<br />
====choiceValue choiceMade()====<br />
Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
====bool dateIsChristmas()====<br />
Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
====int secondsElapsed()====<br />
Returns the number of seconds that have passed since the current story block was started.<br />
<br />
====bool wait(int)====<br />
Returns true if ''int'' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the ''storyDroppable'' function.<br />
<br />
====void storyAuthor(text)====<br />
Identifies the author of the story. Required in catalyst block.<br />
<br />
====void storyAutoRepeat()====<br />
Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoRepeatUntilComplete()====<br />
Enables the story to automatically start repeatedly, based on the catalyst. <br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed. <br />
<br />
A story that is dropped is not considered to be completed. <br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoStart()====<br />
Enables the story to automatically start once, based on the catalyst. <br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyBrief(text)====<br />
Gives a brief description of the story. Required in catalyst block.<br />
<br />
====void storyDroppable(bool)====<br />
Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script. <br />
<br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story. <br />
<br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way. <br />
<br />
====void storyInterval(int)====<br />
Specifies the time interval in minutes before the story can start again. <br />
<br />
The time interval starts when the story terminates, whether by finishing or by dropping. <br />
<br />
====void storyTitle(text)====<br />
Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
Avatar functions operate on the avatar atom for whom the story is running. <br />
<br />
====avatar avatar()====<br />
Returns the person executing the story.<br />
<br />
====bool avatarConstructedBuildingHabitable(building)====<br />
Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====bool avatarConstructedBuildingHarsh(building)====<br />
Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====void avatarCreditGovtDebt(real)====<br />
Credits the person's government debt account with a number of cronodollars.<br />
<br />
====bool avatarCurrentItem(commodity)====<br />
Test if the person's current item is a commodity.<br />
<br />
====atom avatarEnvironment()====<br />
Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
====int avatarEVAMinutes()====<br />
Returns the number of minutes of EVA experience.<br />
<br />
====bool avatarHadItem(commodity)====<br />
Test if the person's gear has ever contained a commodity.<br />
<br />
====bool avatarHasFood()====<br />
Test if the person's gear contains any food.<br />
<br />
====bool avatarHasItem(commodity)====<br />
Test if the person's gear contains a commodity.<br />
<br />
====bool avatarHasItemInHand(commodity)====<br />
Test if the person is holding a commodity in their hand.<br />
<br />
====bool avatarHasItemInHandSpecific(commodity,quality,empire,text)====<br />
Test if the person is holding a specific commodity in their hand. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarHasItemSpecific(commodity,quality,empire,text)====<br />
Test if the person's gear contains a very specific commodity. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarInCity()====<br />
Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
====bool avatarInitScenario(scenario)====<br />
Test if the person started the game using a specified ''scenario''.<br />
<br />
====bool avatarInOrbit()====<br />
Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
====bool avatarInStudio()====<br />
Test if the person is inside a design studio instance.<br />
<br />
====bool avatarInVehicle(commodity)====<br />
Test if the person is inside a certain type of vehicle.<br />
<br />
====bool avatarInVehicleMoving(commodity)====<br />
Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
====bool avatarInVehicleOnGround(commodity)====<br />
Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
====int avatarItemCount(commodity)====<br />
Returns the amount of a commodity possessed by the avatar.<br />
<br />
====void avatarItemMakePermanent(commodity,quality,empire,text)====<br />
Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void avatarItemSetDropOnDeath(int,commodity,quality,empire,text)====<br />
Sets the ''drop'' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. ''bool'' is the new state.<br />
<br />
====bool avatarLineageAvatar()====<br />
Returns true if the avatar's lineage is a regular avatar.<br />
<br />
====bool avatarLineageDemiavatar()====<br />
Returns true if the avatar's lineage is demiavatar.<br />
<br />
====bool avatarLineageHighborn()====<br />
Returns true if the avatar's lineage is highborn.<br />
<br />
====int avatarOnLineMinutes()====<br />
Returns number of minutes the person has been on line.<br />
<br />
====bool avatarStoryCompleted(int)====<br />
Test if the person has completed a particular story script id.<br />
<br />
====int avatarStoryLastResult(int)====<br />
Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
====void avatarStoryResult(int)====<br />
Stores the result for the current story in an avatar's memory. ''int'' is result, in the range 0 to 255. <br />
<br />
====int avatarVehicleMinutes(commodity)====<br />
Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the ''atom'' argument is not valid, all functions return quietly. <br />
<br />
====atom atom(int)====<br />
Casts ''int'' to be an atom identifier.<br />
<br />
====city atomCity(atom)====<br />
Returns the city capitol building atom whose jurisdiction controls the building site that contains ''atom''. <br />
<br />
The result is 0 if the atom's current building is not part of a city. <br />
<br />
If ''atom'' is on a road, the capitol building whose jurisdiction contains ''atom'' is returned. <br />
<br />
The result is 0 if ''atom'' is not at a building site or on a road in a city. <br />
<br />
====void atomComm(atom,channel,range,text)====<br />
Atom sends a message on a comm channel.<br />
<br />
====void atomCommChannelToAtom(atom,atom,channel)====<br />
Atom opens a channel to the other atom.<br />
<br />
====void atomCommChoice(atom,channel,range,choiceValue,text)====<br />
Atom says a choice on a comm channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage)====<br />
Creates a character near ''atom'', subordinate to the same parent as ''atom''. Will not create the charater if ''atom'' is in a vehicle. <br />
<br />
Arguments:<br />
: ''angle'' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind. <br />
: ''real'' is a distance in meters. <br />
:: The new character's location will be in the domain of ''atom''s parent. i.e. on the same ship or world. The path from ''atom'' to the new character's location will be unobstructed. The final starting location will be no farther than ''real'' meters from ''atom'', even if it means starting on top of ''atom''. It will be closer than ''real'' if the path to the starting location from the ''atom'' is obstructed. <br />
: ''text'' is the name of the new character. <br />
:: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====real atomDistanceToAtom(atom,atom)====<br />
Returns the distance between two atoms, in meters. <br />
<br />
====int atomEmpire(atom)====<br />
Returns id value of an atom's empire. 0 if none.<br />
<br />
====atom atomFindBuilding(atom,building,int,stance,int)====<br />
Locates a building of a specific ''building'' type, subordinate to ''atom''. <br />
<br />
Arguments:<br />
: ''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
: ''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====vehicle atomFindVehicle(atom,commodity,int)====<br />
Locates a vehicle of a specific ''commodity'' type, subordinate to ''atom''. ''int'' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care. <br />
<br />
====bool atomHasAtom(atom,atom)====<br />
Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
====bool atomHasBuilding(atom,building,int,stance,int)====<br />
Test recursively if an atom has a building type. The atom might typically be a system, world or city. <br />
<br />
Arguments:<br />
: ''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
: ''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====bool atomInSystem(atom,system)====<br />
Returns true if atom is in a solar system.<br />
<br />
====bool atomIsAtom(atom,atom)====<br />
Returns true if atom == atom and atom is valid.<br />
<br />
====sector atomSector(atom)====<br />
Returns the sector atom that contains ''atom''.<br />
<br />
====bool atomValid(atom)====<br />
Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
====world atomWorld(atom)====<br />
Returns the world atom that contains ''atom''. ''atom'' may be subordinate to the world at any subatom level or distance, possibly in space. <br />
<br />
Returns ''atom'' if atom is a world.<br />
<br />
====ll atomWorldLL(atom)====<br />
Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time. <br />
<br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
====bool blueprintSpacecraftLoad(int)====<br />
Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story. <br />
<br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously. <br />
<br />
====void characterDepart(character)====<br />
Causes a character to depart the scene. The character disappears instantly with no visual effect. <br />
<br />
====void characterDie(character)====<br />
Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time. <br />
<br />
====void characterEquipFromCity(character,gearslot,commodity,text)====<br />
Transfer an item to a character's gear from the inventory of the current city. <br />
<br />
Arguments:<br />
: ''text'' is an optional inscription to place on the item.<br />
<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
====void characterSetIndestructible(character,bool)====<br />
Sets indestructible state of a character. <br />
<br />
====void characterWantItem(character,commodity)====<br />
Causes the character to want a specific commodity. <br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
====void characterWantItemSpecific(character,commodity,quality,empire,text)====<br />
Causes the character to want a very specific commodity. <br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank. <br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom. <br />
<br />
====vehicle cityFindNewVehicle(city,commodity)====<br />
Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
====bool cityHasBuilding(city,building,int)====<br />
Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building. <br />
<br />
====bool cityHasFood(city)====<br />
Test if a city has any food in any of its buildings.<br />
<br />
====bool cityHasItem(city,commodity)====<br />
Test if a city has a commodity in any of its buildings. <br />
<br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
====bool cityHasPower(city)====<br />
Test if a city has any electricity. <br />
<br />
Arguments:<br />
: ''city'' can be any building. <br />
<br />
====int cityItemCount(city,commodity)====<br />
Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
====int cityPopulation(city)====<br />
Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions. <br />
<br />
====bool creatureIsDyingOrDead(creature)====<br />
Test if the creature's body is dying or dead.<br />
<br />
====void creatureSetHealth(creature,int)====<br />
Sets health level of a creature. <br />
<br />
Arguments:<br />
: ''int'' is the health level as a percentage, 0 to 100.<br />
<br />
====void creatureSetMouth(creature,visage,visage)====<br />
Sets ''visage'' pose of a creature. <br />
<br />
When the first ''visage'' pose is an animated pose, the second ''visage'' pose is set when the animation completes. <br />
<br />
====void creatureSetVisage(creature,visage)====<br />
Sets ''visage'' of a creature. <br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar. <br />
<br />
====world findGasGiant(orbit)====<br />
Locates a gas giant in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findMoon(orbit)====<br />
Locates a moon in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findPlanet(orbit,int)====<br />
Locates a planet in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types. <br />
: ''int'' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
====world findRing(orbit)====<br />
Locates a ring around a world in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findRingWorld()====<br />
Locates a ringworld arc section in the current environment. <br />
<br />
Arguments:<br />
: Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector. <br />
<br />
====text hengeSystemName(system)====<br />
Returns the name of a solar system that is known to contain a henge, as returned by the ''sectorHengeSystem'' function. <br />
<br />
====worldcat hengeSystemWorld(system,int)====<br />
Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city. <br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====world hengeWorld(worldcat)====<br />
Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
====ll hengeWorldLL(worldcat)====<br />
Returns the longitude latitude of a henge if there is one. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
====text hengeWorldName(worldcat)====<br />
Returns the name assigned to a henge world, given its catalog name.<br />
<br />
====bool hengeWorldPortalActive(worldcat,ll)====<br />
Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions. <br />
<br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that. <br />
<br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom. <br />
<br />
====void itemArmWeapon(item,unit,empire)====<br />
Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive. <br />
<br />
Arguments:<br />
: ''unit'' is the unit who armed the weapon. <br />
: ''empire'' is the empire who armed the weapon. <br />
<br />
====void itemCreateContent(item,bool,int,commodity,quality,empire,text)====<br />
Creates a new item inside ''item'', which is expected to be a container. <br />
<br />
Arguments:<br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''int'' is condition percent, 1 to 100. <br />
: If ''text'' is not blank, it is inscribed onto the item.<br />
<br />
====void itemDetonate(item)====<br />
Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
====void itemMakePermanent(item)====<br />
Changes a story item into a permanent item. <br />
<br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
====item itemOnGround(commodity,real)====<br />
Locates an item on the ground nearby. <br />
<br />
Arguments:<br />
: ''real'' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
====item itemOnGroundSpecific(int,commodity,quality,empire,text)====<br />
Locates a specific item on the ground nearby. <br />
<br />
Arguments:<br />
: ''int'' is the farthest distance from the story avatar to find the item, in meters. <br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void itemSetDropOnDeath(item,int)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
<br />
Arguments:<br />
: ''int'' is the new state.<br />
<br />
====void itemSetMessage(item,text)====<br />
Sets the message of an item, such as a beacon. This is not the inscription. <br />
<br />
Arguments:<br />
: ''text'' is the new message.<br />
<br />
====void itemSetState(item,int)====<br />
Sets the state of an item, such as the on/off state of a light or musical instrument. <br />
<br />
Arguments:<br />
: ''int'' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source. <br />
<br />
====void narratorHint(text)====<br />
Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window. <br />
<br />
====void narratorImage(file,text,text)====<br />
Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window. <br />
<br />
====void narratorSay(text)====<br />
Sends a text message on the narrator comm channel. <br />
<br />
====void narratorSayAudio(file,text)====<br />
Sends audio and an optional text message on the narrator comm channel.<br />
<br />
====void narratorSayChoice(choiceValue,text)====<br />
Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====void narratorTitle(text)====<br />
Sends a text message on the narrator comm channel formatted as a title. <br />
<br />
====void narratorVideo(file,text)====<br />
Sends video and an optional text message on the narrator comm channel. <br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled. <br />
<br />
====void npcSetRole(npcrole)====<br />
Changes the role of an npc. <br />
<br />
The role of an npc cannot be changed while they hold a berth. <br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions. <br />
<br />
====bool sectorHasHengeSystem(sector,int)====<br />
Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city. <br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====system sectorHengeSystem(sector,int)====<br />
Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city. <br />
<br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions. <br />
<br />
====void sentientAttackUnit(sentient,unit)====<br />
Order a sentient to attack a unit.<br />
<br />
====void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text)====<br />
Create an item in a sentient's gear. <br />
<br />
Arguments:<br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''text'' is inscribed on the item if not blank.<br />
<br />
====item sentientDropGear(sentient,gearslot)====<br />
Drops the item at a sentient's gear slot.<br />
<br />
====item sentientDropGearItem(sentient,commodity)====<br />
Drops an item from a sentient's gear.<br />
<br />
====void sentientFireWeapon(sentient)====<br />
Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
====void sentientFollowAvatar(sentient)====<br />
Order a sentient to follow the person.<br />
<br />
====void sentientFollowSentient(sentient,sentient)====<br />
Order a sentient to follow another sentient.<br />
<br />
====void sentientGetItem(sentient,item)====<br />
Order a sentient to pick an item up off the ground.<br />
<br />
====void sentientGoToAvatar(sentient)====<br />
Order a sentient to go to the avatar.<br />
<br />
====void sentientGoToLL(sentient,ll)====<br />
Order a sentient to go to a longitude latitude.<br />
<br />
====void sentientGoToLLExactly(sentient,ll)====<br />
Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
====void sentientGoToRoom(sentient,text)====<br />
Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
====void sentientGoToUnit(sentient,unit)====<br />
Order a sentient to go to a unit.<br />
<br />
====bool sentientHasItem(sentient,commodity)====<br />
Test if the sentient possesses a specific commodity.<br />
<br />
====bool sentientHasItemSpecific(sentient,commodity,quality,empire,text)====<br />
Test if the sentient's gear contains a very specific commodity. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientHengeCeremony(sentient,ll)====<br />
Order a sentient to perform the henge ceremony, if a henge is found near ''ll''.<br />
<br />
====void sentientItemMakePermanent(sentient,commodity,quality,empire,text)====<br />
Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
<br />
Arguments:<br />
: ''bool'' is the new state.<br />
<br />
====void sentientMoveBack(sentient,real)====<br />
Order a sentient to move backward a distance specified in meters.<br />
<br />
====void sentientMoveForward(sentient,real)====<br />
Order a sentient to move forward a distance specified in meters.<br />
<br />
====void sentientSay(sentient,text,visage)====<br />
Order a sentient being to say a message on the Voice channel.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayAudio(sentient,file,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayChoice(sentient,choiceValue,text,visage)====<br />
Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function. <br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayImage(sentient,file,text,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
<br />
Arguments:<br />
: ''text'' args are image title and text to say. <br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayTo(sentient,atom,text,visage)====<br />
Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSellGearItem(sentient,atom,commodity,int)====<br />
Offers an item from a sentient's gear on the Voice channel. <br />
<br />
Arguments:<br />
: ''atom'' is the target of the sale, causing sentient to turn to face them; it can be null. <br />
: The best Q ''commodity'' possessed by ''sentient'' is offered for sale. <br />
: ''int'' is the price, which can be 0 to offer it for free. <br />
<br />
====void sentientStay(sentient)====<br />
Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions. <br />
<br />
====void shipChargeCapacitor(ship)====<br />
Fills the capacitor to 100% on a ship.<br />
<br />
====void shipChargeShields(ship)====<br />
Fills the shields to 100% on a ship.<br />
<br />
====character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage)====<br />
Creates a character aboard ''ship''. <br />
<br />
Arguments:<br />
: ''int'' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location. <br />
: ''text'' is the name of the new character. <br />
:: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void shipCreateCrew(ship,dna)====<br />
Fills all empty crew positions on a ship. <br />
<br />
Arguments:<br />
: ''dna'' is used to create the new crew members.<br />
<br />
====void shipCreateTroops(ship,dna)====<br />
Fills all empty troop positions on a ship. <br />
<br />
Arguments:<br />
: ''dna'' is used to create the new troops.<br />
<br />
====sentient shipFindAI(ship,npcrole)====<br />
Locates an AI controlled sentient aboard a ship. <br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
====sentient shipFindAIInRoom(ship,npcrole,text)====<br />
Locates an AI controlled sentient aboard a ship, in a specific room. <br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====npc shipFindNpc(ship,npcrole)====<br />
Locates an npc aboard a ship. <br />
<br />
Does not find demiavatars. <br />
<br />
====npc shipFindNpcInRoom(ship,npcrole,text)====<br />
Locates an npc aboard a ship, in a specific room. <br />
<br />
Does not find demiavatars. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====void shipInteriorLight(ship,int)====<br />
Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
====void shipManeuverDrive(ship,int)====<br />
Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
====void shipPowerPlant(ship,int)====<br />
Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
====void shipRefuel(ship,int)====<br />
Fills the fuel cells to 100% on a ship with ''int'' quality fuel.<br />
<br />
====void shipRetreat(ship)====<br />
Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
====void shipShields(ship,int)====<br />
Sets a ship's shield state. 0=off, 1=on.<br />
<br />
====creature shipStationOccupant(ship,station)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
<br />
Designer returns an avatar in a designer instance. <br />
<br />
Livestock returns an animal. <br />
<br />
====creature shipStationOccupantInRoom(ship,station,text)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
<br />
Designer returns an avatar in a designer instance. <br />
<br />
Livestock returns an animal. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft. <br />
<br />
====ship unitAboardShip(unit)====<br />
Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
====bool unitAtBuilding(unit,building)====<br />
Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
====world unitAtWorld(unit)====<br />
Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
====bool unitInOrbit(unit)====<br />
Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
====ship unitInsideShip(unit)====<br />
Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
====text unitRoomName(unit)====<br />
Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room. <br />
<br />
====ship unitStationInTradeRange(unit,stance,int)====<br />
Returns station that is within trade range of the unit. <br />
<br />
Arguments:<br />
: ''stance'' and ''int'' are used to check the station empire's stance toward the unit's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions. <br />
<br />
====void vehicleRefuel(vehicle)====<br />
Fills the fuel cells to 100% on a vehicle. <br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions. <br />
<br />
====bool worldAtmosphereBreathable(world)====<br />
Test if the world atmosphere is breathable.<br />
<br />
====bool worldClaimed(world)====<br />
Test if the world is claimed by any empire.<br />
<br />
====bool worldClaimedBy(world,empire)====<br />
Test if the world is claimed by ''empire''.<br />
<br />
====character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage)====<br />
Creates a character on ''world'' at ''ll''. <br />
<br />
Arguments:<br />
: ''text'' is the name of the new character. <br />
: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void worldCreateIndigenous(world,ll,dna)====<br />
Create an indigenous village on a world. Establishes the indigenous DNA using ''dna'' if it is not already set.<br />
<br />
====item worldCreateItem(world,ll,bool,commodity,quality,empire,text)====<br />
Create an item on a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the item. <br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''text'' is inscribed on the item if not blank.<br />
<br />
====ship worldCreateShip(world,ll,real,int,quality,empire,text)====<br />
Create a spaceship at a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed. <br />
: ''real'' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
: ''int'' is the design id of the ship. <br />
: ''empire'' is the empire who owns the spaceship. <br />
: ''text'' is the name of the ship, set randomly if this is blank.<br />
<br />
====vehicle worldCreateVehicle(world,ll,commodity,quality,empire)====<br />
Create a vehicle on a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed. <br />
: ''empire'' is the empire who owns the vehicle.<br />
<br />
====bool worldHasCity(world)====<br />
Test if the world has any cities at all.<br />
<br />
====void worldHengeCeremony(world,ll,int)====<br />
Sets the state of the henge ceremony, if there is a henge. <br />
<br />
Arguments:<br />
: ''int'' is ceremony state: 1=Active, 0=inactive.<br />
<br />
====int worldHydrographics(world)====<br />
Returns the world's water percentage in the range 0 to 100.<br />
<br />
====bool worldIsGasGiant(world)====<br />
Test if the world is a gas giant.<br />
<br />
====bool worldIsMoon(world)====<br />
Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
====bool worldIsPlanet(world)====<br />
Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
====bool worldIsPlanetoid(world)====<br />
Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
====bool worldIsRing(world)====<br />
Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
====bool worldIsRingworld(world)====<br />
Test if the world is a ringworld arc section.<br />
<br />
====bool worldIsTitan(world)====<br />
Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
====ll worldLandLocation(world,real,real)====<br />
Returns a location that is on land. <br />
<br />
Arguments:<br />
: First ''real'' is minimum altitude MSL, in meters. <br />
: Second ''real'' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
====ll worldLandLocationNear(world,ll,real,real,real)====<br />
Returns a location that is on land somewhere near ''ll''. <br />
<br />
Arguments:<br />
: First ''real'' is minimum altitude MSL, in meters. <br />
: Second ''real'' is minimum distance from ''ll'', in meters. <br />
: Third ''real'' is maximum distance from ''ll'', in meters.<br />
<br />
====bool worldOrbitFrigid(world)====<br />
Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitHabitable(world)====<br />
Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInferno(world)====<br />
Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInner(world)====<br />
Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitOuter(world)====<br />
Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====ll worldRelativeLL(world,ll,real,real)====<br />
Returns a location that is offset from another location. <br />
<br />
Arguments:<br />
: ''ll'' is the reference location. <br />
: ''real,real'' is horizontal, vertical offset, in meters.<br />
<br />
====void worldScheduleAsteroid(world,int)====<br />
Schedules an asteroid to destroy the world in ''int'' minutes. <br />
<br />
Arguments:<br />
: ''world'' is the world that will be the target of the asteroid. <br />
: ''int'' is the number of minutes before impact. Must be at least 1.<br />
<br />
====bool worldSupportsAnimals(world)====<br />
Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals. <br />
<br />
All worlds that support animals also support plants. <br />
<br />
====bool worldSupportsPlants(world)====<br />
Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants. <br />
<br />
Worlds that support plants do not necessarily support animals.</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9861Story Script2021-02-25T17:50:55Z<p>Haxus: /* Functions */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
===angle===<br />
Angle in degrees, in the range -360 to 360.<br />
===animal===<br />
A wild animal. A creature that is not sentient.<br />
===atom===<br />
A variable that references an atom. Most objects in the game universe are atoms.<br />
===avatar===<br />
A variable that references an avatar atom.<br />
===bool===<br />
Boolean value returned by calling one or more functions. Can use logical operators '''&''', '''|''', and '''!'''.<br />
===bool===<br />
Boolean argument. Accepts '''true''' or '''false''', not case sensitive.<br />
===building===<br />
Building name, not case sensitive.<br />
===city===<br />
A variable that references a capitol building atom.<br />
===commodity===<br />
Commodity name, not case sensitive.<br />
===channel===<br />
Communication channel name. Not limited to standard channel names.<br />
===character===<br />
A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
===choiceValue===<br />
A value associated with multiple choices, in the range -127 to 127.<br />
===creature===<br />
A variable that references a creature atom. Animals and sentients are creature atoms.<br />
===dna===<br />
DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a city.<br />
===empire===<br />
Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
===file===<br />
A file name found in the same path as the script.<br />
===gearslot===<br />
Gear slot, not case sensitive: '''Hand''', '''Head''', '''Face''', '''Neck''', '''Body''', '''Wear''', '''Limb''', '''Digit''', '''Waist'''. <br />
<br />
All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. <br />
<br />
All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. <br />
<br />
All creatures have at least one body slot for carrying gear. <br />
<br />
Wear is specifically for things worn on the body, such as clothing and armor. <br />
<br />
Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. <br />
<br />
Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. <br />
<br />
All creatures have four waist slots; there is a size limit to items placed at the waist. <br />
===gender===<br />
Gender of creature, not case sensitive: '''Male''', '''Female''', '''Asexual''', '''Hermaphrodite'''.<br />
===hand===<br />
Dominant hand of creature, not case sensitive: '''Left Handed''', '''Right Handed'''<br />
===int===<br />
Signed integer value. Decimals are truncated.<br />
===item===<br />
A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
===ll===<br />
A variable that contains a longitude latitude coordinate on a world.<br />
===npc===<br />
A variable that references an npc atom. All AI controlled citizens are npc atoms.<br />
===npcrole===<br />
A role for an AI controlled sentient: '''Citizen''', '''Worker''', '''Passenger''', '''Crew''', '''Troop''', '''Officer''', '''IndigenousPerson''', '''IndigenousElder''', '''IndigenousHealer''', '''IndigenousStargazer'''.<br />
===orbit===<br />
Orbit: '''Inferno''', '''Inner''', '''Habitable''', '''Outer''' or '''Frigid''' also '''Any''', '''Harsh''' (Inferno or Frigid), '''Mild''' (Inner, Habitable, or Outer), '''Uninhabitable''' (not Habitable).<br />
===quality===<br />
Quality in the range 1 to 255.<br />
===range===<br />
Communication range, not case sensitive.<br />
===real===<br />
Signed real value.<br />
===scenario===<br />
'''Reach for the Stars''', '''Citizen of the Galaxy''', '''The Savage State''', '''Lost Atlantis'''. Comparison is not case sensitive. <br />
===sector===<br />
A variable that references a sector atom.<br />
===sentient===<br />
A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
===ship===<br />
A variable that references a spacecraft atom, could be a station.<br />
===stage===<br />
Growth stage of creature, not case sensitive: '''Mature''', '''Juvenile'''.<br />
===stance===<br />
Political stance, not case sensitive. '''Empire''', '''Vassal''', '''Friend''', '''Neutral''', '''Enemy'''. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
===station===<br />
Station that can be occupied, not case sensitive: '''Command''', '''Citizen''', '''Designer''', '''Engine''', '''FireControl''', '''Game''', '''Helm''', '''Livestock''', '''Medic''', '''Navigation''', '''Patient''', '''Power''', '''Sensor''', '''Shield''', '''Transporter''', '''Troop''', '''Turret'''<br />
===system===<br />
A variable that references a solar system atom.<br />
===text===<br />
Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
===unit===<br />
A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
===vehicle===<br />
A variable that references a vehicle atom.<br />
===void===<br />
A function return value placeholder indicating a function does not return anything.<br />
===world===<br />
A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
====goto blockName====<br />
Unconditional branch to a block of the story.<br />
<br />
====if(bool) blockName====<br />
In the catalyst block, ''if'' tests determine when the story can start for an avatar and which block will begin the story.<br />
<br />
In body blocks, ''if'' tests determine when to branch to another block of the story.<br />
<br />
Each block of the story, including the catalyst, may contain more than one ''if'' to test and branch based on different conditions. The story engine checks the ''if'' conditions of the current block every 10 seconds. Each ''if'' is tested in the order it appears in the script. The first ''if'' to return true results in a branch to its block of the story.<br />
<br />
====choiceValue choiceMade()====<br />
Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
====bool dateIsChristmas()====<br />
Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
====int secondsElapsed()====<br />
Returns the number of seconds that have passed since the current story block was started.<br />
<br />
====bool wait(int)====<br />
Returns true if ''int'' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the ''storyDroppable'' function.<br />
<br />
====void storyAuthor(text)====<br />
Identifies the author of the story. Required in catalyst block.<br />
<br />
====void storyAutoRepeat()====<br />
Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoRepeatUntilComplete()====<br />
Enables the story to automatically start repeatedly, based on the catalyst. <br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed. <br />
<br />
A story that is dropped is not considered to be completed. <br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoStart()====<br />
Enables the story to automatically start once, based on the catalyst. <br />
<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyBrief(text)====<br />
Gives a brief description of the story. Required in catalyst block.<br />
<br />
====void storyDroppable(bool)====<br />
Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script. <br />
<br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story. <br />
<br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way. <br />
<br />
====void storyInterval(int)====<br />
Specifies the time interval in minutes before the story can start again. <br />
<br />
The time interval starts when the story terminates, whether by finishing or by dropping. <br />
<br />
====void storyTitle(text)====<br />
Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
Avatar functions operate on the avatar atom for whom the story is running. <br />
<br />
====avatar avatar()====<br />
Returns the person executing the story.<br />
<br />
====bool avatarConstructedBuildingHabitable(building)====<br />
Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====bool avatarConstructedBuildingHarsh(building)====<br />
Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====void avatarCreditGovtDebt(real)====<br />
Credits the person's government debt account with a number of cronodollars.<br />
<br />
====bool avatarCurrentItem(commodity)====<br />
Test if the person's current item is a commodity.<br />
<br />
====atom avatarEnvironment()====<br />
Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
====int avatarEVAMinutes()====<br />
Returns the number of minutes of EVA experience.<br />
<br />
====bool avatarHadItem(commodity)====<br />
Test if the person's gear has ever contained a commodity.<br />
<br />
====bool avatarHasFood()====<br />
Test if the person's gear contains any food.<br />
<br />
====bool avatarHasItem(commodity)====<br />
Test if the person's gear contains a commodity.<br />
<br />
====bool avatarHasItemInHand(commodity)====<br />
Test if the person is holding a commodity in their hand.<br />
<br />
====bool avatarHasItemInHandSpecific(commodity,quality,empire,text)====<br />
Test if the person is holding a specific commodity in their hand. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarHasItemSpecific(commodity,quality,empire,text)====<br />
Test if the person's gear contains a very specific commodity. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarInCity()====<br />
Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
====bool avatarInitScenario(scenario)====<br />
Test if the person started the game using a specified ''scenario''.<br />
<br />
====bool avatarInOrbit()====<br />
Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
====bool avatarInStudio()====<br />
Test if the person is inside a design studio instance.<br />
<br />
====bool avatarInVehicle(commodity)====<br />
Test if the person is inside a certain type of vehicle.<br />
<br />
====bool avatarInVehicleMoving(commodity)====<br />
Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
====bool avatarInVehicleOnGround(commodity)====<br />
Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
====int avatarItemCount(commodity)====<br />
Returns the amount of a commodity possessed by the avatar.<br />
<br />
====void avatarItemMakePermanent(commodity,quality,empire,text)====<br />
Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void avatarItemSetDropOnDeath(int,commodity,quality,empire,text)====<br />
Sets the ''drop'' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. ''bool'' is the new state.<br />
<br />
====bool avatarLineageAvatar()====<br />
Returns true if the avatar's lineage is a regular avatar.<br />
<br />
====bool avatarLineageDemiavatar()====<br />
Returns true if the avatar's lineage is demiavatar.<br />
<br />
====bool avatarLineageHighborn()====<br />
Returns true if the avatar's lineage is highborn.<br />
<br />
====int avatarOnLineMinutes()====<br />
Returns number of minutes the person has been on line.<br />
<br />
====bool avatarStoryCompleted(int)====<br />
Test if the person has completed a particular story script id.<br />
<br />
====int avatarStoryLastResult(int)====<br />
Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
====void avatarStoryResult(int)====<br />
Stores the result for the current story in an avatar's memory. ''int'' is result, in the range 0 to 255. <br />
<br />
====int avatarVehicleMinutes(commodity)====<br />
Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the ''atom'' argument is not valid, all functions return quietly. <br />
<br />
====atom atom(int)====<br />
Casts ''int'' to be an atom identifier.<br />
<br />
====city atomCity(atom)====<br />
Returns the city capitol building atom whose jurisdiction controls the building site that contains ''atom''. <br />
<br />
The result is 0 if the atom's current building is not part of a city. <br />
<br />
If ''atom'' is on a road, the capitol building whose jurisdiction contains ''atom'' is returned. <br />
<br />
The result is 0 if ''atom'' is not at a building site or on a road in a city. <br />
<br />
====void atomComm(atom,channel,range,text)====<br />
Atom sends a message on a comm channel.<br />
<br />
====void atomCommChannelToAtom(atom,atom,channel)====<br />
Atom opens a channel to the other atom.<br />
<br />
====void atomCommChoice(atom,channel,range,choiceValue,text)====<br />
Atom says a choice on a comm channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage)====<br />
Creates a character near ''atom'', subordinate to the same parent as ''atom''. Will not create the charater if ''atom'' is in a vehicle. <br />
<br />
Arguments:<br />
: ''angle'' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind. <br />
: ''real'' is a distance in meters. <br />
:: The new character's location will be in the domain of ''atom''s parent. i.e. on the same ship or world. The path from ''atom'' to the new character's location will be unobstructed. The final starting location will be no farther than ''real'' meters from ''atom'', even if it means starting on top of ''atom''. It will be closer than ''real'' if the path to the starting location from the ''atom'' is obstructed. <br />
: ''text'' is the name of the new character. <br />
:: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====real atomDistanceToAtom(atom,atom)====<br />
Returns the distance between two atoms, in meters. <br />
<br />
====int atomEmpire(atom)====<br />
Returns id value of an atom's empire. 0 if none.<br />
<br />
====atom atomFindBuilding(atom,building,int,stance,int)====<br />
Locates a building of a specific ''building'' type, subordinate to ''atom''. <br />
<br />
Arguments:<br />
: ''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
: ''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====vehicle atomFindVehicle(atom,commodity,int)====<br />
Locates a vehicle of a specific ''commodity'' type, subordinate to ''atom''. ''int'' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care. <br />
<br />
====bool atomHasAtom(atom,atom)====<br />
Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
====bool atomHasBuilding(atom,building,int,stance,int)====<br />
Test recursively if an atom has a building type. The atom might typically be a system, world or city. <br />
<br />
Arguments:<br />
: ''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
: ''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====bool atomInSystem(atom,system)====<br />
Returns true if atom is in a solar system.<br />
<br />
====bool atomIsAtom(atom,atom)====<br />
Returns true if atom == atom and atom is valid.<br />
<br />
====sector atomSector(atom)====<br />
Returns the sector atom that contains ''atom''.<br />
<br />
====bool atomValid(atom)====<br />
Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
====world atomWorld(atom)====<br />
Returns the world atom that contains ''atom''. ''atom'' may be subordinate to the world at any subatom level or distance, possibly in space. <br />
<br />
Returns ''atom'' if atom is a world.<br />
<br />
====ll atomWorldLL(atom)====<br />
Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time. <br />
<br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
====bool blueprintSpacecraftLoad(int)====<br />
Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story. <br />
<br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously. <br />
<br />
====void characterDepart(character)====<br />
Causes a character to depart the scene. The character disappears instantly with no visual effect. <br />
<br />
====void characterDie(character)====<br />
Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time. <br />
<br />
====void characterEquipFromCity(character,gearslot,commodity,text)====<br />
Transfer an item to a character's gear from the inventory of the current city. <br />
<br />
Arguments:<br />
: ''text'' is an optional inscription to place on the item.<br />
<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
====void characterSetIndestructible(character,bool)====<br />
Sets indestructible state of a character. <br />
<br />
====void characterWantItem(character,commodity)====<br />
Causes the character to want a specific commodity. <br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
====void characterWantItemSpecific(character,commodity,quality,empire,text)====<br />
Causes the character to want a very specific commodity. <br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank. <br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom. <br />
<br />
====vehicle cityFindNewVehicle(city,commodity)====<br />
Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
====bool cityHasBuilding(city,building,int)====<br />
Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building. <br />
<br />
====bool cityHasFood(city)====<br />
Test if a city has any food in any of its buildings.<br />
<br />
====bool cityHasItem(city,commodity)====<br />
Test if a city has a commodity in any of its buildings. <br />
<br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
====bool cityHasPower(city)====<br />
Test if a city has any electricity. <br />
<br />
Arguments:<br />
: ''city'' can be any building. <br />
<br />
====int cityItemCount(city,commodity)====<br />
Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
====int cityPopulation(city)====<br />
Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions. <br />
<br />
====bool creatureIsDyingOrDead(creature)====<br />
Test if the creature's body is dying or dead.<br />
<br />
====void creatureSetHealth(creature,int)====<br />
Sets health level of a creature. <br />
<br />
Arguments:<br />
: ''int'' is the health level as a percentage, 0 to 100.<br />
<br />
====void creatureSetMouth(creature,visage,visage)====<br />
Sets ''visage'' pose of a creature. <br />
<br />
When the first ''visage'' pose is an animated pose, the second ''visage'' pose is set when the animation completes. <br />
<br />
====void creatureSetVisage(creature,visage)====<br />
Sets ''visage'' of a creature. <br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar. <br />
<br />
====world findGasGiant(orbit)====<br />
Locates a gas giant in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findMoon(orbit)====<br />
Locates a moon in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findPlanet(orbit,int)====<br />
Locates a planet in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types. <br />
: ''int'' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
====world findRing(orbit)====<br />
Locates a ring around a world in the current environment. Avatar must not be in deep space. <br />
<br />
Arguments:<br />
: ''orbit'' may include the also types.<br />
<br />
====world findRingWorld()====<br />
Locates a ringworld arc section in the current environment. <br />
<br />
Arguments:<br />
: Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector. <br />
<br />
====text hengeSystemName(system)====<br />
Returns the name of a solar system that is known to contain a henge, as returned by the ''sectorHengeSystem'' function. <br />
<br />
====worldcat hengeSystemWorld(system,int)====<br />
Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city. <br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====world hengeWorld(worldcat)====<br />
Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
====ll hengeWorldLL(worldcat)====<br />
Returns the longitude latitude of a henge if there is one. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
====text hengeWorldName(worldcat)====<br />
Returns the name assigned to a henge world, given its catalog name.<br />
<br />
====bool hengeWorldPortalActive(worldcat,ll)====<br />
Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal. <br />
<br />
Arguments:<br />
: ''worldcat'' is a catalog name of a henge world. <br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions. <br />
<br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that. <br />
<br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom. <br />
<br />
====void itemArmWeapon(item,unit,empire)====<br />
Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive. <br />
<br />
Arguments:<br />
: ''unit'' is the unit who armed the weapon. <br />
: ''empire'' is the empire who armed the weapon. <br />
<br />
====void itemCreateContent(item,bool,int,commodity,quality,empire,text)====<br />
Creates a new item inside ''item'', which is expected to be a container. <br />
<br />
Arguments:<br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''int'' is condition percent, 1 to 100. <br />
: If ''text'' is not blank, it is inscribed onto the item.<br />
<br />
====void itemDetonate(item)====<br />
Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
====void itemMakePermanent(item)====<br />
Changes a story item into a permanent item. <br />
<br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
====item itemOnGround(commodity,real)====<br />
Locates an item on the ground nearby. <br />
<br />
Arguments:<br />
: ''real'' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
====item itemOnGroundSpecific(int,commodity,quality,empire,text)====<br />
Locates a specific item on the ground nearby. <br />
<br />
Arguments:<br />
: ''int'' is the farthest distance from the story avatar to find the item, in meters. <br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void itemSetDropOnDeath(item,int)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
<br />
Arguments:<br />
: ''int'' is the new state.<br />
<br />
====void itemSetMessage(item,text)====<br />
Sets the message of an item, such as a beacon. This is not the inscription. <br />
<br />
Arguments:<br />
: ''text'' is the new message.<br />
<br />
====void itemSetState(item,int)====<br />
Sets the state of an item, such as the on/off state of a light or musical instrument. <br />
<br />
Arguments:<br />
: ''int'' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source. <br />
<br />
====void narratorHint(text)====<br />
Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window. <br />
<br />
====void narratorImage(file,text,text)====<br />
Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window. <br />
<br />
====void narratorSay(text)====<br />
Sends a text message on the narrator comm channel. <br />
<br />
====void narratorSayAudio(file,text)====<br />
Sends audio and an optional text message on the narrator comm channel.<br />
<br />
====void narratorSayChoice(choiceValue,text)====<br />
Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====void narratorTitle(text)====<br />
Sends a text message on the narrator comm channel formatted as a title. <br />
<br />
====void narratorVideo(file,text)====<br />
Sends video and an optional text message on the narrator comm channel. <br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled. <br />
<br />
====void npcSetRole(npcrole)====<br />
Changes the role of an npc. <br />
<br />
The role of an npc cannot be changed while they hold a berth. <br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions. <br />
<br />
====bool sectorHasHengeSystem(sector,int)====<br />
Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city. <br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====system sectorHengeSystem(sector,int)====<br />
Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city. <br />
<br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
<br />
Arguments:<br />
: ''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions. <br />
<br />
====void sentientAttackUnit(sentient,unit)====<br />
Order a sentient to attack a unit.<br />
<br />
====void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text)====<br />
Create an item in a sentient's gear. <br />
<br />
Arguments:<br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''text'' is inscribed on the item if not blank.<br />
<br />
====item sentientDropGear(sentient,gearslot)====<br />
Drops the item at a sentient's gear slot.<br />
<br />
====item sentientDropGearItem(sentient,commodity)====<br />
Drops an item from a sentient's gear.<br />
<br />
====void sentientFireWeapon(sentient)====<br />
Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
====void sentientFollowAvatar(sentient)====<br />
Order a sentient to follow the person.<br />
<br />
====void sentientFollowSentient(sentient,sentient)====<br />
Order a sentient to follow another sentient.<br />
<br />
====void sentientGetItem(sentient,item)====<br />
Order a sentient to pick an item up off the ground.<br />
<br />
====void sentientGoToAvatar(sentient)====<br />
Order a sentient to go to the avatar.<br />
<br />
====void sentientGoToLL(sentient,ll)====<br />
Order a sentient to go to a longitude latitude.<br />
<br />
====void sentientGoToLLExactly(sentient,ll)====<br />
Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
====void sentientGoToRoom(sentient,text)====<br />
Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
====void sentientGoToUnit(sentient,unit)====<br />
Order a sentient to go to a unit.<br />
<br />
====bool sentientHasItem(sentient,commodity)====<br />
Test if the sentient possesses a specific commodity.<br />
<br />
====bool sentientHasItemSpecific(sentient,commodity,quality,empire,text)====<br />
Test if the sentient's gear contains a very specific commodity. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientHengeCeremony(sentient,ll)====<br />
Order a sentient to perform the henge ceremony, if a henge is found near ''ll''.<br />
<br />
====void sentientItemMakePermanent(sentient,commodity,quality,empire,text)====<br />
Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
: ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
<br />
Arguments:<br />
: ''bool'' is the new state.<br />
<br />
====void sentientMoveBack(sentient,real)====<br />
Order a sentient to move backward a distance specified in meters.<br />
<br />
====void sentientMoveForward(sentient,real)====<br />
Order a sentient to move forward a distance specified in meters.<br />
<br />
====void sentientSay(sentient,text,visage)====<br />
Order a sentient being to say a message on the Voice channel.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayAudio(sentient,file,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayChoice(sentient,choiceValue,text,visage)====<br />
Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk. <br />
<br />
Several choices may be stated if each is given a different choiceValue. <br />
<br />
Result of player's choice is tested using the choiceMade function. <br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayImage(sentient,file,text,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
<br />
Arguments:<br />
: ''text'' args are image title and text to say. <br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayTo(sentient,atom,text,visage)====<br />
Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
<br />
Arguments:<br />
: ''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSellGearItem(sentient,atom,commodity,int)====<br />
Offers an item from a sentient's gear on the Voice channel. <br />
<br />
Arguments:<br />
: ''atom'' is the target of the sale, causing sentient to turn to face them; it can be null. <br />
: The best Q ''commodity'' possessed by ''sentient'' is offered for sale. <br />
: ''int'' is the price, which can be 0 to offer it for free. <br />
<br />
====void sentientStay(sentient)====<br />
Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions. <br />
<br />
====void shipChargeCapacitor(ship)====<br />
Fills the capacitor to 100% on a ship.<br />
<br />
====void shipChargeShields(ship)====<br />
Fills the shields to 100% on a ship.<br />
<br />
====character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage)====<br />
Creates a character aboard ''ship''. <br />
<br />
Arguments:<br />
: ''int'' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location. <br />
: ''text'' is the name of the new character. <br />
:: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void shipCreateCrew(ship,dna)====<br />
Fills all empty crew positions on a ship. <br />
<br />
Arguments:<br />
: ''dna'' is used to create the new crew members.<br />
<br />
====void shipCreateTroops(ship,dna)====<br />
Fills all empty troop positions on a ship. <br />
<br />
Arguments:<br />
: ''dna'' is used to create the new troops.<br />
<br />
====sentient shipFindAI(ship,npcrole)====<br />
Locates an AI controlled sentient aboard a ship. <br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
====sentient shipFindAIInRoom(ship,npcrole,text)====<br />
Locates an AI controlled sentient aboard a ship, in a specific room. <br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====npc shipFindNpc(ship,npcrole)====<br />
Locates an npc aboard a ship. <br />
<br />
Does not find demiavatars. <br />
<br />
====npc shipFindNpcInRoom(ship,npcrole,text)====<br />
Locates an npc aboard a ship, in a specific room. <br />
<br />
Does not find demiavatars. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====void shipInteriorLight(ship,int)====<br />
Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
====void shipManeuverDrive(ship,int)====<br />
Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
====void shipPowerPlant(ship,int)====<br />
Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
====void shipRefuel(ship,int)====<br />
Fills the fuel cells to 100% on a ship with ''int'' quality fuel.<br />
<br />
====void shipRetreat(ship)====<br />
Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
====void shipShields(ship,int)====<br />
Sets a ship's shield state. 0=off, 1=on.<br />
<br />
====creature shipStationOccupant(ship,station)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
<br />
Designer returns an avatar in a designer instance. <br />
<br />
Livestock returns an animal. <br />
<br />
====creature shipStationOccupantInRoom(ship,station,text)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
<br />
Designer returns an avatar in a designer instance. <br />
<br />
Livestock returns an animal. <br />
<br />
Arguments:<br />
: text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft. <br />
<br />
====ship unitAboardShip(unit)====<br />
Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
====bool unitAtBuilding(unit,building)====<br />
Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
====world unitAtWorld(unit)====<br />
Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
====bool unitInOrbit(unit)====<br />
Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
====ship unitInsideShip(unit)====<br />
Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
====text unitRoomName(unit)====<br />
Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room. <br />
<br />
====ship unitStationInTradeRange(unit,stance,int)====<br />
Returns station that is within trade range of the unit. <br />
<br />
Arguments:<br />
: ''stance'' and ''int'' are used to check the station empire's stance toward the unit's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions. <br />
<br />
====void vehicleRefuel(vehicle)====<br />
Fills the fuel cells to 100% on a vehicle. <br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions. <br />
<br />
====bool worldAtmosphereBreathable(world)====<br />
Test if the world atmosphere is breathable.<br />
<br />
====bool worldClaimed(world)====<br />
Test if the world is claimed by any empire.<br />
<br />
====bool worldClaimedBy(world,empire)====<br />
Test if the world is claimed by ''empire''.<br />
<br />
====character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage)====<br />
Creates a character on ''world'' at ''ll''. <br />
<br />
Arguments:<br />
: ''text'' is the name of the new character. <br />
: If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
: ''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void worldCreateIndigenous(world,ll,dna)====<br />
Create an indigenous village on a world. Establishes the indigenous DNA using ''dna'' if it is not already set.<br />
<br />
====item worldCreateItem(world,ll,bool,commodity,quality,empire,text)====<br />
Create an item on a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the item. <br />
: ''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
: ''empire'' is the empire of origin of the item. <br />
: ''text'' is inscribed on the item if not blank.<br />
<br />
====ship worldCreateShip(world,ll,real,int,quality,empire,text)====<br />
Create a spaceship at a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed. <br />
: ''real'' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
: ''int'' is the design id of the ship. <br />
: ''empire'' is the empire who owns the spaceship. <br />
: ''text'' is the name of the ship, set randomly if this is blank.<br />
<br />
====vehicle worldCreateVehicle(world,ll,commodity,quality,empire)====<br />
Create a vehicle on a world. <br />
<br />
Arguments:<br />
: ''ll'' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed. <br />
: ''empire'' is the empire who owns the vehicle.<br />
<br />
====bool worldHasCity(world)====<br />
Test if the world has any cities at all.<br />
<br />
====void worldHengeCeremony(world,ll,int)====<br />
Sets the state of the henge ceremony, if there is a henge. <br />
<br />
Arguments:<br />
: ''int'' is ceremony state: 1=Active, 0=inactive.<br />
<br />
====int worldHydrographics(world)====<br />
Returns the world's water percentage in the range 0 to 100.<br />
<br />
====bool worldIsGasGiant(world)====<br />
Test if the world is a gas giant.<br />
<br />
====bool worldIsMoon(world)====<br />
Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
====bool worldIsPlanet(world)====<br />
Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
====bool worldIsPlanetoid(world)====<br />
Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
====bool worldIsRing(world)====<br />
Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
====bool worldIsRingworld(world)====<br />
Test if the world is a ringworld arc section.<br />
<br />
====bool worldIsTitan(world)====<br />
Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
====ll worldLandLocation(world,real,real)====<br />
Returns a location that is on land. <br />
<br />
Arguments:<br />
: First ''real'' is minimum altitude MSL, in meters. <br />
: Second ''real'' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
====ll worldLandLocationNear(world,ll,real,real,real)====<br />
Returns a location that is on land somewhere near ''ll''. <br />
<br />
Arguments:<br />
: First ''real'' is minimum altitude MSL, in meters. <br />
: Second ''real'' is minimum distance from ''ll'', in meters. <br />
: Third ''real'' is maximum distance from ''ll'', in meters.<br />
<br />
====bool worldOrbitFrigid(world)====<br />
Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitHabitable(world)====<br />
Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInferno(world)====<br />
Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInner(world)====<br />
Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitOuter(world)====<br />
Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====ll worldRelativeLL(world,ll,real,real)====<br />
Returns a location that is offset from another location. <br />
<br />
Arguments:<br />
: ''ll'' is the reference location. <br />
: ''real,real'' is horizontal, vertical offset, in meters.<br />
<br />
====void worldScheduleAsteroid(world,int)====<br />
Schedules an asteroid to destroy the world in ''int'' minutes. <br />
<br />
Arguments:<br />
: ''world'' is the world that will be the target of the asteroid. <br />
: ''int'' is the number of minutes before impact. Must be at least 1.<br />
<br />
====bool worldSupportsAnimals(world)====<br />
Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals. <br />
<br />
All worlds that support animals also support plants. <br />
<br />
====bool worldSupportsPlants(world)====<br />
Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants. <br />
<br />
Worlds that support plants do not necessarily support animals.</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9860Story Script2021-02-25T17:43:35Z<p>Haxus: /* Function Argument Types */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
===angle===<br />
Angle in degrees, in the range -360 to 360.<br />
===animal===<br />
A wild animal. A creature that is not sentient.<br />
===atom===<br />
A variable that references an atom. Most objects in the game universe are atoms.<br />
===avatar===<br />
A variable that references an avatar atom.<br />
===bool===<br />
Boolean value returned by calling one or more functions. Can use logical operators '''&''', '''|''', and '''!'''.<br />
===bool===<br />
Boolean argument. Accepts '''true''' or '''false''', not case sensitive.<br />
===building===<br />
Building name, not case sensitive.<br />
===city===<br />
A variable that references a capitol building atom.<br />
===commodity===<br />
Commodity name, not case sensitive.<br />
===channel===<br />
Communication channel name. Not limited to standard channel names.<br />
===character===<br />
A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
===choiceValue===<br />
A value associated with multiple choices, in the range -127 to 127.<br />
===creature===<br />
A variable that references a creature atom. Animals and sentients are creature atoms.<br />
===dna===<br />
DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a city.<br />
===empire===<br />
Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
===file===<br />
A file name found in the same path as the script.<br />
===gearslot===<br />
Gear slot, not case sensitive: '''Hand''', '''Head''', '''Face''', '''Neck''', '''Body''', '''Wear''', '''Limb''', '''Digit''', '''Waist'''. <br />
<br />
All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. <br />
<br />
All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. <br />
<br />
All creatures have at least one body slot for carrying gear. <br />
<br />
Wear is specifically for things worn on the body, such as clothing and armor. <br />
<br />
Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. <br />
<br />
Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. <br />
<br />
All creatures have four waist slots; there is a size limit to items placed at the waist. <br />
===gender===<br />
Gender of creature, not case sensitive: '''Male''', '''Female''', '''Asexual''', '''Hermaphrodite'''.<br />
===hand===<br />
Dominant hand of creature, not case sensitive: '''Left Handed''', '''Right Handed'''<br />
===int===<br />
Signed integer value. Decimals are truncated.<br />
===item===<br />
A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
===ll===<br />
A variable that contains a longitude latitude coordinate on a world.<br />
===npc===<br />
A variable that references an npc atom. All AI controlled citizens are npc atoms.<br />
===npcrole===<br />
A role for an AI controlled sentient: '''Citizen''', '''Worker''', '''Passenger''', '''Crew''', '''Troop''', '''Officer''', '''IndigenousPerson''', '''IndigenousElder''', '''IndigenousHealer''', '''IndigenousStargazer'''.<br />
===orbit===<br />
Orbit: '''Inferno''', '''Inner''', '''Habitable''', '''Outer''' or '''Frigid''' also '''Any''', '''Harsh''' (Inferno or Frigid), '''Mild''' (Inner, Habitable, or Outer), '''Uninhabitable''' (not Habitable).<br />
===quality===<br />
Quality in the range 1 to 255.<br />
===range===<br />
Communication range, not case sensitive.<br />
===real===<br />
Signed real value.<br />
===scenario===<br />
'''Reach for the Stars''', '''Citizen of the Galaxy''', '''The Savage State''', '''Lost Atlantis'''. Comparison is not case sensitive. <br />
===sector===<br />
A variable that references a sector atom.<br />
===sentient===<br />
A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
===ship===<br />
A variable that references a spacecraft atom, could be a station.<br />
===stage===<br />
Growth stage of creature, not case sensitive: '''Mature''', '''Juvenile'''.<br />
===stance===<br />
Political stance, not case sensitive. '''Empire''', '''Vassal''', '''Friend''', '''Neutral''', '''Enemy'''. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
===station===<br />
Station that can be occupied, not case sensitive: '''Command''', '''Citizen''', '''Designer''', '''Engine''', '''FireControl''', '''Game''', '''Helm''', '''Livestock''', '''Medic''', '''Navigation''', '''Patient''', '''Power''', '''Sensor''', '''Shield''', '''Transporter''', '''Troop''', '''Turret'''<br />
===system===<br />
A variable that references a solar system atom.<br />
===text===<br />
Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
===unit===<br />
A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
===vehicle===<br />
A variable that references a vehicle atom.<br />
===void===<br />
A function return value placeholder indicating a function does not return anything.<br />
===world===<br />
A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
====goto blockName====<br />
Unconditional branch to a block of the story.<br />
<br />
====if(bool) blockName====<br />
In the catalyst block, ''if'' tests determine when the story can start for an avatar and which block will begin the story.<br />
In body blocks, ''if'' tests determine when to branch to another block of the story.<br />
Each block of the story, including the catalyst, may contain more than one ''if'' to test and branch based on different conditions. The story engine checks the ''if'' conditions of the current block every 10 seconds. Each ''if'' is tested in the order it appears in the script. The first ''if'' to return true results in a branch to its block of the story.<br />
<br />
====choiceValue choiceMade()====<br />
Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
====bool dateIsChristmas()====<br />
Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
====int secondsElapsed()====<br />
Returns the number of seconds that have passed since the current story block was started.<br />
<br />
====bool wait(int)====<br />
Returns true if ''int'' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the ''storyDroppable'' function.<br />
<br />
====void storyAuthor(text)====<br />
Identifies the author of the story. Required in catalyst block.<br />
<br />
====void storyAutoRepeat()====<br />
Enables the story to automatically start repeatedly, based on the catalyst.<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoRepeatUntilComplete()====<br />
Enables the story to automatically start repeatedly, based on the catalyst. <br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed. <br />
A story that is dropped is not considered to be completed. <br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoStart()====<br />
Enables the story to automatically start once, based on the catalyst. <br />
Only one auto started story can be active at a time.<br />
<br />
====void storyBrief(text)====<br />
Gives a brief description of the story. Required in catalyst block.<br />
<br />
====void storyDroppable(bool)====<br />
Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script. <br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story. <br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way. <br />
<br />
====void storyInterval(int)====<br />
Specifies the time interval in minutes before the story can start again. <br />
The time interval starts when the story terminates, whether by finishing or by dropping. <br />
<br />
====void storyTitle(text)====<br />
Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
Avatar functions operate on the avatar atom for whom the story is running. <br />
<br />
====avatar avatar()====<br />
Returns the person executing the story.<br />
<br />
====bool avatarConstructedBuildingHabitable(building)====<br />
Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====bool avatarConstructedBuildingHarsh(building)====<br />
Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====void avatarCreditGovtDebt(real)====<br />
Credits the person's government debt account with a number of cronodollars.<br />
<br />
====bool avatarCurrentItem(commodity)====<br />
Test if the person's current item is a commodity.<br />
<br />
====atom avatarEnvironment()====<br />
Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
====int avatarEVAMinutes()====<br />
Returns the number of minutes of EVA experience.<br />
<br />
====bool avatarHadItem(commodity)====<br />
Test if the person's gear has ever contained a commodity.<br />
<br />
====bool avatarHasFood()====<br />
Test if the person's gear contains any food.<br />
<br />
====bool avatarHasItem(commodity)====<br />
Test if the person's gear contains a commodity.<br />
<br />
====bool avatarHasItemInHand(commodity)====<br />
Test if the person is holding a commodity in their hand.<br />
<br />
====bool avatarHasItemInHandSpecific(commodity,quality,empire,text)====<br />
Test if the person is holding a specific commodity in their hand. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarHasItemSpecific(commodity,quality,empire,text)====<br />
Test if the person's gear contains a very specific commodity. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarInCity()====<br />
Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
====bool avatarInitScenario(scenario)====<br />
Test if the person started the game using a specified ''scenario''.<br />
<br />
====bool avatarInOrbit()====<br />
Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
====bool avatarInStudio()====<br />
Test if the person is inside a design studio instance.<br />
<br />
====bool avatarInVehicle(commodity)====<br />
Test if the person is inside a certain type of vehicle.<br />
<br />
====bool avatarInVehicleMoving(commodity)====<br />
Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
====bool avatarInVehicleOnGround(commodity)====<br />
Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
====int avatarItemCount(commodity)====<br />
Returns the amount of a commodity possessed by the avatar.<br />
<br />
====void avatarItemMakePermanent(commodity,quality,empire,text)====<br />
Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void avatarItemSetDropOnDeath(int,commodity,quality,empire,text)====<br />
Sets the ''drop'' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. ''bool'' is the new state.<br />
<br />
====bool avatarLineageAvatar()====<br />
Returns true if the avatar's lineage is a regular avatar.<br />
<br />
====bool avatarLineageDemiavatar()====<br />
Returns true if the avatar's lineage is demiavatar.<br />
<br />
====bool avatarLineageHighborn()====<br />
Returns true if the avatar's lineage is highborn.<br />
<br />
====int avatarOnLineMinutes()====<br />
Returns number of minutes the person has been on line.<br />
<br />
====bool avatarStoryCompleted(int)====<br />
Test if the person has completed a particular story script id.<br />
<br />
====int avatarStoryLastResult(int)====<br />
Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
====void avatarStoryResult(int)====<br />
Stores the result for the current story in an avatar's memory. ''int'' is result, in the range 0 to 255. <br />
<br />
====int avatarVehicleMinutes(commodity)====<br />
Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the ''atom'' argument is not valid, all functions return quietly. <br />
<br />
====atom atom(int)====<br />
Casts ''int'' to be an atom identifier.<br />
<br />
====city atomCity(atom)====<br />
Returns the city capitol building atom whose jurisdiction controls the building site that contains ''atom''. <br />
The result is 0 if the atom's current building is not part of a city. <br />
If ''atom'' is on a road, the capitol building whose jurisdiction contains ''atom'' is returned. <br />
The result is 0 if ''atom'' is not at a building site or on a road in a city. <br />
<br />
====void atomComm(atom,channel,range,text)====<br />
Atom sends a message on a comm channel.<br />
<br />
====void atomCommChannelToAtom(atom,atom,channel)====<br />
Atom opens a channel to the other atom.<br />
<br />
====void atomCommChoice(atom,channel,range,choiceValue,text)====<br />
Atom says a choice on a comm channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage)====<br />
Creates a character near ''atom'', subordinate to the same parent as ''atom''. Will not create the charater if ''atom'' is in a vehicle. <br />
Arguments:<br />
''angle'' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind. <br />
''real'' is a distance in meters. <br />
The new character's location will be in the domain of ''atom''s parent. i.e. on the same ship or world. The path from ''atom'' to the new character's location will be unobstructed. The final starting location will be no farther than ''real'' meters from ''atom'', even if it means starting on top of ''atom''. It will be closer than ''real'' if the path to the starting location from the ''atom'' is obstructed. <br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====real atomDistanceToAtom(atom,atom)====<br />
Returns the distance between two atoms, in meters. <br />
<br />
====int atomEmpire(atom)====<br />
Returns id value of an atom's empire. 0 if none.<br />
<br />
====atom atomFindBuilding(atom,building,int,stance,int)====<br />
Locates a building of a specific ''building'' type, subordinate to ''atom''. <br />
Arguments:<br />
''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====vehicle atomFindVehicle(atom,commodity,int)====<br />
Locates a vehicle of a specific ''commodity'' type, subordinate to ''atom''. ''int'' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care. <br />
<br />
====bool atomHasAtom(atom,atom)====<br />
Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
====bool atomHasBuilding(atom,building,int,stance,int)====<br />
Test recursively if an atom has a building type. The atom might typically be a system, world or city. <br />
Arguments:<br />
''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====bool atomInSystem(atom,system)====<br />
Returns true if atom is in a solar system.<br />
<br />
====bool atomIsAtom(atom,atom)====<br />
Returns true if atom == atom and atom is valid.<br />
<br />
====sector atomSector(atom)====<br />
Returns the sector atom that contains ''atom''.<br />
<br />
====bool atomValid(atom)====<br />
Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
====world atomWorld(atom)====<br />
Returns the world atom that contains ''atom''. ''atom'' may be subordinate to the world at any subatom level or distance, possibly in space. <br />
Returns ''atom'' if atom is a world.<br />
<br />
====ll atomWorldLL(atom)====<br />
Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time. <br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
====bool blueprintSpacecraftLoad(int)====<br />
Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story. <br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously. <br />
<br />
====void characterDepart(character)====<br />
Causes a character to depart the scene. The character disappears instantly with no visual effect. <br />
<br />
====void characterDie(character)====<br />
Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time. <br />
<br />
====void characterEquipFromCity(character,gearslot,commodity,text)====<br />
Transfer an item to a character's gear from the inventory of the current city. <br />
Arguments:<br />
''text'' is an optional inscription to place on the item.<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
====void characterSetIndestructible(character,bool)====<br />
Sets indestructible state of a character. <br />
<br />
====void characterWantItem(character,commodity)====<br />
Causes the character to want a specific commodity. <br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
====void characterWantItemSpecific(character,commodity,quality,empire,text)====<br />
Causes the character to want a very specific commodity. <br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank. <br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom. <br />
<br />
====vehicle cityFindNewVehicle(city,commodity)====<br />
Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
====bool cityHasBuilding(city,building,int)====<br />
Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building. <br />
<br />
====bool cityHasFood(city)====<br />
Test if a city has any food in any of its buildings.<br />
<br />
====bool cityHasItem(city,commodity)====<br />
Test if a city has a commodity in any of its buildings. <br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
====bool cityHasPower(city)====<br />
Test if a city has any electricity. <br />
Arguments:<br />
''city'' can be any building. <br />
<br />
====int cityItemCount(city,commodity)====<br />
Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
====int cityPopulation(city)====<br />
Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions. <br />
<br />
====bool creatureIsDyingOrDead(creature)====<br />
Test if the creature's body is dying or dead.<br />
<br />
====void creatureSetHealth(creature,int)====<br />
Sets health level of a creature. <br />
Arguments:<br />
''int'' is the health level as a percentage, 0 to 100.<br />
<br />
====void creatureSetMouth(creature,visage,visage)====<br />
Sets ''visage'' pose of a creature. <br />
When the first ''visage'' pose is an animated pose, the second ''visage'' pose is set when the animation completes. <br />
<br />
====void creatureSetVisage(creature,visage)====<br />
Sets ''visage'' of a creature. <br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar. <br />
<br />
====world findGasGiant(orbit)====<br />
Locates a gas giant in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findMoon(orbit)====<br />
Locates a moon in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findPlanet(orbit,int)====<br />
Locates a planet in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types. <br />
''int'' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
====world findRing(orbit)====<br />
Locates a ring around a world in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findRingWorld()====<br />
Locates a ringworld arc section in the current environment. <br />
Arguments:<br />
Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector. <br />
<br />
====text hengeSystemName(system)====<br />
Returns the name of a solar system that is known to contain a henge, as returned by the ''sectorHengeSystem'' function. <br />
<br />
====worldcat hengeSystemWorld(system,int)====<br />
Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city. <br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====world hengeWorld(worldcat)====<br />
Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world. <br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
====ll hengeWorldLL(worldcat)====<br />
Returns the longitude latitude of a henge if there is one. <br />
Arguments:<br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
====text hengeWorldName(worldcat)====<br />
Returns the name assigned to a henge world, given its catalog name.<br />
<br />
====bool hengeWorldPortalActive(worldcat,ll)====<br />
Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal. <br />
Arguments:<br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions. <br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that. <br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom. <br />
<br />
====void itemArmWeapon(item,unit,empire)====<br />
Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive. <br />
Arguments:<br />
''unit'' is the unit who armed the weapon. <br />
''empire'' is the empire who armed the weapon. <br />
<br />
====void itemCreateContent(item,bool,int,commodity,quality,empire,text)====<br />
Creates a new item inside ''item'', which is expected to be a container. <br />
Arguments:<br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''int'' is condition percent, 1 to 100. <br />
If ''text'' is not blank, it is inscribed onto the item.<br />
<br />
====void itemDetonate(item)====<br />
Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
====void itemMakePermanent(item)====<br />
Changes a story item into a permanent item. <br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
====item itemOnGround(commodity,real)====<br />
Locates an item on the ground nearby. <br />
Arguments:<br />
''real'' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
====item itemOnGroundSpecific(int,commodity,quality,empire,text)====<br />
Locates a specific item on the ground nearby. <br />
Arguments:<br />
''int'' is the farthest distance from the story avatar to find the item, in meters. <br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void itemSetDropOnDeath(item,int)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
Arguments:<br />
''int'' is the new state.<br />
<br />
====void itemSetMessage(item,text)====<br />
Sets the message of an item, such as a beacon. This is not the inscription. <br />
Arguments:<br />
''text'' is the new message.<br />
<br />
====void itemSetState(item,int)====<br />
Sets the state of an item, such as the on/off state of a light or musical instrument. <br />
Arguments:<br />
''int'' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source. <br />
<br />
====void narratorHint(text)====<br />
Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window. <br />
<br />
====void narratorImage(file,text,text)====<br />
Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window. <br />
<br />
====void narratorSay(text)====<br />
Sends a text message on the narrator comm channel. <br />
<br />
====void narratorSayAudio(file,text)====<br />
Sends audio and an optional text message on the narrator comm channel.<br />
<br />
====void narratorSayChoice(choiceValue,text)====<br />
Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====void narratorTitle(text)====<br />
Sends a text message on the narrator comm channel formatted as a title. <br />
<br />
====void narratorVideo(file,text)====<br />
Sends video and an optional text message on the narrator comm channel. <br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled. <br />
<br />
====void npcSetRole(npcrole)====<br />
Changes the role of an npc. <br />
The role of an npc cannot be changed while they hold a berth. <br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions. <br />
<br />
====bool sectorHasHengeSystem(sector,int)====<br />
Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city. <br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====system sectorHengeSystem(sector,int)====<br />
Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city. <br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions. <br />
<br />
====void sentientAttackUnit(sentient,unit)====<br />
Order a sentient to attack a unit.<br />
<br />
====void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text)====<br />
Create an item in a sentient's gear. <br />
Arguments:<br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''text'' is inscribed on the item if not blank.<br />
<br />
====item sentientDropGear(sentient,gearslot)====<br />
Drops the item at a sentient's gear slot.<br />
<br />
====item sentientDropGearItem(sentient,commodity)====<br />
Drops an item from a sentient's gear.<br />
<br />
====void sentientFireWeapon(sentient)====<br />
Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
====void sentientFollowAvatar(sentient)====<br />
Order a sentient to follow the person.<br />
<br />
====void sentientFollowSentient(sentient,sentient)====<br />
Order a sentient to follow another sentient.<br />
<br />
====void sentientGetItem(sentient,item)====<br />
Order a sentient to pick an item up off the ground.<br />
<br />
====void sentientGoToAvatar(sentient)====<br />
Order a sentient to go to the avatar.<br />
<br />
====void sentientGoToLL(sentient,ll)====<br />
Order a sentient to go to a longitude latitude.<br />
<br />
====void sentientGoToLLExactly(sentient,ll)====<br />
Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
====void sentientGoToRoom(sentient,text)====<br />
Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
====void sentientGoToUnit(sentient,unit)====<br />
Order a sentient to go to a unit.<br />
<br />
====bool sentientHasItem(sentient,commodity)====<br />
Test if the sentient possesses a specific commodity.<br />
<br />
====bool sentientHasItemSpecific(sentient,commodity,quality,empire,text)====<br />
Test if the sentient's gear contains a very specific commodity. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientHengeCeremony(sentient,ll)====<br />
Order a sentient to perform the henge ceremony, if a henge is found near ''ll''.<br />
<br />
====void sentientItemMakePermanent(sentient,commodity,quality,empire,text)====<br />
Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
Arguments:<br />
''bool'' is the new state.<br />
<br />
====void sentientMoveBack(sentient,real)====<br />
Order a sentient to move backward a distance specified in meters.<br />
<br />
====void sentientMoveForward(sentient,real)====<br />
Order a sentient to move forward a distance specified in meters.<br />
<br />
====void sentientSay(sentient,text,visage)====<br />
Order a sentient being to say a message on the Voice channel.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayAudio(sentient,file,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayChoice(sentient,choiceValue,text,visage)====<br />
Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function. <br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayImage(sentient,file,text,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
Arguments:<br />
''text'' args are image title and text to say. <br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayTo(sentient,atom,text,visage)====<br />
Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSellGearItem(sentient,atom,commodity,int)====<br />
Offers an item from a sentient's gear on the Voice channel. <br />
Arguments:<br />
''atom'' is the target of the sale, causing sentient to turn to face them; it can be null. <br />
The best Q ''commodity'' possessed by ''sentient'' is offered for sale. <br />
''int'' is the price, which can be 0 to offer it for free. <br />
<br />
====void sentientStay(sentient)====<br />
Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions. <br />
<br />
====void shipChargeCapacitor(ship)====<br />
Fills the capacitor to 100% on a ship.<br />
<br />
====void shipChargeShields(ship)====<br />
Fills the shields to 100% on a ship.<br />
<br />
====character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage)====<br />
Creates a character aboard ''ship''. <br />
Arguments:<br />
''int'' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location. <br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void shipCreateCrew(ship,dna)====<br />
Fills all empty crew positions on a ship. <br />
Arguments:<br />
''dna'' is used to create the new crew members.<br />
<br />
====void shipCreateTroops(ship,dna)====<br />
Fills all empty troop positions on a ship. <br />
Arguments:<br />
''dna'' is used to create the new troops.<br />
<br />
====sentient shipFindAI(ship,npcrole)====<br />
Locates an AI controlled sentient aboard a ship. <br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
====sentient shipFindAIInRoom(ship,npcrole,text)====<br />
Locates an AI controlled sentient aboard a ship, in a specific room. <br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====npc shipFindNpc(ship,npcrole)====<br />
Locates an npc aboard a ship. <br />
Does not find demiavatars. <br />
<br />
====npc shipFindNpcInRoom(ship,npcrole,text)====<br />
Locates an npc aboard a ship, in a specific room. <br />
Does not find demiavatars. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====void shipInteriorLight(ship,int)====<br />
Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
====void shipManeuverDrive(ship,int)====<br />
Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
====void shipPowerPlant(ship,int)====<br />
Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
====void shipRefuel(ship,int)====<br />
Fills the fuel cells to 100% on a ship with ''int'' quality fuel.<br />
<br />
====void shipRetreat(ship)====<br />
Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
====void shipShields(ship,int)====<br />
Sets a ship's shield state. 0=off, 1=on.<br />
<br />
====creature shipStationOccupant(ship,station)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
Designer returns an avatar in a designer instance. <br />
Livestock returns an animal. <br />
<br />
====creature shipStationOccupantInRoom(ship,station,text)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
Designer returns an avatar in a designer instance. <br />
Livestock returns an animal. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft. <br />
<br />
====ship unitAboardShip(unit)====<br />
Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
====bool unitAtBuilding(unit,building)====<br />
Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
====world unitAtWorld(unit)====<br />
Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
====bool unitInOrbit(unit)====<br />
Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
====ship unitInsideShip(unit)====<br />
Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
====text unitRoomName(unit)====<br />
Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room. <br />
<br />
====ship unitStationInTradeRange(unit,stance,int)====<br />
Returns station that is within trade range of the unit. <br />
Arguments:<br />
''stance'' and ''int'' are used to check the station empire's stance toward the unit's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions. <br />
<br />
====void vehicleRefuel(vehicle)====<br />
Fills the fuel cells to 100% on a vehicle. <br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions. <br />
<br />
====bool worldAtmosphereBreathable(world)====<br />
Test if the world atmosphere is breathable.<br />
<br />
====bool worldClaimed(world)====<br />
Test if the world is claimed by any empire.<br />
<br />
====bool worldClaimedBy(world,empire)====<br />
Test if the world is claimed by ''empire''.<br />
<br />
====character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage)====<br />
Creates a character on ''world'' at ''ll''. <br />
Arguments:<br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void worldCreateIndigenous(world,ll,dna)====<br />
Create an indigenous village on a world. Establishes the indigenous DNA using ''dna'' if it is not already set.<br />
<br />
====item worldCreateItem(world,ll,bool,commodity,quality,empire,text)====<br />
Create an item on a world. <br />
Arguments:<br />
''ll'' is the location to create the item. <br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''text'' is inscribed on the item if not blank.<br />
<br />
====ship worldCreateShip(world,ll,real,int,quality,empire,text)====<br />
Create a spaceship at a world. <br />
Arguments:<br />
''ll'' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed. <br />
''real'' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
''int'' is the design id of the ship. <br />
''empire'' is the empire who owns the spaceship. <br />
''text'' is the name of the ship, set randomly if this is blank.<br />
<br />
====vehicle worldCreateVehicle(world,ll,commodity,quality,empire)====<br />
Create a vehicle on a world. <br />
Arguments:<br />
''ll'' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed. <br />
''empire'' is the empire who owns the vehicle.<br />
<br />
====bool worldHasCity(world)====<br />
Test if the world has any cities at all.<br />
<br />
====void worldHengeCeremony(world,ll,int)====<br />
Sets the state of the henge ceremony, if there is a henge. <br />
Arguments:<br />
''int'' is ceremony state: 1=Active, 0=inactive.<br />
<br />
====int worldHydrographics(world)====<br />
Returns the world's water percentage in the range 0 to 100.<br />
<br />
====bool worldIsGasGiant(world)====<br />
Test if the world is a gas giant.<br />
<br />
====bool worldIsMoon(world)====<br />
Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
====bool worldIsPlanet(world)====<br />
Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
====bool worldIsPlanetoid(world)====<br />
Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
====bool worldIsRing(world)====<br />
Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
====bool worldIsRingworld(world)====<br />
Test if the world is a ringworld arc section.<br />
<br />
====bool worldIsTitan(world)====<br />
Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
====ll worldLandLocation(world,real,real)====<br />
Returns a location that is on land. <br />
Arguments:<br />
First ''real'' is minimum altitude MSL, in meters. <br />
Second ''real'' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
====ll worldLandLocationNear(world,ll,real,real,real)====<br />
Returns a location that is on land somewhere near ''ll''. <br />
Arguments:<br />
First ''real'' is minimum altitude MSL, in meters. <br />
Second ''real'' is minimum distance from ''ll'', in meters. <br />
Third ''real'' is maximum distance from ''ll'', in meters.<br />
<br />
====bool worldOrbitFrigid(world)====<br />
Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitHabitable(world)====<br />
Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInferno(world)====<br />
Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInner(world)====<br />
Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitOuter(world)====<br />
Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====ll worldRelativeLL(world,ll,real,real)====<br />
Returns a location that is offset from another location. <br />
Arguments:<br />
''ll'' is the reference location. <br />
''real,real'' is horizontal, vertical offset, in meters.<br />
<br />
====void worldScheduleAsteroid(world,int)====<br />
Schedules an asteroid to destroy the world in ''int'' minutes. <br />
Arguments:<br />
''world'' is the world that will be the target of the asteroid. <br />
''int'' is the number of minutes before impact. Must be at least 1.<br />
<br />
====bool worldSupportsAnimals(world)====<br />
Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals. <br />
All worlds that support animals also support plants. <br />
<br />
====bool worldSupportsPlants(world)====<br />
Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants. <br />
Worlds that support plants do not necessarily support animals.</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9859Story Script2021-02-25T15:58:47Z<p>Haxus: /* Function Argument Types */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
===angle===<br />
Angle in degrees, in the range -360 to 360.<br />
===animal===<br />
A wild animal. A creature that is not sentient.<br />
===atom===<br />
A variable that references an atom. Most objects in the game universe are atoms.<br />
===avatar===<br />
A variable that references an avatar atom.<br />
===bool===<br />
Boolean value returned by calling one or more functions. Can use logical operators '&', '|', and '!'.<br />
===bool===<br />
Boolean argument. Accepts 'true' or 'false', not case sensitive.<br />
===building===<br />
Building name, not case sensitive.<br />
===city===<br />
A variable that references a capitol building atom.<br />
===commodity===<br />
Commodity name, not case sensitive.<br />
===channel===<br />
Communication channel name. Not limited to standard channel names.<br />
===character===<br />
A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
===choiceValue===<br />
A value associated with multiple choices, in the range -127 to 127.<br />
===creature===<br />
A variable that references a creature atom. Animals and sentients are creature atoms.<br />
===dna===<br />
DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a city.<br />
===empire===<br />
Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
===file===<br />
A file name found in the same path as the script.<br />
===gearslot===<br />
Gear slot, not case sensitive: Hand, Head, Face, Neck, Body, Wear, Limb, Digit, Waist. All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. All creatures have at least one body slot for carrying gear. Wear is specifically for things worn on the body, such as clothing and armor. Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. All creatures have four waist slots; there is a size limit to items placed at the waist. <br />
===gender===<br />
Gender of creature, not case sensitive: Male, Female, Asexual, Hermaphrodite.<br />
===hand===<br />
Dominant hand of creature, not case sensitive: Left Handed, Right Handed<br />
===int===<br />
Signed integer value. Decimals are truncated.<br />
===item===<br />
A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
===ll===<br />
A variable that contains a longitude latitude coordinate on a world.<br />
===npc===<br />
A variable that references an npc atom. All AI controlled citizens are npc atoms.<br />
===npcrole===<br />
A role for an AI controlled sentient: Citizen, Worker, Passenger, Crew, Troop, Officer, IndigenousPerson, IndigenousElder, IndigenousHealer, IndigenousStargazer.<br />
===orbit===<br />
Orbit: Inferno, Inner, Habitable, Outer or Frigid also Any, Harsh (Inferno or Frigid), Mild (Inner, Habitable, or Outer), Uninhabitable (not Habitable).<br />
===quality===<br />
Quality in the range 1 to 255.<br />
===range===<br />
Communication range, not case sensitive.<br />
===real===<br />
Signed real value.<br />
===scenario===<br />
Reach for the Stars, Citizen of the Galaxy, The Savage State, Lost Atlantis. Comparison is not case sensitive. <br />
===sector===<br />
A variable that references a sector atom.<br />
===sentient===<br />
A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
===ship===<br />
A variable that references a spacecraft atom, could be a station.<br />
===stage===<br />
Growth stage of creature, not case sensitive: Mature, Juvenile.<br />
===stance===<br />
Political stance, not case sensitive. Empire, Vassal, Friend, Neutral, Enemy. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
===station===<br />
Station that can be occupied, not case sensitive: Command, Citizen, Designer, Engine, FireControl, Game, Helm, Livestock, Medic, Navigation, Patient, Power, Sensor, Shield, Transporter, Troop, Turret<br />
===system===<br />
A variable that references a solar system atom.<br />
===text===<br />
Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
===unit===<br />
A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
===vehicle===<br />
A variable that references a vehicle atom.<br />
===void===<br />
A function return value placeholder indicating a function does not return anything.<br />
===world===<br />
A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
====goto blockName====<br />
Unconditional branch to a block of the story.<br />
<br />
====if(bool) blockName====<br />
In the catalyst block, ''if'' tests determine when the story can start for an avatar and which block will begin the story.<br />
In body blocks, ''if'' tests determine when to branch to another block of the story.<br />
Each block of the story, including the catalyst, may contain more than one ''if'' to test and branch based on different conditions. The story engine checks the ''if'' conditions of the current block every 10 seconds. Each ''if'' is tested in the order it appears in the script. The first ''if'' to return true results in a branch to its block of the story.<br />
<br />
====choiceValue choiceMade()====<br />
Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
====bool dateIsChristmas()====<br />
Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
====int secondsElapsed()====<br />
Returns the number of seconds that have passed since the current story block was started.<br />
<br />
====bool wait(int)====<br />
Returns true if ''int'' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the ''storyDroppable'' function.<br />
<br />
====void storyAuthor(text)====<br />
Identifies the author of the story. Required in catalyst block.<br />
<br />
====void storyAutoRepeat()====<br />
Enables the story to automatically start repeatedly, based on the catalyst.<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoRepeatUntilComplete()====<br />
Enables the story to automatically start repeatedly, based on the catalyst. <br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed. <br />
A story that is dropped is not considered to be completed. <br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoStart()====<br />
Enables the story to automatically start once, based on the catalyst. <br />
Only one auto started story can be active at a time.<br />
<br />
====void storyBrief(text)====<br />
Gives a brief description of the story. Required in catalyst block.<br />
<br />
====void storyDroppable(bool)====<br />
Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script. <br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story. <br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way. <br />
<br />
====void storyInterval(int)====<br />
Specifies the time interval in minutes before the story can start again. <br />
The time interval starts when the story terminates, whether by finishing or by dropping. <br />
<br />
====void storyTitle(text)====<br />
Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
Avatar functions operate on the avatar atom for whom the story is running. <br />
<br />
====avatar avatar()====<br />
Returns the person executing the story.<br />
<br />
====bool avatarConstructedBuildingHabitable(building)====<br />
Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====bool avatarConstructedBuildingHarsh(building)====<br />
Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====void avatarCreditGovtDebt(real)====<br />
Credits the person's government debt account with a number of cronodollars.<br />
<br />
====bool avatarCurrentItem(commodity)====<br />
Test if the person's current item is a commodity.<br />
<br />
====atom avatarEnvironment()====<br />
Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
====int avatarEVAMinutes()====<br />
Returns the number of minutes of EVA experience.<br />
<br />
====bool avatarHadItem(commodity)====<br />
Test if the person's gear has ever contained a commodity.<br />
<br />
====bool avatarHasFood()====<br />
Test if the person's gear contains any food.<br />
<br />
====bool avatarHasItem(commodity)====<br />
Test if the person's gear contains a commodity.<br />
<br />
====bool avatarHasItemInHand(commodity)====<br />
Test if the person is holding a commodity in their hand.<br />
<br />
====bool avatarHasItemInHandSpecific(commodity,quality,empire,text)====<br />
Test if the person is holding a specific commodity in their hand. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarHasItemSpecific(commodity,quality,empire,text)====<br />
Test if the person's gear contains a very specific commodity. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarInCity()====<br />
Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
====bool avatarInitScenario(scenario)====<br />
Test if the person started the game using a specified ''scenario''.<br />
<br />
====bool avatarInOrbit()====<br />
Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
====bool avatarInStudio()====<br />
Test if the person is inside a design studio instance.<br />
<br />
====bool avatarInVehicle(commodity)====<br />
Test if the person is inside a certain type of vehicle.<br />
<br />
====bool avatarInVehicleMoving(commodity)====<br />
Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
====bool avatarInVehicleOnGround(commodity)====<br />
Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
====int avatarItemCount(commodity)====<br />
Returns the amount of a commodity possessed by the avatar.<br />
<br />
====void avatarItemMakePermanent(commodity,quality,empire,text)====<br />
Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void avatarItemSetDropOnDeath(int,commodity,quality,empire,text)====<br />
Sets the ''drop'' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. ''bool'' is the new state.<br />
<br />
====bool avatarLineageAvatar()====<br />
Returns true if the avatar's lineage is a regular avatar.<br />
<br />
====bool avatarLineageDemiavatar()====<br />
Returns true if the avatar's lineage is demiavatar.<br />
<br />
====bool avatarLineageHighborn()====<br />
Returns true if the avatar's lineage is highborn.<br />
<br />
====int avatarOnLineMinutes()====<br />
Returns number of minutes the person has been on line.<br />
<br />
====bool avatarStoryCompleted(int)====<br />
Test if the person has completed a particular story script id.<br />
<br />
====int avatarStoryLastResult(int)====<br />
Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
====void avatarStoryResult(int)====<br />
Stores the result for the current story in an avatar's memory. ''int'' is result, in the range 0 to 255. <br />
<br />
====int avatarVehicleMinutes(commodity)====<br />
Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the ''atom'' argument is not valid, all functions return quietly. <br />
<br />
====atom atom(int)====<br />
Casts ''int'' to be an atom identifier.<br />
<br />
====city atomCity(atom)====<br />
Returns the city capitol building atom whose jurisdiction controls the building site that contains ''atom''. <br />
The result is 0 if the atom's current building is not part of a city. <br />
If ''atom'' is on a road, the capitol building whose jurisdiction contains ''atom'' is returned. <br />
The result is 0 if ''atom'' is not at a building site or on a road in a city. <br />
<br />
====void atomComm(atom,channel,range,text)====<br />
Atom sends a message on a comm channel.<br />
<br />
====void atomCommChannelToAtom(atom,atom,channel)====<br />
Atom opens a channel to the other atom.<br />
<br />
====void atomCommChoice(atom,channel,range,choiceValue,text)====<br />
Atom says a choice on a comm channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage)====<br />
Creates a character near ''atom'', subordinate to the same parent as ''atom''. Will not create the charater if ''atom'' is in a vehicle. <br />
Arguments:<br />
''angle'' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind. <br />
''real'' is a distance in meters. <br />
The new character's location will be in the domain of ''atom''s parent. i.e. on the same ship or world. The path from ''atom'' to the new character's location will be unobstructed. The final starting location will be no farther than ''real'' meters from ''atom'', even if it means starting on top of ''atom''. It will be closer than ''real'' if the path to the starting location from the ''atom'' is obstructed. <br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====real atomDistanceToAtom(atom,atom)====<br />
Returns the distance between two atoms, in meters. <br />
<br />
====int atomEmpire(atom)====<br />
Returns id value of an atom's empire. 0 if none.<br />
<br />
====atom atomFindBuilding(atom,building,int,stance,int)====<br />
Locates a building of a specific ''building'' type, subordinate to ''atom''. <br />
Arguments:<br />
''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====vehicle atomFindVehicle(atom,commodity,int)====<br />
Locates a vehicle of a specific ''commodity'' type, subordinate to ''atom''. ''int'' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care. <br />
<br />
====bool atomHasAtom(atom,atom)====<br />
Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
====bool atomHasBuilding(atom,building,int,stance,int)====<br />
Test recursively if an atom has a building type. The atom might typically be a system, world or city. <br />
Arguments:<br />
''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====bool atomInSystem(atom,system)====<br />
Returns true if atom is in a solar system.<br />
<br />
====bool atomIsAtom(atom,atom)====<br />
Returns true if atom == atom and atom is valid.<br />
<br />
====sector atomSector(atom)====<br />
Returns the sector atom that contains ''atom''.<br />
<br />
====bool atomValid(atom)====<br />
Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
====world atomWorld(atom)====<br />
Returns the world atom that contains ''atom''. ''atom'' may be subordinate to the world at any subatom level or distance, possibly in space. <br />
Returns ''atom'' if atom is a world.<br />
<br />
====ll atomWorldLL(atom)====<br />
Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time. <br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
====bool blueprintSpacecraftLoad(int)====<br />
Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story. <br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously. <br />
<br />
====void characterDepart(character)====<br />
Causes a character to depart the scene. The character disappears instantly with no visual effect. <br />
<br />
====void characterDie(character)====<br />
Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time. <br />
<br />
====void characterEquipFromCity(character,gearslot,commodity,text)====<br />
Transfer an item to a character's gear from the inventory of the current city. <br />
Arguments:<br />
''text'' is an optional inscription to place on the item.<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
====void characterSetIndestructible(character,bool)====<br />
Sets indestructible state of a character. <br />
<br />
====void characterWantItem(character,commodity)====<br />
Causes the character to want a specific commodity. <br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
====void characterWantItemSpecific(character,commodity,quality,empire,text)====<br />
Causes the character to want a very specific commodity. <br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank. <br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom. <br />
<br />
====vehicle cityFindNewVehicle(city,commodity)====<br />
Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
====bool cityHasBuilding(city,building,int)====<br />
Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building. <br />
<br />
====bool cityHasFood(city)====<br />
Test if a city has any food in any of its buildings.<br />
<br />
====bool cityHasItem(city,commodity)====<br />
Test if a city has a commodity in any of its buildings. <br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
====bool cityHasPower(city)====<br />
Test if a city has any electricity. <br />
Arguments:<br />
''city'' can be any building. <br />
<br />
====int cityItemCount(city,commodity)====<br />
Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
====int cityPopulation(city)====<br />
Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions. <br />
<br />
====bool creatureIsDyingOrDead(creature)====<br />
Test if the creature's body is dying or dead.<br />
<br />
====void creatureSetHealth(creature,int)====<br />
Sets health level of a creature. <br />
Arguments:<br />
''int'' is the health level as a percentage, 0 to 100.<br />
<br />
====void creatureSetMouth(creature,visage,visage)====<br />
Sets ''visage'' pose of a creature. <br />
When the first ''visage'' pose is an animated pose, the second ''visage'' pose is set when the animation completes. <br />
<br />
====void creatureSetVisage(creature,visage)====<br />
Sets ''visage'' of a creature. <br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar. <br />
<br />
====world findGasGiant(orbit)====<br />
Locates a gas giant in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findMoon(orbit)====<br />
Locates a moon in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findPlanet(orbit,int)====<br />
Locates a planet in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types. <br />
''int'' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
====world findRing(orbit)====<br />
Locates a ring around a world in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findRingWorld()====<br />
Locates a ringworld arc section in the current environment. <br />
Arguments:<br />
Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector. <br />
<br />
====text hengeSystemName(system)====<br />
Returns the name of a solar system that is known to contain a henge, as returned by the ''sectorHengeSystem'' function. <br />
<br />
====worldcat hengeSystemWorld(system,int)====<br />
Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city. <br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====world hengeWorld(worldcat)====<br />
Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world. <br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
====ll hengeWorldLL(worldcat)====<br />
Returns the longitude latitude of a henge if there is one. <br />
Arguments:<br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
====text hengeWorldName(worldcat)====<br />
Returns the name assigned to a henge world, given its catalog name.<br />
<br />
====bool hengeWorldPortalActive(worldcat,ll)====<br />
Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal. <br />
Arguments:<br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions. <br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that. <br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom. <br />
<br />
====void itemArmWeapon(item,unit,empire)====<br />
Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive. <br />
Arguments:<br />
''unit'' is the unit who armed the weapon. <br />
''empire'' is the empire who armed the weapon. <br />
<br />
====void itemCreateContent(item,bool,int,commodity,quality,empire,text)====<br />
Creates a new item inside ''item'', which is expected to be a container. <br />
Arguments:<br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''int'' is condition percent, 1 to 100. <br />
If ''text'' is not blank, it is inscribed onto the item.<br />
<br />
====void itemDetonate(item)====<br />
Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
====void itemMakePermanent(item)====<br />
Changes a story item into a permanent item. <br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
====item itemOnGround(commodity,real)====<br />
Locates an item on the ground nearby. <br />
Arguments:<br />
''real'' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
====item itemOnGroundSpecific(int,commodity,quality,empire,text)====<br />
Locates a specific item on the ground nearby. <br />
Arguments:<br />
''int'' is the farthest distance from the story avatar to find the item, in meters. <br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void itemSetDropOnDeath(item,int)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
Arguments:<br />
''int'' is the new state.<br />
<br />
====void itemSetMessage(item,text)====<br />
Sets the message of an item, such as a beacon. This is not the inscription. <br />
Arguments:<br />
''text'' is the new message.<br />
<br />
====void itemSetState(item,int)====<br />
Sets the state of an item, such as the on/off state of a light or musical instrument. <br />
Arguments:<br />
''int'' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source. <br />
<br />
====void narratorHint(text)====<br />
Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window. <br />
<br />
====void narratorImage(file,text,text)====<br />
Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window. <br />
<br />
====void narratorSay(text)====<br />
Sends a text message on the narrator comm channel. <br />
<br />
====void narratorSayAudio(file,text)====<br />
Sends audio and an optional text message on the narrator comm channel.<br />
<br />
====void narratorSayChoice(choiceValue,text)====<br />
Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====void narratorTitle(text)====<br />
Sends a text message on the narrator comm channel formatted as a title. <br />
<br />
====void narratorVideo(file,text)====<br />
Sends video and an optional text message on the narrator comm channel. <br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled. <br />
<br />
====void npcSetRole(npcrole)====<br />
Changes the role of an npc. <br />
The role of an npc cannot be changed while they hold a berth. <br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions. <br />
<br />
====bool sectorHasHengeSystem(sector,int)====<br />
Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city. <br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====system sectorHengeSystem(sector,int)====<br />
Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city. <br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions. <br />
<br />
====void sentientAttackUnit(sentient,unit)====<br />
Order a sentient to attack a unit.<br />
<br />
====void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text)====<br />
Create an item in a sentient's gear. <br />
Arguments:<br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''text'' is inscribed on the item if not blank.<br />
<br />
====item sentientDropGear(sentient,gearslot)====<br />
Drops the item at a sentient's gear slot.<br />
<br />
====item sentientDropGearItem(sentient,commodity)====<br />
Drops an item from a sentient's gear.<br />
<br />
====void sentientFireWeapon(sentient)====<br />
Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
====void sentientFollowAvatar(sentient)====<br />
Order a sentient to follow the person.<br />
<br />
====void sentientFollowSentient(sentient,sentient)====<br />
Order a sentient to follow another sentient.<br />
<br />
====void sentientGetItem(sentient,item)====<br />
Order a sentient to pick an item up off the ground.<br />
<br />
====void sentientGoToAvatar(sentient)====<br />
Order a sentient to go to the avatar.<br />
<br />
====void sentientGoToLL(sentient,ll)====<br />
Order a sentient to go to a longitude latitude.<br />
<br />
====void sentientGoToLLExactly(sentient,ll)====<br />
Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
====void sentientGoToRoom(sentient,text)====<br />
Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
====void sentientGoToUnit(sentient,unit)====<br />
Order a sentient to go to a unit.<br />
<br />
====bool sentientHasItem(sentient,commodity)====<br />
Test if the sentient possesses a specific commodity.<br />
<br />
====bool sentientHasItemSpecific(sentient,commodity,quality,empire,text)====<br />
Test if the sentient's gear contains a very specific commodity. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientHengeCeremony(sentient,ll)====<br />
Order a sentient to perform the henge ceremony, if a henge is found near ''ll''.<br />
<br />
====void sentientItemMakePermanent(sentient,commodity,quality,empire,text)====<br />
Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
Arguments:<br />
''bool'' is the new state.<br />
<br />
====void sentientMoveBack(sentient,real)====<br />
Order a sentient to move backward a distance specified in meters.<br />
<br />
====void sentientMoveForward(sentient,real)====<br />
Order a sentient to move forward a distance specified in meters.<br />
<br />
====void sentientSay(sentient,text,visage)====<br />
Order a sentient being to say a message on the Voice channel.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayAudio(sentient,file,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayChoice(sentient,choiceValue,text,visage)====<br />
Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function. <br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayImage(sentient,file,text,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
Arguments:<br />
''text'' args are image title and text to say. <br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayTo(sentient,atom,text,visage)====<br />
Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSellGearItem(sentient,atom,commodity,int)====<br />
Offers an item from a sentient's gear on the Voice channel. <br />
Arguments:<br />
''atom'' is the target of the sale, causing sentient to turn to face them; it can be null. <br />
The best Q ''commodity'' possessed by ''sentient'' is offered for sale. <br />
''int'' is the price, which can be 0 to offer it for free. <br />
<br />
====void sentientStay(sentient)====<br />
Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions. <br />
<br />
====void shipChargeCapacitor(ship)====<br />
Fills the capacitor to 100% on a ship.<br />
<br />
====void shipChargeShields(ship)====<br />
Fills the shields to 100% on a ship.<br />
<br />
====character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage)====<br />
Creates a character aboard ''ship''. <br />
Arguments:<br />
''int'' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location. <br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void shipCreateCrew(ship,dna)====<br />
Fills all empty crew positions on a ship. <br />
Arguments:<br />
''dna'' is used to create the new crew members.<br />
<br />
====void shipCreateTroops(ship,dna)====<br />
Fills all empty troop positions on a ship. <br />
Arguments:<br />
''dna'' is used to create the new troops.<br />
<br />
====sentient shipFindAI(ship,npcrole)====<br />
Locates an AI controlled sentient aboard a ship. <br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
====sentient shipFindAIInRoom(ship,npcrole,text)====<br />
Locates an AI controlled sentient aboard a ship, in a specific room. <br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====npc shipFindNpc(ship,npcrole)====<br />
Locates an npc aboard a ship. <br />
Does not find demiavatars. <br />
<br />
====npc shipFindNpcInRoom(ship,npcrole,text)====<br />
Locates an npc aboard a ship, in a specific room. <br />
Does not find demiavatars. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====void shipInteriorLight(ship,int)====<br />
Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
====void shipManeuverDrive(ship,int)====<br />
Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
====void shipPowerPlant(ship,int)====<br />
Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
====void shipRefuel(ship,int)====<br />
Fills the fuel cells to 100% on a ship with ''int'' quality fuel.<br />
<br />
====void shipRetreat(ship)====<br />
Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
====void shipShields(ship,int)====<br />
Sets a ship's shield state. 0=off, 1=on.<br />
<br />
====creature shipStationOccupant(ship,station)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
Designer returns an avatar in a designer instance. <br />
Livestock returns an animal. <br />
<br />
====creature shipStationOccupantInRoom(ship,station,text)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
Designer returns an avatar in a designer instance. <br />
Livestock returns an animal. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft. <br />
<br />
====ship unitAboardShip(unit)====<br />
Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
====bool unitAtBuilding(unit,building)====<br />
Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
====world unitAtWorld(unit)====<br />
Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
====bool unitInOrbit(unit)====<br />
Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
====ship unitInsideShip(unit)====<br />
Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
====text unitRoomName(unit)====<br />
Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room. <br />
<br />
====ship unitStationInTradeRange(unit,stance,int)====<br />
Returns station that is within trade range of the unit. <br />
Arguments:<br />
''stance'' and ''int'' are used to check the station empire's stance toward the unit's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions. <br />
<br />
====void vehicleRefuel(vehicle)====<br />
Fills the fuel cells to 100% on a vehicle. <br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions. <br />
<br />
====bool worldAtmosphereBreathable(world)====<br />
Test if the world atmosphere is breathable.<br />
<br />
====bool worldClaimed(world)====<br />
Test if the world is claimed by any empire.<br />
<br />
====bool worldClaimedBy(world,empire)====<br />
Test if the world is claimed by ''empire''.<br />
<br />
====character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage)====<br />
Creates a character on ''world'' at ''ll''. <br />
Arguments:<br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void worldCreateIndigenous(world,ll,dna)====<br />
Create an indigenous village on a world. Establishes the indigenous DNA using ''dna'' if it is not already set.<br />
<br />
====item worldCreateItem(world,ll,bool,commodity,quality,empire,text)====<br />
Create an item on a world. <br />
Arguments:<br />
''ll'' is the location to create the item. <br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''text'' is inscribed on the item if not blank.<br />
<br />
====ship worldCreateShip(world,ll,real,int,quality,empire,text)====<br />
Create a spaceship at a world. <br />
Arguments:<br />
''ll'' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed. <br />
''real'' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
''int'' is the design id of the ship. <br />
''empire'' is the empire who owns the spaceship. <br />
''text'' is the name of the ship, set randomly if this is blank.<br />
<br />
====vehicle worldCreateVehicle(world,ll,commodity,quality,empire)====<br />
Create a vehicle on a world. <br />
Arguments:<br />
''ll'' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed. <br />
''empire'' is the empire who owns the vehicle.<br />
<br />
====bool worldHasCity(world)====<br />
Test if the world has any cities at all.<br />
<br />
====void worldHengeCeremony(world,ll,int)====<br />
Sets the state of the henge ceremony, if there is a henge. <br />
Arguments:<br />
''int'' is ceremony state: 1=Active, 0=inactive.<br />
<br />
====int worldHydrographics(world)====<br />
Returns the world's water percentage in the range 0 to 100.<br />
<br />
====bool worldIsGasGiant(world)====<br />
Test if the world is a gas giant.<br />
<br />
====bool worldIsMoon(world)====<br />
Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
====bool worldIsPlanet(world)====<br />
Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
====bool worldIsPlanetoid(world)====<br />
Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
====bool worldIsRing(world)====<br />
Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
====bool worldIsRingworld(world)====<br />
Test if the world is a ringworld arc section.<br />
<br />
====bool worldIsTitan(world)====<br />
Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
====ll worldLandLocation(world,real,real)====<br />
Returns a location that is on land. <br />
Arguments:<br />
First ''real'' is minimum altitude MSL, in meters. <br />
Second ''real'' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
====ll worldLandLocationNear(world,ll,real,real,real)====<br />
Returns a location that is on land somewhere near ''ll''. <br />
Arguments:<br />
First ''real'' is minimum altitude MSL, in meters. <br />
Second ''real'' is minimum distance from ''ll'', in meters. <br />
Third ''real'' is maximum distance from ''ll'', in meters.<br />
<br />
====bool worldOrbitFrigid(world)====<br />
Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitHabitable(world)====<br />
Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInferno(world)====<br />
Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInner(world)====<br />
Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitOuter(world)====<br />
Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====ll worldRelativeLL(world,ll,real,real)====<br />
Returns a location that is offset from another location. <br />
Arguments:<br />
''ll'' is the reference location. <br />
''real,real'' is horizontal, vertical offset, in meters.<br />
<br />
====void worldScheduleAsteroid(world,int)====<br />
Schedules an asteroid to destroy the world in ''int'' minutes. <br />
Arguments:<br />
''world'' is the world that will be the target of the asteroid. <br />
''int'' is the number of minutes before impact. Must be at least 1.<br />
<br />
====bool worldSupportsAnimals(world)====<br />
Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals. <br />
All worlds that support animals also support plants. <br />
<br />
====bool worldSupportsPlants(world)====<br />
Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants. <br />
Worlds that support plants do not necessarily support animals.</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9858Story Script2021-02-25T15:46:15Z<p>Haxus: /* Functions */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
angle - Angle in degrees, in the range -360 to 360.<br />
<br />
animal - A wild animal. A creature that is not sentient.<br />
<br />
atom - A variable that references an atom. Most objects in the game universe are atoms.<br />
<br />
avatar - A variable that references an avatar atom.<br />
<br />
bool - Boolean value returned by calling one or more functions. Can use logical operators '&', '|', and '!'.<br />
<br />
bool - Boolean argument. Accepts 'true' or 'false', not case sensitive.<br />
<br />
building - Building name, not case sensitive.<br />
<br />
city - A variable that references a capitol building atom.<br />
<br />
commodity - Commodity name, not case sensitive.<br />
<br />
channel - Communication channel name. Not limited to standard channel names.<br />
<br />
character - A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
<br />
choiceValue - A value associated with multiple choices, in the range -127 to 127.<br />
<br />
creature - A variable that references a creature atom. Animals and sentients are creature atoms.<br />
<br />
dna - DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a <br />
city.<br />
<br />
empire - Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
<br />
file - A file name found in the same path as the script.<br />
<br />
gearslot - Gear slot, not case sensitive: Hand, Head, Face, Neck, Body, Wear, Limb, Digit, Waist. All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. All creatures have at least one body slot for carrying gear. Wear is specifically for things worn on the body, such as clothing and armor. Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. All creatures have four waist slots; there is a size limit to items placed at the waist.<br />
<br />
gender - Gender of creature, not case sensitive: Male, Female, Asexual, Hermaphrodite.<br />
<br />
hand - Dominant hand of creature, not case sensitive: Left Handed, Right Handed<br />
<br />
int - Signed integer value. Decimals are truncated.<br />
<br />
item - A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
<br />
ll - A variable that contains a longitude latitude coordinate on a world.<br />
<br />
npc - A variable that references an npc atom.<br />
<br />
npcrole - A role for an AI controlled sentient: Citizen, Worker, Passenger, Crew, Troop, Officer, IndigenousPerson, IndigenousElder, IndigenousHealer, IndigenousStargazer.<br />
<br />
orbit - Orbit: Inferno, Inner, Habitable, Outer or Frigid also Any, Harsh (Inferno or Frigid), Mild (Inner, Habitable, or Outer), Uninhabitable (not Habitable).<br />
<br />
quality - Quality in the range 1 to 255.<br />
<br />
range - Communication range, not case sensitive.<br />
<br />
real - Signed real value.<br />
<br />
scenario - Avatar startup scenario, not case sensitive: Reach for the Stars, Citizen of the Galaxy, The Savage State, Lost Atlantis.<br />
<br />
sector - A variable that references a sector atom.<br />
<br />
sentient - A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
<br />
ship - A variable that references a spacecraft atom, could be a station.<br />
<br />
stage - Growth stage of creature, not case sensitive: Mature, Juvenile.<br />
<br />
stance - Political stance, not case sensitive. Empire, Vassal, Friend, Neutral, Enemy. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
<br />
station - Station that can be occupied, not case sensitive: Command, Citizen, Designer, Engine, FireControl, Game, Helm, Livestock, Medic, Navigation, Patient, Power, Sensor, Shield, Transporter, Troop, Turret<br />
<br />
system - A variable that references a solar system atom.<br />
<br />
text - Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
<br />
unit - A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
<br />
vehicle - A variable that references a vehicle atom.<br />
<br />
void - A function return value placeholder indicating a function does not return anything.<br />
<br />
world - A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
====goto blockName====<br />
Unconditional branch to a block of the story.<br />
<br />
====if(bool) blockName====<br />
In the catalyst block, ''if'' tests determine when the story can start for an avatar and which block will begin the story.<br />
In body blocks, ''if'' tests determine when to branch to another block of the story.<br />
Each block of the story, including the catalyst, may contain more than one ''if'' to test and branch based on different conditions. The story engine checks the ''if'' conditions of the current block every 10 seconds. Each ''if'' is tested in the order it appears in the script. The first ''if'' to return true results in a branch to its block of the story.<br />
<br />
====choiceValue choiceMade()====<br />
Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
====bool dateIsChristmas()====<br />
Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
====int secondsElapsed()====<br />
Returns the number of seconds that have passed since the current story block was started.<br />
<br />
====bool wait(int)====<br />
Returns true if ''int'' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the ''storyDroppable'' function.<br />
<br />
====void storyAuthor(text)====<br />
Identifies the author of the story. Required in catalyst block.<br />
<br />
====void storyAutoRepeat()====<br />
Enables the story to automatically start repeatedly, based on the catalyst.<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoRepeatUntilComplete()====<br />
Enables the story to automatically start repeatedly, based on the catalyst. <br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed. <br />
A story that is dropped is not considered to be completed. <br />
Only one auto started story can be active at a time.<br />
<br />
====void storyAutoStart()====<br />
Enables the story to automatically start once, based on the catalyst. <br />
Only one auto started story can be active at a time.<br />
<br />
====void storyBrief(text)====<br />
Gives a brief description of the story. Required in catalyst block.<br />
<br />
====void storyDroppable(bool)====<br />
Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script. <br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story. <br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way. <br />
<br />
====void storyInterval(int)====<br />
Specifies the time interval in minutes before the story can start again. <br />
The time interval starts when the story terminates, whether by finishing or by dropping. <br />
<br />
====void storyTitle(text)====<br />
Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
Avatar functions operate on the avatar atom for whom the story is running. <br />
<br />
====avatar avatar()====<br />
Returns the person executing the story.<br />
<br />
====bool avatarConstructedBuildingHabitable(building)====<br />
Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====bool avatarConstructedBuildingHarsh(building)====<br />
Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
====void avatarCreditGovtDebt(real)====<br />
Credits the person's government debt account with a number of cronodollars.<br />
<br />
====bool avatarCurrentItem(commodity)====<br />
Test if the person's current item is a commodity.<br />
<br />
====atom avatarEnvironment()====<br />
Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
====int avatarEVAMinutes()====<br />
Returns the number of minutes of EVA experience.<br />
<br />
====bool avatarHadItem(commodity)====<br />
Test if the person's gear has ever contained a commodity.<br />
<br />
====bool avatarHasFood()====<br />
Test if the person's gear contains any food.<br />
<br />
====bool avatarHasItem(commodity)====<br />
Test if the person's gear contains a commodity.<br />
<br />
====bool avatarHasItemInHand(commodity)====<br />
Test if the person is holding a commodity in their hand.<br />
<br />
====bool avatarHasItemInHandSpecific(commodity,quality,empire,text)====<br />
Test if the person is holding a specific commodity in their hand. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarHasItemSpecific(commodity,quality,empire,text)====<br />
Test if the person's gear contains a very specific commodity. ''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====bool avatarInCity()====<br />
Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
====bool avatarInitScenario(scenario)====<br />
Test if the person started the game using a specified ''scenario''.<br />
<br />
====bool avatarInOrbit()====<br />
Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
====bool avatarInStudio()====<br />
Test if the person is inside a design studio instance.<br />
<br />
====bool avatarInVehicle(commodity)====<br />
Test if the person is inside a certain type of vehicle.<br />
<br />
====bool avatarInVehicleMoving(commodity)====<br />
Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
====bool avatarInVehicleOnGround(commodity)====<br />
Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
====int avatarItemCount(commodity)====<br />
Returns the amount of a commodity possessed by the avatar.<br />
<br />
====void avatarItemMakePermanent(commodity,quality,empire,text)====<br />
Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void avatarItemSetDropOnDeath(int,commodity,quality,empire,text)====<br />
Sets the ''drop'' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. ''bool'' is the new state.<br />
<br />
====bool avatarLineageAvatar()====<br />
Returns true if the avatar's lineage is a regular avatar.<br />
<br />
====bool avatarLineageDemiavatar()====<br />
Returns true if the avatar's lineage is demiavatar.<br />
<br />
====bool avatarLineageHighborn()====<br />
Returns true if the avatar's lineage is highborn.<br />
<br />
====int avatarOnLineMinutes()====<br />
Returns number of minutes the person has been on line.<br />
<br />
====bool avatarStoryCompleted(int)====<br />
Test if the person has completed a particular story script id.<br />
<br />
====int avatarStoryLastResult(int)====<br />
Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
====void avatarStoryResult(int)====<br />
Stores the result for the current story in an avatar's memory. ''int'' is result, in the range 0 to 255. <br />
<br />
====int avatarVehicleMinutes(commodity)====<br />
Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the ''atom'' argument is not valid, all functions return quietly. <br />
<br />
====atom atom(int)====<br />
Casts ''int'' to be an atom identifier.<br />
<br />
====city atomCity(atom)====<br />
Returns the city capitol building atom whose jurisdiction controls the building site that contains ''atom''. <br />
The result is 0 if the atom's current building is not part of a city. <br />
If ''atom'' is on a road, the capitol building whose jurisdiction contains ''atom'' is returned. <br />
The result is 0 if ''atom'' is not at a building site or on a road in a city. <br />
<br />
====void atomComm(atom,channel,range,text)====<br />
Atom sends a message on a comm channel.<br />
<br />
====void atomCommChannelToAtom(atom,atom,channel)====<br />
Atom opens a channel to the other atom.<br />
<br />
====void atomCommChoice(atom,channel,range,choiceValue,text)====<br />
Atom says a choice on a comm channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage)====<br />
Creates a character near ''atom'', subordinate to the same parent as ''atom''. Will not create the charater if ''atom'' is in a vehicle. <br />
Arguments:<br />
''angle'' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind. <br />
''real'' is a distance in meters. <br />
The new character's location will be in the domain of ''atom''s parent. i.e. on the same ship or world. The path from ''atom'' to the new character's location will be unobstructed. The final starting location will be no farther than ''real'' meters from ''atom'', even if it means starting on top of ''atom''. It will be closer than ''real'' if the path to the starting location from the ''atom'' is obstructed. <br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====real atomDistanceToAtom(atom,atom)====<br />
Returns the distance between two atoms, in meters. <br />
<br />
====int atomEmpire(atom)====<br />
Returns id value of an atom's empire. 0 if none.<br />
<br />
====atom atomFindBuilding(atom,building,int,stance,int)====<br />
Locates a building of a specific ''building'' type, subordinate to ''atom''. <br />
Arguments:<br />
''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====vehicle atomFindVehicle(atom,commodity,int)====<br />
Locates a vehicle of a specific ''commodity'' type, subordinate to ''atom''. ''int'' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care. <br />
<br />
====bool atomHasAtom(atom,atom)====<br />
Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
====bool atomHasBuilding(atom,building,int,stance,int)====<br />
Test recursively if an atom has a building type. The atom might typically be a system, world or city. <br />
Arguments:<br />
''int'' is under construction requirement 0=yes, 1=no, 2=ok, <br />
''stance'' and ''int'' are used to check the atom empire's stance toward the building's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
====bool atomInSystem(atom,system)====<br />
Returns true if atom is in a solar system.<br />
<br />
====bool atomIsAtom(atom,atom)====<br />
Returns true if atom == atom and atom is valid.<br />
<br />
====sector atomSector(atom)====<br />
Returns the sector atom that contains ''atom''.<br />
<br />
====bool atomValid(atom)====<br />
Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
====world atomWorld(atom)====<br />
Returns the world atom that contains ''atom''. ''atom'' may be subordinate to the world at any subatom level or distance, possibly in space. <br />
Returns ''atom'' if atom is a world.<br />
<br />
====ll atomWorldLL(atom)====<br />
Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time. <br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
====bool blueprintSpacecraftLoad(int)====<br />
Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story. <br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously. <br />
<br />
====void characterDepart(character)====<br />
Causes a character to depart the scene. The character disappears instantly with no visual effect. <br />
<br />
====void characterDie(character)====<br />
Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time. <br />
<br />
====void characterEquipFromCity(character,gearslot,commodity,text)====<br />
Transfer an item to a character's gear from the inventory of the current city. <br />
Arguments:<br />
''text'' is an optional inscription to place on the item.<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
====void characterSetIndestructible(character,bool)====<br />
Sets indestructible state of a character. <br />
<br />
====void characterWantItem(character,commodity)====<br />
Causes the character to want a specific commodity. <br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
<br />
====void characterWantItemSpecific(character,commodity,quality,empire,text)====<br />
Causes the character to want a very specific commodity. <br />
When a character wants an item, they will make a bid if it is offered on the voice channel. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank. <br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom. <br />
<br />
====vehicle cityFindNewVehicle(city,commodity)====<br />
Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
====bool cityHasBuilding(city,building,int)====<br />
Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building. <br />
<br />
====bool cityHasFood(city)====<br />
Test if a city has any food in any of its buildings.<br />
<br />
====bool cityHasItem(city,commodity)====<br />
Test if a city has a commodity in any of its buildings. <br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
====bool cityHasPower(city)====<br />
Test if a city has any electricity. <br />
Arguments:<br />
''city'' can be any building. <br />
<br />
====int cityItemCount(city,commodity)====<br />
Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
====int cityPopulation(city)====<br />
Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions. <br />
<br />
====bool creatureIsDyingOrDead(creature)====<br />
Test if the creature's body is dying or dead.<br />
<br />
====void creatureSetHealth(creature,int)====<br />
Sets health level of a creature. <br />
Arguments:<br />
''int'' is the health level as a percentage, 0 to 100.<br />
<br />
====void creatureSetMouth(creature,visage,visage)====<br />
Sets ''visage'' pose of a creature. <br />
When the first ''visage'' pose is an animated pose, the second ''visage'' pose is set when the animation completes. <br />
<br />
====void creatureSetVisage(creature,visage)====<br />
Sets ''visage'' of a creature. <br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar. <br />
<br />
====world findGasGiant(orbit)====<br />
Locates a gas giant in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findMoon(orbit)====<br />
Locates a moon in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findPlanet(orbit,int)====<br />
Locates a planet in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types. <br />
''int'' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
====world findRing(orbit)====<br />
Locates a ring around a world in the current environment. Avatar must not be in deep space. <br />
Arguments:<br />
''orbit'' may include the also types.<br />
<br />
====world findRingWorld()====<br />
Locates a ringworld arc section in the current environment. <br />
Arguments:<br />
Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector. <br />
<br />
====text hengeSystemName(system)====<br />
Returns the name of a solar system that is known to contain a henge, as returned by the ''sectorHengeSystem'' function. <br />
<br />
====worldcat hengeSystemWorld(system,int)====<br />
Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city. <br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====world hengeWorld(worldcat)====<br />
Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world. <br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
====ll hengeWorldLL(worldcat)====<br />
Returns the longitude latitude of a henge if there is one. <br />
Arguments:<br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
====text hengeWorldName(worldcat)====<br />
Returns the name assigned to a henge world, given its catalog name.<br />
<br />
====bool hengeWorldPortalActive(worldcat,ll)====<br />
Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal. <br />
Arguments:<br />
''worldcat'' is a catalog name of a henge world. <br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions. <br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that. <br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom. <br />
<br />
====void itemArmWeapon(item,unit,empire)====<br />
Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive. <br />
Arguments:<br />
''unit'' is the unit who armed the weapon. <br />
''empire'' is the empire who armed the weapon. <br />
<br />
====void itemCreateContent(item,bool,int,commodity,quality,empire,text)====<br />
Creates a new item inside ''item'', which is expected to be a container. <br />
Arguments:<br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''int'' is condition percent, 1 to 100. <br />
If ''text'' is not blank, it is inscribed onto the item.<br />
<br />
====void itemDetonate(item)====<br />
Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
====void itemMakePermanent(item)====<br />
Changes a story item into a permanent item. <br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
====item itemOnGround(commodity,real)====<br />
Locates an item on the ground nearby. <br />
Arguments:<br />
''real'' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
====item itemOnGroundSpecific(int,commodity,quality,empire,text)====<br />
Locates a specific item on the ground nearby. <br />
Arguments:<br />
''int'' is the farthest distance from the story avatar to find the item, in meters. <br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void itemSetDropOnDeath(item,int)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
Arguments:<br />
''int'' is the new state.<br />
<br />
====void itemSetMessage(item,text)====<br />
Sets the message of an item, such as a beacon. This is not the inscription. <br />
Arguments:<br />
''text'' is the new message.<br />
<br />
====void itemSetState(item,int)====<br />
Sets the state of an item, such as the on/off state of a light or musical instrument. <br />
Arguments:<br />
''int'' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source. <br />
<br />
====void narratorHint(text)====<br />
Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window. <br />
<br />
====void narratorImage(file,text,text)====<br />
Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window. <br />
<br />
====void narratorSay(text)====<br />
Sends a text message on the narrator comm channel. <br />
<br />
====void narratorSayAudio(file,text)====<br />
Sends audio and an optional text message on the narrator comm channel.<br />
<br />
====void narratorSayChoice(choiceValue,text)====<br />
Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
====void narratorTitle(text)====<br />
Sends a text message on the narrator comm channel formatted as a title. <br />
<br />
====void narratorVideo(file,text)====<br />
Sends video and an optional text message on the narrator comm channel. <br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled. <br />
<br />
====void npcSetRole(npcrole)====<br />
Changes the role of an npc. <br />
The role of an npc cannot be changed while they hold a berth. <br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions. <br />
<br />
====bool sectorHasHengeSystem(sector,int)====<br />
Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city. <br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
====system sectorHengeSystem(sector,int)====<br />
Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city. <br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
Arguments:<br />
''int'' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions. <br />
<br />
====void sentientAttackUnit(sentient,unit)====<br />
Order a sentient to attack a unit.<br />
<br />
====void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text)====<br />
Create an item in a sentient's gear. <br />
Arguments:<br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''text'' is inscribed on the item if not blank.<br />
<br />
====item sentientDropGear(sentient,gearslot)====<br />
Drops the item at a sentient's gear slot.<br />
<br />
====item sentientDropGearItem(sentient,commodity)====<br />
Drops an item from a sentient's gear.<br />
<br />
====void sentientFireWeapon(sentient)====<br />
Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
====void sentientFollowAvatar(sentient)====<br />
Order a sentient to follow the person.<br />
<br />
====void sentientFollowSentient(sentient,sentient)====<br />
Order a sentient to follow another sentient.<br />
<br />
====void sentientGetItem(sentient,item)====<br />
Order a sentient to pick an item up off the ground.<br />
<br />
====void sentientGoToAvatar(sentient)====<br />
Order a sentient to go to the avatar.<br />
<br />
====void sentientGoToLL(sentient,ll)====<br />
Order a sentient to go to a longitude latitude.<br />
<br />
====void sentientGoToLLExactly(sentient,ll)====<br />
Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
====void sentientGoToRoom(sentient,text)====<br />
Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
====void sentientGoToUnit(sentient,unit)====<br />
Order a sentient to go to a unit.<br />
<br />
====bool sentientHasItem(sentient,commodity)====<br />
Test if the sentient possesses a specific commodity.<br />
<br />
====bool sentientHasItemSpecific(sentient,commodity,quality,empire,text)====<br />
Test if the sentient's gear contains a very specific commodity. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientHengeCeremony(sentient,ll)====<br />
Order a sentient to perform the henge ceremony, if a henge is found near ''ll''.<br />
<br />
====void sentientItemMakePermanent(sentient,commodity,quality,empire,text)====<br />
Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
Arguments:<br />
''text'' is compared against the inscription only if ''text'' is not blank.<br />
<br />
====void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text)====<br />
Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. <br />
Arguments:<br />
''bool'' is the new state.<br />
<br />
====void sentientMoveBack(sentient,real)====<br />
Order a sentient to move backward a distance specified in meters.<br />
<br />
====void sentientMoveForward(sentient,real)====<br />
Order a sentient to move forward a distance specified in meters.<br />
<br />
====void sentientSay(sentient,text,visage)====<br />
Order a sentient being to say a message on the Voice channel.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayAudio(sentient,file,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayChoice(sentient,choiceValue,text,visage)====<br />
Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk. <br />
Several choices may be stated if each is given a different choiceValue. <br />
Result of player's choice is tested using the choiceMade function. <br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayImage(sentient,file,text,text,visage)====<br />
Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
Arguments:<br />
''text'' args are image title and text to say. <br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSayTo(sentient,atom,text,visage)====<br />
Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
Arguments:<br />
''visage'' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
====void sentientSellGearItem(sentient,atom,commodity,int)====<br />
Offers an item from a sentient's gear on the Voice channel. <br />
Arguments:<br />
''atom'' is the target of the sale, causing sentient to turn to face them; it can be null. <br />
The best Q ''commodity'' possessed by ''sentient'' is offered for sale. <br />
''int'' is the price, which can be 0 to offer it for free. <br />
<br />
====void sentientStay(sentient)====<br />
Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions. <br />
<br />
====void shipChargeCapacitor(ship)====<br />
Fills the capacitor to 100% on a ship.<br />
<br />
====void shipChargeShields(ship)====<br />
Fills the shields to 100% on a ship.<br />
<br />
====character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage)====<br />
Creates a character aboard ''ship''. <br />
Arguments:<br />
''int'' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location. <br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void shipCreateCrew(ship,dna)====<br />
Fills all empty crew positions on a ship. <br />
Arguments:<br />
''dna'' is used to create the new crew members.<br />
<br />
====void shipCreateTroops(ship,dna)====<br />
Fills all empty troop positions on a ship. <br />
Arguments:<br />
''dna'' is used to create the new troops.<br />
<br />
====sentient shipFindAI(ship,npcrole)====<br />
Locates an AI controlled sentient aboard a ship. <br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
<br />
====sentient shipFindAIInRoom(ship,npcrole,text)====<br />
Locates an AI controlled sentient aboard a ship, in a specific room. <br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====npc shipFindNpc(ship,npcrole)====<br />
Locates an npc aboard a ship. <br />
Does not find demiavatars. <br />
<br />
====npc shipFindNpcInRoom(ship,npcrole,text)====<br />
Locates an npc aboard a ship, in a specific room. <br />
Does not find demiavatars. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
====void shipInteriorLight(ship,int)====<br />
Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
====void shipManeuverDrive(ship,int)====<br />
Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
====void shipPowerPlant(ship,int)====<br />
Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
====void shipRefuel(ship,int)====<br />
Fills the fuel cells to 100% on a ship with ''int'' quality fuel.<br />
<br />
====void shipRetreat(ship)====<br />
Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
====void shipShields(ship,int)====<br />
Sets a ship's shield state. 0=off, 1=on.<br />
<br />
====creature shipStationOccupant(ship,station)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
Designer returns an avatar in a designer instance. <br />
Livestock returns an animal. <br />
<br />
====creature shipStationOccupantInRoom(ship,station,text)====<br />
Returns a creature who is controlling or occupying a station on the ship. <br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned. <br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled. <br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned. <br />
Designer returns an avatar in a designer instance. <br />
Livestock returns an animal. <br />
Arguments:<br />
text - Room name to find station occupant, as returned by unitRoomName. <br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft. <br />
<br />
====ship unitAboardShip(unit)====<br />
Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
====bool unitAtBuilding(unit,building)====<br />
Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
====world unitAtWorld(unit)====<br />
Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
====bool unitInOrbit(unit)====<br />
Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
====ship unitInsideShip(unit)====<br />
Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
====text unitRoomName(unit)====<br />
Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room. <br />
<br />
====ship unitStationInTradeRange(unit,stance,int)====<br />
Returns station that is within trade range of the unit. <br />
Arguments:<br />
''stance'' and ''int'' are used to check the station empire's stance toward the unit's empire. ''int'' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse. <br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions. <br />
<br />
====void vehicleRefuel(vehicle)====<br />
Fills the fuel cells to 100% on a vehicle. <br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions. <br />
<br />
====bool worldAtmosphereBreathable(world)====<br />
Test if the world atmosphere is breathable.<br />
<br />
====bool worldClaimed(world)====<br />
Test if the world is claimed by any empire.<br />
<br />
====bool worldClaimedBy(world,empire)====<br />
Test if the world is claimed by ''empire''.<br />
<br />
====character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage)====<br />
Creates a character on ''world'' at ''ll''. <br />
Arguments:<br />
''text'' is the name of the new character. <br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character. <br />
''dna'' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the ''dna'' argument is overridden by the DNA of the original character met by the avatar. <br />
<br />
====void worldCreateIndigenous(world,ll,dna)====<br />
Create an indigenous village on a world. Establishes the indigenous DNA using ''dna'' if it is not already set.<br />
<br />
====item worldCreateItem(world,ll,bool,commodity,quality,empire,text)====<br />
Create an item on a world. <br />
Arguments:<br />
''ll'' is the location to create the item. <br />
''bool'' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
''empire'' is the empire of origin of the item. <br />
''text'' is inscribed on the item if not blank.<br />
<br />
====ship worldCreateShip(world,ll,real,int,quality,empire,text)====<br />
Create a spaceship at a world. <br />
Arguments:<br />
''ll'' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed. <br />
''real'' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
''int'' is the design id of the ship. <br />
''empire'' is the empire who owns the spaceship. <br />
''text'' is the name of the ship, set randomly if this is blank.<br />
<br />
====vehicle worldCreateVehicle(world,ll,commodity,quality,empire)====<br />
Create a vehicle on a world. <br />
Arguments:<br />
''ll'' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed. <br />
''empire'' is the empire who owns the vehicle.<br />
<br />
====bool worldHasCity(world)====<br />
Test if the world has any cities at all.<br />
<br />
====void worldHengeCeremony(world,ll,int)====<br />
Sets the state of the henge ceremony, if there is a henge. <br />
Arguments:<br />
''int'' is ceremony state: 1=Active, 0=inactive.<br />
<br />
====int worldHydrographics(world)====<br />
Returns the world's water percentage in the range 0 to 100.<br />
<br />
====bool worldIsGasGiant(world)====<br />
Test if the world is a gas giant.<br />
<br />
====bool worldIsMoon(world)====<br />
Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
====bool worldIsPlanet(world)====<br />
Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
====bool worldIsPlanetoid(world)====<br />
Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
====bool worldIsRing(world)====<br />
Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
====bool worldIsRingworld(world)====<br />
Test if the world is a ringworld arc section.<br />
<br />
====bool worldIsTitan(world)====<br />
Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
====ll worldLandLocation(world,real,real)====<br />
Returns a location that is on land. <br />
Arguments:<br />
First ''real'' is minimum altitude MSL, in meters. <br />
Second ''real'' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
====ll worldLandLocationNear(world,ll,real,real,real)====<br />
Returns a location that is on land somewhere near ''ll''. <br />
Arguments:<br />
First ''real'' is minimum altitude MSL, in meters. <br />
Second ''real'' is minimum distance from ''ll'', in meters. <br />
Third ''real'' is maximum distance from ''ll'', in meters.<br />
<br />
====bool worldOrbitFrigid(world)====<br />
Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitHabitable(world)====<br />
Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInferno(world)====<br />
Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitInner(world)====<br />
Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====bool worldOrbitOuter(world)====<br />
Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
====ll worldRelativeLL(world,ll,real,real)====<br />
Returns a location that is offset from another location. <br />
Arguments:<br />
''ll'' is the reference location. <br />
''real,real'' is horizontal, vertical offset, in meters.<br />
<br />
====void worldScheduleAsteroid(world,int)====<br />
Schedules an asteroid to destroy the world in ''int'' minutes. <br />
Arguments:<br />
''world'' is the world that will be the target of the asteroid. <br />
''int'' is the number of minutes before impact. Must be at least 1.<br />
<br />
====bool worldSupportsAnimals(world)====<br />
Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals. <br />
All worlds that support animals also support plants. <br />
<br />
====bool worldSupportsPlants(world)====<br />
Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants. <br />
Worlds that support plants do not necessarily support animals.</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Designer&diff=9857Designer2021-02-25T15:19:29Z<p>Haxus: /* Blueprint Exchange */</p>
<hr />
<div>The ''Designer'' is a modeling tool used to design spacecraft and building blueprints. <br />
<br />
The [[Designer Menu]] page describes each individual menu item.<br />
<br />
The [[Design Parts]] page describes each individual kind of part.<br />
<br />
=Architect=<br />
The person who creates a design is the architect of the design.<br />
The person who creates each part is the architect of that part.<br />
Parts retain their architect information with them.<br />
<br />
When multiple architects work on the same design, the architect who initiates the designer instance is the architect of the design.<br />
<br />
The analysis report for a design lists all architects whose parts are included in a design.<br />
<br />
=Blueprints=<br />
A blueprint is a design that has been analyzed and accepted for use in the game. Blueprints contain all of the information needed to make a functional building or spacecraft, such as its 3D model and design specifications. Blueprints are stored in a ''universal library'' where they are accessed by spacecraft and buildings during game play. Blueprints are identified by a unique number, assigned when stored in the library.<br />
<br />
Blueprints can be saved onto media items in an avatar's gear. Blank paper and blank disks can each hold only one blueprint. Storage devices can hold varying numbers of blueprints, depending on the device. <br />
<br />
Spacecraft, buildings, and storage devices reference their blueprints in the library throughout their lifetimes. Blueprints that are in use by game objects cannot be deleted. When a player deletes a blueprint, it may instead be deactivated in the library, until it is no longer referenced and it can be finally removed.<br />
<br />
In the designer and in this wiki, the word blueprint is used generally to refer to any design, whether or not it has been finalized.<br />
<br />
==In-Game Blueprint Exchange==<br />
The blueprint exchange provides a place for players to share blueprints with other players in the online game. Separate exchanges for spacecraft blueprints and building blueprints are accessed in the game. <br />
<br />
At the exchanges, blueprints can be published by architects and they can be purchased by players. Prices are in cronodollars ¢, the money of the game. Cronos are not related to real money. '''Spacecraft and building blueprints do not cost real money.''' <br />
<br />
Publishing is a way to share blueprints with other players. Publishing terms control the price and who is permitted to use the blueprint. <br />
<br />
'''A blueprint does not have to be published to be used in the game.''' A blueprint can be saved onto a storage device in your gear, then used to make buildings or spacecraft. Interfaces that request a blueprint know how to find them in your gear.<br />
<br />
==Web Blueprint Exchange==<br />
The web site offers access to a public blueprint exchange. This exchange is not connected with the in-game exchange in any way.<br />
<br />
The web blueprint exchange offers a place for players to publicly share their .SoH files. There are no publishing terms or restrictions. Blueprints posted to the web exchange are freely available for download by anyone on the Internet.<br />
<br />
===Prepare .SoH for Publishing===<br />
Two things should be done to prepare a .SoH file for publishing to the web blueprint exchange. <br />
<br />
Obstructions should be refreshed. Obstruction data provides volume information necessary to create the design analysis report. The report is presented on a web page in the exchange.<br />
<br />
A nice scene should be present in the view window. A screen grab of the scene is stored with the file. The screen grab is shown on the report. The screen grab is also shown on the button that accesses the report page.<br />
<br />
=Designer Access=<br />
The designer can be accessed both online and when playing offline solo.<br />
<br />
==Online Designer==<br />
Online, a designer is accessed by going to a [[Design_Studio|design studio]] building or by occupying a [[Design_Parts#Station.2C_Designer|designer station]] while aboard a spacecraft.<br />
<br />
To enter a designer at a design studio, display the ''Building'' (<code>F10</code>) window and click on the "Enter" button of a studio. When a studio is "Vacant", you may leave the password box blank or you may enter a password of your choice. The password you enter establishes that studio's password until the studio becomes vacant. To join an "Occupied" design studio, you must enter the password that was established by the first person to enter the studio.<br />
<br />
To enter a designer aboard a spacecraft, move to a designer station and enter the station by pressing the <code>E</code> key. Designers aboard a spacecraft are not password protected. Each designer station creates its own designer instance. People who enter the same designer station are placed in the same designer instance. The avatar enters the designer instance and their body does not remain at the station in the ship, like it does with other stations.<br />
<br />
Players may work together in the same studio to develop a design. In this case, the first player to enter the vacant studio is registered as the architect and owner of the design.<br />
<br />
==Offline Designer==<br />
When the game is launched, the designer can be entered ''solo'', instead of logging in to the game. Overall program performance is better when designing solo because no server is involved. Once a design is completed solo, it can be saved to a .SoH file. That file can be loaded into the on line designer, for storage in the universal library.<br />
<br />
=Design Process=<br />
General steps to making a design go something like this.<br />
* Adjust design properties to establish goals.<br />
* Create an exterior hull.<br />
* Create one or more rooms inside the hull.<br />
* Cut out doors and windows.<br />
* Create finer model details.<br />
* Apply textures and other effects to finish the surfaces.<br />
* Add details: control stations, berths, lights, display screens, etc.<br />
* Add room voids, paths and barriers.<br />
* Make doors operational.<br />
* Finalize the design.<br />
<br />
Designing typically involves creating many [[Design_Parts|''parts'']].<br />
Parts include things like hulls, rooms, jigs, lights, display screens, etc.<br />
<br />
Check design properties from time to time. It shows an assessment of the design, based on what you are trying to design.<br />
<br />
==Design Goal==<br />
Your goal as an architect is to make beautiful looking designs that are functional in the universe of Hazeron.<br />
Emphasis is placed on appearance over technical realism.<br />
<br />
Hull sections do not have to be sculpted to form airtight continuous shells where they join each other.<br />
This is inefficient and difficult to model.<br />
It is much better to butt an engine pylon into the side of the hull, rather than carving a hole so it can make a perfect junction.<br />
Carving that hole breaks the side face into many tiny faces.<br />
It is likely unnecessary, unless people are going to walk or see through the opening.<br />
<br />
A design does not require the interior to conform to the exterior.<br />
Your design may represent a large intricate spacecraft that appears to have many rooms.<br />
It is inefficient and unnecessary to create all of the interior rooms and detail that would exist in real life.<br />
Like a movie set, only a few key areas inside the hull need to be modeled.<br />
This enables the designer to efficiently achieve the look and feel desired, without laborious excess work.<br />
<br />
Interior details have no effect on the mass calculation of the design.<br />
Rich interior designs are encouraged.<br />
There is no performance advantage to making stark minimal interiors.<br />
<br />
Be efficient with your designs.<br />
There is no point in modeling details that can never be seen.<br />
A good example is a cargo hold full of cargo.<br />
An inefficient approach would be to build a huge room and fill it with shipping containers.<br />
Instead of being too literal, think of it like a movie set.<br />
It would be much more efficient to build only an accessible area representative of a cargo hold, with walls modeled and textured to look like stacks of shipping containers.<br />
Use those precious faces where they get the most impact; don't waste them.<br />
<br />
Remove faces that can never be seen. Many parts that contribute to the construction materials requirement of a design are affected by the total surface area of their faces. The amount of materials directly affects the construction time. Reducing faces will reduce the construction time and materials of a design.<br />
<br />
More parts are better than less.<br />
Parts help to manage large 3D models.<br />
Rendering information is collected and consolidated efficiently when the OpenGL model is constructed.<br />
It makes no difference in the final rendering if the information comes from one part or many.<br />
<br />
[[Design_Parts#Turbo_Lift|Turbo lifts]] help to make big designs feel elaborate and detailed on the inside, without extensive modeling effort. They are an effective scene change device in science fiction cinema and they are equally effective in the game, to give the feeling of being aboard a really big ship. They also save a lot of walking.<br />
<br />
==Part Mode vs Face Mode==<br />
Parts are composed of ''faces''.<br />
Faces have vertices and edges.<br />
To edit the faces of one or more selected parts, ''face mode'' is enabled.<br />
In a typical design session, face mode is enabled and disabled often, whenever the need arises to modify the faces that make up a part.<br />
<br />
Actions on the ''Parts'' menu operate on whole parts.<br />
Most actions on the Parts menu are disabled when face mode is enabled.<br />
Some part menu actions are only enabled when one or more parts are selected.<br />
<br />
Actions on the ''Face'' menu operate on faces of selected parts.<br />
Most actions on the Face menu are enabled when face mode is enabled.<br />
Textures are applied in face mode.<br />
<br />
==Geometry==<br />
Parts are represented by geometry that can be painted in an OpenGL scene.<br />
Geometry of parts is described by their vertices, edges and faces.<br />
<br />
===Vertices===<br />
Vertices contain 3D Cartesian coordinate locations that describe the position of edges and faces.<br />
Vertices also contain information needed when rendering.<br />
Texture coordinates are stored at vertices.<br />
Glow is emitted at vertices.<br />
<br />
Render information is interpolated between vertices.<br />
Thus, the glow of a vertex will fade off to a neighboring vertex that does not glow.<br />
<br />
Vertices also contain an up direction, for lighting calculations.<br />
The face menu commands ''Flatten Vertices'' and ''Smooth Vertices'' operate on vertex up directions.<br />
<br />
===Edges===<br />
Edges are the visible lines that go from one vertex to another to reveal the boundaries of faces.<br />
Edges exist for the benefit of the designer, to see the model.<br />
Their presence or absence has no effect on the final rendering result.<br />
<br />
===Faces===<br />
Faces are flat surfaces that compose a 3D model.<br />
OpenGL paints faces in front of each other depending upon their Z-depth in the scene.<br />
This is the essence of how 3D scenes are painted by a computer.<br />
<br />
Faces have a front and a back.<br />
Faces are not visible from the back in the final rendering result.<br />
They can be seen from the back in the designer, if back face visibility is enabled.<br />
The object menu command ''Reverse Faces'' flips their facing back and forth.<br />
<br />
''Facing direction'' is determined by the direction the boundary is drawn. <br />
The boundary is clockwise when viewing the front of a face.<br />
The boundary is counterclockwise when viewing the back of a face.<br />
<br />
All faces are created equal.<br />
A face copied from one part and pasted into another becomes a face of the destination part.<br />
It is irrelevant if it came from a hull and gets added to a room.<br />
The part is the hull or room; the face is just a face.<br />
<br />
Faces do not "know" how they were created. A face created as part of an extrusion is no different from a face that is created individually. The extrusion command merely assembles faces into a desired shape.<br />
<br />
Faces should not be bent. They expect to represent a flat plane. A face should be drawn as multiple faces if a curved surface will be represented.<br />
<br />
Three foundational shapes exist.<br />
<br />
*Triangle - A face defined using a boundary of three vertices.<br />
*Quad - A face defined using a boundary of four vertices.<br />
*Face - A face defined using a boundary with three or more vertices.<br />
<br />
==Shapes==<br />
Shapes use parameter-driven methods to generate faces. Primitive shapes can provide a general starting point for more detailed modeling.<br />
<br />
The resulting shape may be modified like any other set of faces. The faces are in no way different than if an architect painstakingly built the same shape using faces. It is typical to generate a quick shape then rip it apart, to use some portion of it, or embellish it to mold it into what you want.<br />
<br />
===Extrusion===<br />
[[file:ScFigExtrusion.png|right|Extrusion]]<br />
An extrusion is formed by projecting a shape along a straight path. Examples include: rooms, beams. <br />
<br />
The creation of an extrusion begins by entering the shape that will be extruded. After the shape is entered, a window presents options to finalize the extrusion. Straight extrusion is made by simply entering the length. <br />
<br />
Faces are formed at the sides of the extrusion. Stepping allows the sides to be divided along the length of the extrusion.<br />
<br />
When the extrusion is generated, the shape follows a straight line. Both ends of the extrusion are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the extrusion shape.<br />
* Subsequent points are entered to describe the extrusion shape.<br />
* A window offers extrusion options.<br />
* Depending on extrusion options, a point may be entered to indicate the height or direction of the extrusion. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Sphere Lon/Lat===<br />
[[file:ScFigSphereLonLat.png|right|Longitude/Latitude Sphere]]<br />
A longitude/latitude sphere is divided into equal divisions of latitude and longitude. The faces are largest at the equator. The faces converge together at the poles. <br />
<br />
Creation of a longitude/latitude sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of latitude divisions and number of longitude divisions. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Sphere Uniform===<br />
[[file:ScFigSphereUniform.png|right|Uniform Sphere]]<br />
A uniform sphere is divided uniformly into triangle faces. All triangles are close to the same size. <br />
<br />
Creation of a uniform sphere is described by entering the center point and a point at its radius. After the points are entered, a window presents options to finalize the sphere. Options include number of divisions at the equator. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the center of the sphere.<br />
* A point is entered at the radius of the sphere.<br />
* A window offers sphere options. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Spindle===<br />
[[file:ScFigSpindle.png|right|Spindle]]<br />
A spindle is created by spinning a shape around an axis. Objects with axial symmetry are created as spindles. Examples include: flying saucer, spool, furniture leg, column, dome, sphere, dinner plate, door knob, dish antenna. <br />
<br />
The creation of a spindle begins by entering the shape that will be spun around an axis. After the shape is entered, a window presents options to finalize the spindle. Options include the number of steps around the axis and the choice of axes. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the spindle shape.<br />
* Subsequent points are entered to describe the spindle shape.<br />
* A window offers spindle options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Tubing===<br />
[[file:ScFigTubing.png|right|Tubing]]<br />
Tubing is very similar to an extrusion except that the path may be complex, instead of simply extruding along a straight line. When the tubing shape is extruded along the path, corners are mitered appropriately.<br />
<br />
Tubing is not just for making water pipes. Tubing is used to make any closed shape that is extruded along a complex path. Examples include: piping, ducts, crown molding, baseboard trim, railroad tracks, hand rails, soffits, wall conforming consoles, base and wall cabinets, and counter tops. <br />
<br />
Creation of tubing begins by entering the path along which the tubing will travel. After the path is entered, a window presents options to finalize the tubing. <br />
<br />
Circular tubing is made by simply entering the diameter and number of sides for the tube. <br />
<br />
Other tubing shapes are created by drawing the cross section shape of the tubing. <br />
<br />
After drawing the shape of the tubing cross section, a guide point is entered on the shape. <br />
<br />
When the tubing is generated, the shape follows the path along the guide. Both ends of the tubing are closed. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the tubing path.<br />
* Subsequent points are entered to describe the tubing path.<br />
* A window offers tubing options.<br />
* Depending on tubing options, a point may be entered to begin the tubing shape.<br />
* Subsequent points are entered to describe the tubing shape.<br />
* Guide point for the tubing shape is entered.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> displays options for completing the tube.<br />
<br />
==Jigs==<br />
<br />
Jigs are found underneath the Part menu button. There are many different types of Jigs, such as Door Jigs, Window Jigs, Launch Tube Jigs, Cutting Jigs, and Decal Jigs. They are created like any other hull or room objects, by selecting the Shape type (Extrusion, Sphere, Tubing, Spindle) and drawing the shape wanted. A physical object is then created and added to the Parts list as a Jig of the type selected. <br />
<br />
Jigs are used by positioning the created Jig object between two rooms, or between a hull and room, ensuring that the Jig penetrates both walls. Once this is positioned correctly, select all 3 objects at once using the Parts panel, and then select "Jig Cut" under the Design Menu button. The jig then cuts the walls in the shape of the jig, allowing you to create tube hallways as an example. The cut walls are then converted to the object type of the jig, such as the walls being converted into transparent glass if using a Window Jig, or door objects if using a Door Jig. <br />
<br />
Jigs can be used in order to create different types of objects, exits or walls between two rooms or the interior and exterior of a design. For example, the Door Jig creates a door between whatever rooms the Jig is placed between. The Window Jig creates a Window between the rooms, while the Launch Tube and Cutting jigs just create holes between the hull and room and cut the faces of each side, respectively. <br />
<br />
All jigs create faces between the two walls that they penetrate, in order to give walls thickness and prevent you from seeing any back-faces.<br />
<br />
==Origin==<br />
<br />
At the center of the design space is a yellow marker, drawn as three intersecting yellow lines.<br />
It does not move when the design grid moves.<br />
The immovable yellow marker is the true origin (0,0,0) location of the design space.<br />
That is the point at which a spacecraft will pivot, when it maneuvers. The origin is the insertion point when placing a building, that determines the altitude of the building on the terrain.<br />
<br />
==Obstructions, Voids, and Barriers==<br />
The obstruction model describes what areas of the design are solid and what areas of the design are not. It is used to determine where a person is standing on the floor and where they are allowed to stand, where vehicles collide with the design and where they go inside, where missiles and gunfire hit or pass through. The obstruction model describes the solid shape of the design and its accessible inside areas.<br />
<br />
The obstruction model cannot be seen. <br />
It exists somewhat like an electrical field around the design.<br />
The presence of the obstruction model can be felt by moving around the design. <br />
The menu toggle ''Blueprint, Solids Obstruct Movement'' must be checked to bump against the obstruction model.<br />
<br />
The obstruction model is created by analyzing the geometry of the design. <br />
A lot of processing effort is required to maintain the model so it is not done automatically with every modification to the design.<br />
The obstruction model is updated using the ''Blueprint, Refresh Obstructions'' menu option.<br />
<br />
The obstruction model is created from hull and landing gear parts, voids, and barriers.<br />
Each state of landing gear is represented so its obstruction shape changes when the gear is extended.<br />
<br />
The obstruction model envelopes each part individually.<br />
To get the best fitting obstruction model, it is beneficial to split elaborate hull parts into<br />
multiple simpler hull parts.<br />
<br />
The obstruction model includes a margin around hull and landing gear parts.<br />
This helps to prevent the eye camera of players from getting close enough to see inside, which breaks the illusion of solidity.<br />
It can also prevent someone from moving close enough to operate a door.<br />
<br />
''Voids'' are used to carve out the spaces accessible to players, from the solid shape created by the hull. Room parts do not contribute to the obstruction model. It is the voids that really determine where people can go inside.<br />
<br />
''Barriers'' are used to create obstructions inside voids. Sometimes it is easier to add a barrier than to change the shape of the room void. Barriers can also be used to create the floor under stairs and ramps.<br />
<br />
==Part Association==<br />
''Association'' is when a part references another part by its id number.<br />
<br />
Certain parts can be associated with certain other parts.<br />
Association is a loose connection between parts.<br />
The meaning of this association depends upon the parts involved.<br />
<br />
A part can be associated with only one other part.<br />
Any number of parts can be associated with the same part.<br />
<br />
Associations are created using the [[Designer_Menu#Associate_Parts|Part, Associate Parts]] command. Associations are removed using the [[Designer_Menu#Dissociate_Parts|Part, Dissociate Parts]].<br />
<br />
Part associations are used by the following parts.<br />
<br />
===Barriers===<br />
[[Design_Parts#Barrier|Barriers]] can be associated with a '''state of a door or landing gear'''.<br />
This determines which barriers are obstructions when the door or landing gear is operated.<br />
<br />
It is ok to associate more than one barrier with a state of a door or landing gear.<br />
<br />
===Berth Name Decals===<br />
[[Design_Parts#Decal.2C_Berth_Name|Berth name decals]] are associated with a '''berth'''.<br />
This determines which name to display on the decal.<br />
''Unassigned'' is displayed when the berth is not assigned.<br />
<br />
It is ok to associate more than one berth name decal to the same berth.<br />
<br />
===FTL Drive Service Panels===<br />
[[Design_Parts#Panel.2C_FTL_Drive|FTL drive service panel]] is associated with an '''engineer station'''.<br />
This determines which FTL drive the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
===Hull Voids===<br />
[[Design_Parts#Void.2C_Hull|Hull voids]] are associated with the '''open state of a door''', when making operable hull doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Association of a hull void and a room void to a door causes it to become a hull door. This enables the interior room void and the exterior hull void to become accessible at once, presumably overlapping each other so a person can move from one void to the other.<br />
<br />
Hull voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Room Life Support Status Panels===<br />
[[Design_Parts#Status.2C_Life_Support|Room life support status panel]] is associated with a '''room void'''.<br />
This determines which room's air pressure reading appears on the panel.<br />
<br />
It is ok to associate more than one life support status panel with a single room.<br />
<br />
===Room Voids===<br />
[[Design_Parts#Void.2C_Room|Room voids]] are associated with the '''open state of a door''', when making operable doors.<br />
This determines which voids become accessible when the door is opened.<br />
<br />
Room voids may be associated with any state of a door or landing gear to make access to the void dependent upon them.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Walk Paths and Ladder Paths===<br />
[[Design_Parts#Path.2C_Walk|Walk paths]] and [[Design_Parts#Path.2C_Ladder|ladder paths]] are associated with the '''open state of a door''', when making operable doors.<br />
This guides NPCs to find their way through the door when it is open.<br />
<br />
Paths may be associated with any state of a door or landing gear to make access to the void dependent upon those states.<br />
<br />
It is ok to associate more than one path or void with a single state of a part.<br />
<br />
===Weapon Service Panels===<br />
[[Design_Parts#Panel.2C_Weapon|Weapon service panel]] is associated with a '''fire control station'''.<br />
This determines which weapon the service panel accesses.<br />
<br />
It is ok to associate more than one service panel with the same system.<br />
<br />
==Walk Paths==<br />
In order for [[NPC]]s to successfully move around the interior of a design with multiple rooms. <br />
<br />
The walk paths need to be above the floor, hip height is usually good. Each end of a walk path is referred to as a ''node'', NPCs will need to always have a clear line to the nearest walk path node in whatever room they are in, or else they will get stuck. Walk paths need to form a full network where each walk path has to start where another ends, so that an NPC that is standing in one room can go to their nearest walk path node and then path through the network to their destination room.<br />
<br />
[[File:WalkPathExample.png|thumb|none|Example of walk paths seen from above. Grey is room voids, blue is door room voids, red is walk path node, and green are the walk paths.]]<br />
<br />
NPC pathing strategy is fairly primitive. When they want to go somewhere, they look for the closest path end point to them that they can move straight to without obstructions. Similar logic is used to find the path node closest to the destination. There must be a complete end-to-end chain of path segments from beginning to end, from there on.<br />
<br />
===Common Mistakes===<br />
Common mistake 1. NPCs will always start by going to the nearest node in their room when they need to path to another room. If the NPC cannot find a path to its destination from its nearest walk path node it will be unable to go anywhere. A walk path is needed to connect the doors across the room from each other, so the NPC can find the closest node at the nearby door, then follow the path to the room containing the destination, then walk across the room straight to destination's room.<br />
<br />
[[File:WalkPathFail.png|thumb|none|Common mistake 1. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
Common mistake 2. NPCs will need a clear line to the nearest node in their room, or they will be unable to leave it. If there are walls or solid furniture inside the room that will prevent a NPC from having a clear line to the nearest walk path node, add a closer walk path node they can use to path to the room's exit.<br />
<br />
[[File:WalkPathFail2.png|thumb|none|Common mistake 2. Bad walk paths on the left. Correct walk paths on the right.]]<br />
<br />
==Finalize==<br />
When a design is complete, it undergoes a finalizing process to insure that it is usable for its intended purpose. The result of the finalize process is presented to the architect in a list. The list may contain green notes, amber warnings and red errors.<br />
<br />
* Green notes are merely informative, providing information about the finalize process.<br />
* Amber warnings bring attention to things that may indicate a design error or oversight was made. Warnings do not prevent a design from being finalized.<br />
* Red errors highlight aspects of the design that must be changed before it can be finalized.<br />
<br />
In the on line designer, a design that finalizes with no errors can be saved into the universal library. Once saved to the library, a unique blueprint number is assigned and reported back to the architect. Then the design can be built in the game and it can be published in the appropriate exchange.<br />
<br />
In the solo designer, a design that finalizes with no errors reports that it could be saved to the library if it was finalized on line.<br />
<br />
=Designer Interface=<br />
The designer interface is dominated by a first person 3D view of the design space. It is in this space that the design will appear as it is created. The mouse pointer is used in this view to select things. The mouse is also used to drag the selected things from one place to another, to move or copy them.<br />
<br />
Hover the mouse pointer over most buttons and controls to see a tool tip. Tool tips on buttons explain their function and they sometimes reveal features that are not obvious at first. The tool tips on some buttons change, depending on current conditions. <br />
<br />
==Grid==<br />
The grid is a tool for drawing, initially visible in the view as a faint grid of lines at floor level. <br />
<br />
The grid is more like a ruler, a measuring tool, than the lines on a piece of graph paper, a static medium. The architect will move and rotate the grid many times during a typical design session, as needed, wherever it helps to draw. <br />
<br />
When more than one person is in the designer, each person sees and interacts with their own grid.<br />
<br />
===Coordinate Systems===<br />
[[file:NumberLine.png|right|Number Line]]<br />
An understanding of coordinate systems is helpful to use the grid effectively. <br />
<br />
Real numbers extend to infinity, both positive and negative. This can be represented visually as a ''number line''. Whole numbers are placed at regular intervals along the line. Fractional numbers fall proportionally between the whole numbers. i.e. 1.5 is 50% of the way between 1 and 2.<br />
<br />
A number can be expressed in units of length, such as meters, in either the positive or negative direction, along the number line. The number is its ordinal value or ''ordinate''. <br />
<br />
That defines a one-dimensional vector. The absolute value of the number is its length. The sign of the number indicates the direction, either positive or negative.<br />
[[file:CoordinateSystem.png|left|Cartesian Coordinate System]]<br />
A ''Cartesian coordinate system'' is created when two number lines are placed perpendicular to each other, so they cross at 0. In a Cartesian coordinate system, each number line is called an ''axis''. They are named X and Y.<br />
<br />
A plane is formed by the intersection of the two axes, called the ''XY plane''. At any location in the plane, the X ordinate and the Y ordinate can be determined by dropping the point perpendicular to the respective axes. Knowing that, we can plot any location in the plane if we know the X ordinate and the Y ordinate at the location.<br />
<br />
The combination of ordinates is called ''coordinates''. Coordinates are expressed using notation like this (X, Y). In the picture, the coordinates of the starship are (-4, -2). The coordinates of the asteroid are (2.5, 3). Coordinates (0,0) are called the ''origin'', because that is where the numbers originate, or begin, for all axes.<br />
<br />
This is a 2 dimensional (2D) coordinate system because it expresses locations as dimensions measured along two axes.<br />
[[file:3DCoordinateSystem.png|right|3D Coordinate System]]<br />
A third axis can be added perpendicular to each of the other two axes. It is named Z. <br />
<br />
Using the coordinates of three axes, any location in space can be described. This is a 3 dimensional (3D) coordinate system because it expresses locations as dimensions measured along three axes. 3D coordinates are expressed like this (X, Y, Z).<br />
<br />
====Right Hand Rule====<br />
Which way does the Z axis go? There are two possible orientations. <br />
<br />
Hazeron uses the right-hand rule for making that determination. It can be visualized by looking at the right hand held out flat. The thumb points in the direction of the positive X axis. The index finger points in the direction of the positive Y axis. Curl the remaining fingers upward, perpendicular to the palm. The middle finger points in the direction of the positive Z axis.<br />
<br />
Mathematically, that means the Z axis is equal to the cross product of the X axis against the Y axis.<br />
<br />
<code>Z = X cross Y</code><br />
<br />
Rotations around axes are also determined using the right hand rule. The positive direction of angular rotation around each axis can be determined by grasping the axis with the right hand, with the thumb pointing in the positive direction. The fingers curl around the axis in the positive angle direction.<br />
<br />
====Absolute Coordinate System====<br />
The ''absolute coordinate system'' underlies all geometry in the designer.<br />
<br />
The absolute coordinate system is indicated by an immovable yellow marker. It is visible in the view as three short intersecting XYZ axis lines.<br />
<br />
That is where the grid starts in a new drawing. To put the grid back to that position, use the [[Designer_Menu#Position_Grid|Position Grid]] command, then choose the '''S=Reset''' option.<br />
<br />
Mathematically, the grid shows the position of a 4x4 transformation matrix. The absolute coordinate system is defined as the identity matrix.<br />
<br />
<code>1 0 0 0</code><br><br />
<code>0 1 0 0</code><br><br />
<code>0 0 1 0</code><br><br />
<code>0 0 0 1</code><br />
<br />
*Origin is at (0,0,0).<br />
*X axis vector is (1,0,0).<br />
*Y axis vector is (0,1,0).<br />
*Z axis vector is (0,0,1).<br />
<br />
===Visible Grid===<br />
The visible grid represents a 3D coordinate system. Axis lines are bright in the positive direction and dim in the negative direction. The position of X is shown as a red line. The position of Y is shown as a green line. The position of Z is shown as a blue line.<br />
<br />
X and Y lines are marked at the ends with the axis name and direction.<br />
<br />
The XY plane contains lines parallel to the X and Y axes, forming a visible grid. Regular interval spacing between the grid lines is controlled by a combo box control on the reference tool bar. <br />
<br />
Grid colors are controlled on the Designer page of the Settings window.<br />
<br />
[[Designer_Menu#Show_Grid|Grid visibility]] can be turned off. <br />
<br />
Grid rounding can be turned on or off, independently of the grid visibility state.<br />
<br />
===Grid as a Tool===<br />
All drawing takes place in the 3D coordinate system of the grid. Position the grid to draw anywhere in the drawing, using coordinates relative to the subject matter. This is typically done frequently while creating a design, using commands accessed on the [[Designer#Reference_Tool_Bar|reference tool bar]] and the [[Designer_Menu#Helpers|helpers menu]].<br />
<br />
[[Designer#Coordinate_Input|Coordinates entered into the input tool bar]] are relative to the grid. <br />
<br />
Freehand drawing happens in the plane of the grid. In the view, the location of the mouse pointer is projected straight into the screen until it intersects the XY plane of the grid, regardless of the visibility state of the grid. If ''Snap to Grid'' is enabled, that location will be rounded to the nearest grid line intersection. Various snapping switches can be enabled. Grid rounding behavior is overridden when the mouse pointer snaps to existing geometry.<br />
<br />
Most drawing commands terminate/replace the current drawing command; grid positioning commands suspend the current drawing command instead. Whenever a drawing command is requesting point input, a grid positioning command can be invoked. Upon termination of the grid positioning command, the suspended drawing command will resume its request for point input.<br />
<br />
When selected geometry is copied to the clipboard, the geometry on the clipboard is in the coordinate space of the grid, at the time of the copy.<br />
<br />
When geometry is pasted from the clipboard, it is placed in the coordinate space of the grid, at its location at the time of the paste.<br />
<br />
For example, move the grid to the center of a selected part. Copy that part to the clipboard. Move the grid. Paste the clipboard; it will be added at the new location of the grid. Use [[Designer_Menu#Paste_At|Paste At]] to place more than one of them.<br />
<br />
==Menu Bar==<br />
[[file:DesignerMenu.png|right|Menu Bar]]<br />
At the top of the designer interface is a menu bar. Most functions of the program can be accessed using the menu bar.<br />
<br />
See [[Designer_Menu|designer menu]] for a list of the items on the menu bar.<br />
<br />
==Input Tool Bar==<br />
[[file:DesignerInputBar.png|right|Input Tool Bar]]<br />
The ''Input Tool Bar'' appears below the menu bar, at the left. It can be moved by dragging the dotted grip at the left end. Tool tips on the buttons explain their function.<br />
<br />
===Design Properties===<br />
Equivalent to the [[Designer_Menu#Properties|Blueprint, Properties]] menu item.<br />
<br />
===Refresh Obstructions===<br />
Equivalent to the [[Designer_Menu#Refresh_Obstructions|Blueprint, Refresh Obstructions]] menu item.<br />
<br />
===Solids Obstruct Movement===<br />
Equivalent to the [[Designer_Menu#Solids_Obstruct_Movement|Blueprint, Solids Obstruct Movment]] menu item.<br />
<br />
===Gravity===<br />
Equivalent to the [[Designer_Menu#Gravity_On.2FOff|Blueprint, Gravity On/Off]] menu item.<br />
<br />
===Preview===<br />
Equivalent to the [[Designer_Menu#Preview_On.2FOff|Blueprint, Preview On/Off]] menu item.<br />
<br />
===Preview Sun Position===<br />
Equivalent to the [[Designer_Menu#Preview_Settings|Blueprint, Preview Settings]] menu item.<br />
<br />
===Construct Building===<br />
Equivalent to the [[Designer_Menu#Preview_Place_Building|Blueprint, Preview Place Building]] menu item.<br />
<br />
===Preview People===<br />
Equivalent to the [[Designer_Menu#Preview_People|Blueprint, Preview People]] menu item.<br />
<br />
===Coordinate Input===<br />
Many design commands will ask the architect to enter a 3D point location. A location can then be entered by clicking with the mouse pointer in the view window. Alternatively, locations can be entered into the coordinate input box, at the end of the [[Designer#Input_Tool_Bar|Input Tool Bar]].<br />
<br />
3D coordinates are entered as '''X,Y,Z''' values, which are positive or negative offsets along the '''X''', '''Y''' and '''Z''' axes. <br />
Coordinates are not bracketed with parentheses.<br />
Omitted values are 0. e.g. <i>1,,2</i> is the same as <i>1,0,2</i>; <i>p2</i> is the same as <i>p2,0,0</i>; <i>a,3</i> is the same as <i>a0,3,0</i>.<br />
<br />
Polar coordinates are entered as '''pD,A,I''' values: '''D''' is distance from the origin; '''A''' is angle around the Z axis, positive counterclockwise and negative clockwise; '''I''' is the angle of inclination off the XY plane, positive above and negative below.<br />
<br />
Coordinates are relative to the location and orientation of the [[Designer#Grid|grid]] unless specified otherwise.<br />
<br />
Coordinates prefixed with '''a''' are ''absolute''. Absolute coordinates are relative to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]] of the design, ignoring the grid. e.g. ''a1.25,2.3,-4.5'' or ''ap2.5,-30,10''.<br />
<br />
Distances are interpreted in units depending upon the ''unit of measure'' setting. Whole numbers are interpreted as whole units of measure. For example, if the unit of measure is meters, which is the default, then 10 means 10 meters. Unit of measure is configured on the Designer page of the Settings window. Unit of measure can be changed at any time while drawing.<br />
<br />
====Rotating====<br />
Some design commands will ask the architect to enter a rotation value. e.g. rotate selected objects.<br />
<br />
Angles are entered in degrees.<br />
<br />
When responding to a request for rotation, input into the Coordinate Input box is interpreted as 3D rotation angles around the X, Y and Z axes. e.g. To rotate 45 degrees around the Z axis, enter 0,0,45, or simply ,,45.<br />
<br />
Positive and negative direction of rotation is determined by the [[Designer#Right_Hand_Rule|right hand rule]].<br />
<br />
====Scaling====<br />
Some design commands will ask the architect to enter a scale value. e.g. stretch selected objects.<br />
<br />
When responding to a request for scaling, input into the Coordinate Input box is interpreted as 3D stretch factors along the X, Y and Z axes. e.g. To double the overall size, enter 2,2,2; to reduce the X dimension by half, enter .5,1,1.<br />
<br />
====Move/Copy====<br />
When no design command is active, the coordinate input box can be used to move or copy the objects that are selected.<br />
* '''Move parts''' by entering a coordinate. The objects that are selected will be moved using the vector entered.<br />
* '''Copy parts''' by entering a coordinate while holding the <code>Ctrl</code> key. The objects that are selected will be copied and moved using the vector entered.<br />
<br />
==Reference Tool Bar==<br />
[[file:DesignerReferenceBar.png|right|Reference Tool Bar]]<br />
The ''Reference Tool Bar'' appears below the menu bar, to the right of the input tool bar. It can be moved by dragging the dotted grip at the left end.<br />
<br />
===Face Mode===<br />
Equivalent to the [[Designer_Menu#Face_Mode|Face, Face Mode]] menu item.<br />
<br />
===Isolate Parts===<br />
Equivalent to the [[Designer_Menu#Isolate_Parts|Face, Isolate Parts]] menu item.<br />
<br />
===Find Vertices===<br />
Equivalent to the [[Designer_Menu#Find_Vertices|Helpers, Find Vertices]] menu item.<br />
<br />
===Find Edges===<br />
Equivalent to the [[Designer_Menu#Find_Edges|Helpers, Find Edges]] menu item.<br />
<br />
===Find Faces===<br />
Equivalent to the [[Designer_Menu#Find_Faces|Helpers, Find Faces]] menu item.<br />
<br />
===Show Edges===<br />
Equivalent to the [[Designer_Menu#Show_Edges|View, Show Edges]] menu item.<br />
<br />
===Show Faces===<br />
Equivalent to the [[Designer_Menu#Show_Faces|View, Show Faces]] menu item.<br />
<br />
===Show Back Faces===<br />
Equivalent to the [[Designer_Menu#Show_Back_Faces|View, Show Back Faces]] menu item.<br />
<br />
===Move Grid===<br />
Equivalent to the [[Designer_Menu#Move_Grid|Helpers, Move Grid]] menu item.<br />
<br />
===XY Grid===<br />
Equivalent to the [[Designer_Menu#XY_Grid|Helpers, XY Grid]] menu item.<br />
<br />
===XZ Grid===<br />
Equivalent to the [[Designer_Menu#XZ_Grid|Helpers, XZ Grid]] menu item.<br />
<br />
===YZ Grid===<br />
Equivalent to the [[Designer_Menu#YZ_Grid|Helpers, YZ Grid]] menu item.<br />
<br />
===Position Grid===<br />
Equivalent to the [[Designer_Menu#Position_Grid|Helpers, Position Grid]] menu item.<br />
<br />
===Grid Spacing===<br />
Changes the spacing between lines in the grid.<br />
<br />
===Show Grid===<br />
Equivalent to the [[Designer_Menu#Show_Grid|Helpers, Show Grid]] menu item.<br />
<br />
===Grid Follows Work===<br />
Equivalent to the [[Designer_Menu#Grid_Follows_Work|Helpers, Grid Follows Work]] menu item.<br />
<br />
===Snap to Grid===<br />
Equivalent to the [[Designer_Menu#Snap_to_Grid|Helpers, Snap to Grid]] menu item.<br />
<br />
===Snap to Edges===<br />
Equivalent to the [[Designer_Menu#Snap_to_Edges|Helpers, Snap to Edges]] menu item.<br />
<br />
===Snap to Vertices===<br />
Equivalent to the [[Designer_Menu#Snap_to_Vertices|Helpers, Snap to Vertices]] menu item.<br />
<br />
===Coordinate Feedback===<br />
Shows coordinates relevant to the current drawing operation.<br />
<br />
When responding to coordinate input, the coordinate at the mouse pointer position is shown, relative to the grid. That coordinate is usually the location where the mouse pointer hits the grid, though it may change if the pointer snaps to an existing object.<br />
<br />
When dragging objects using the mouse pointer, the offset of the drag is shown. Dragging usually occurs in the grid plane, though it may change if the pointer snaps to an existing object.<br />
<br />
==Parts Window==<br />
[[file:DesignerParts.png|right|Parts]]<br />
The ''Parts'' window is displayed using the F6 key or the menu. It is typically docked at the right side of the designer window.<br />
<br />
The parts list contains every [[Design_Parts|part]] that is in the current design. This includes hull objects, imported meshes, rooms, berths, etc. This allows you to easily see everything within the design at once, and also provides buttons for toggling the visibility of each part, as well as other part properties. <br />
<br />
The parts list is also useful for selecting parts and deleting parts.<br />
<br />
===Id Column===<br />
Every part in a design is assigned a unique id number. Part id numbers may range from 1 to 65,535.<br />
<br />
Part id numbers are not preserved when copied and pasted between designs. Parts are assigned new ids when pasted into a design.<br />
<br />
===Name Column===<br />
The name column starts with an icon that indicates the kind of the [[Design_Parts|part]].<br />
<br />
The icon is followed by a text name assigned to the part. Names are assigned by the designer based on the type and properties of the part.<br />
<br />
===Group Column===<br />
The group column shows the name of the group assigned to each part. <br />
<br />
Select one or more parts and right-click to assign them to a group. Group names are chosen by the architect. Parts are assigned to groups as needed.<br />
<br />
Groups organize parts together. <br />
<br />
In building and spacecraft designs, groups define the rooms.<br />
* Group names become room names in the final blueprint, if the group contains a room void.<br />
* Room voids in the same group have the same internal air pressure.<br />
* All parts in the same group are lit similarly, according to room lighting.<br />
The '''Hull''' group is reserved for hull parts; it is never considered to be a room.<br />
Hull parts are lit according to the external environment of the building or spacecraft.<br />
* Parts with a blank group name are grouped with the hull, for lighting.<br />
<br />
In fence and wall blueprints, two groups are required: '''Post''' and '''Section'''.<br />
<br />
The '''Post''' group appears at each post of the final fence.<br />
The blueprint origin is where the post is placed on the ground,<br />
with +Z up according to the direction of gravity at the placement location.<br />
The post is oriented to align with the fence line on the ground.<br />
<br />
The '''Section''' group forms the fence between the posts, from post location to post location.<br />
A section of fence is designed from the origin, extending along the +X axis, with +Z up at each end.<br />
The +X extent of the section defines the typical post spacing of the fence.<br />
<br />
When placed on a world, the fence section is morphed to fit between two post locations.<br />
Post locations may vary in altitude and gravity direction and their spacing may vary from the typical section<br />
that is drawn.<br />
* The section origin, at Z=0, is placed at the first post.<br />
* The section +X extent, at Z=0, is placed at the second post.<br />
* The section geometry stretches accordingly.<br />
<br />
{| class="wikitable"<br />
! <br />
! On<br />
! Off<br />
! Description<br />
|-<br />
! Visibility Toggle<br />
| style="text-align:center;" | [[file:ScShow.png|40px]]<br />
| style="text-align:center;" | [[file:ScHide.png|40px]]<br />
| Toggles whether or not the part is visible.<br />
|-<br />
! Lock Toggle<br />
| style="text-align:center;" | [[file:ScLock.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnlock.png|40px]]<br />
| Toggles whether or not the part can be modified.<br />
|-<br />
! Omit Toggle<br />
| style="text-align:center;" | [[file:ScOmit.png|40px]]<br />
| style="text-align:center;" | [[file:ScInclude.png|40px]]<br />
| Toggles whether or not the part is included in the final design.<br />
|-<br />
! Seal Toggle<br />
| style="text-align:center;" | [[file:ScSeal.png|40px]]<br />
| style="text-align:center;" | [[file:ScUnseal.png|40px]]<br />
| Toggles whether or not the part is sealed.<br />
|}<br />
<br />
==='''V'''isibility Column===<br />
Shows and controls the visibility state of parts. <br />
<br />
Parts can be made invisible to simplify the design view. Invisible parts are not selected when using the mouse in the scene. Editing functions do not operate on invisible parts.<br />
<br />
Left click to toggle the visibility of the selected parts. Right-click to choose visibility from a menu.<br />
<br />
Making a part invisible does not exclude it from the final design. Invisible parts are included in the final design.<br />
<br />
==='''L'''ock Column===<br />
Shows and controls the locked state of parts.<br />
<br />
Lock parts to protect them from accidental editing. The locked state of parts has no effect in the final design.<br />
<br />
Left click to toggle the lock of the selected parts. Right-click to choose the locked or unlocked state from a menu.<br />
<br />
==='''O'''mit Column===<br />
Shows and controls whether a part is omitted from the final design.<br />
<br />
Omit parts to prevent them from being included in the final design. Omitted parts are excluded from the design analysis report. Some parts are always omitted; they cannot be included.<br />
<br />
Excluded parts can be useful for reference purposes, as a way to keep images or geometry in the design that are not intended to be part of the final design. Parts that exist only as design tools are omitted regardless of this setting, e.g. door jigs.<br />
<br />
==='''S'''eal Column===<br />
Shows and controls whether a part is sealed.<br />
<br />
Parts remember who their architect was. Seal parts to prevent other architects from editing them in face mode. '''Only the architect of a part can seal or unseal the part.'''<br />
<br />
Sealed parts can be used in part mode like other whole parts. They can be moved, stretched, rotated, copied to the clipboard and saved into files. Whole part editing operations are mostly disabled when a sealed part is selected, to protect the design of the part from changes.<br />
<br />
A sealed part can be used as a jig but it cannot be cut using a jig.<br />
<br />
Only the architect of a sealed part can enter face mode when the part is selected. This prevents individual faces of sealed parts from being modified or copied to the clipboard by other architects.<br />
<br />
The design report lists all architects whose parts are included in a design.<br />
<br />
===State Column===<br />
Shows the current state of parts that can have multiple states, such as doors that can be open or closed. <br />
<br />
On some kinds of parts, a slide bar is shown for adjusting the transparency of the part.<br />
<br />
==Texture Wrapper Window==<br />
[[file:DesignerTextureWrapper.png|right|Texture Wrapper]]<br />
The ''Texture Wrapper'' window is displayed using the Shift+F6 key or the menu. It can be docked stacked on top of the parts window; tabs will appear at the bottom, to choose between them.<br />
<br />
'''The texture wrapper is only used in face mode.'''<br />
<br />
Texture wrapper is a tool for positioning textures on faces. <br />
Texture wrapper only operates on faces that are selected. <br />
The designer must be in face mode to select faces. <br />
<br />
The viewing area shows the texture applied to the faces. <br />
Edge lines of the faces are painted where the texture is mapped to them. <br />
The viewing area is blank when the texture differs between the selected faces. <br />
<br />
A combo box contains the current texture palette. <br />
Change the texture of faces by choosing a texture in the combo box. <br />
<br />
===Palette===<br />
A design has a palette of textures. <br />
Each face may refer to one of the textures in the palette for its primary surface texture. <br />
<br />
Faces reference palette entries. <br />
If the texture in a palette entry is changed, faces that refer to that palette entry will also change. <br />
<br />
Texture palette entries can be customized. <br />
Each palette entry can be loaded with a custom picture file or it can be configured to use one of the built-in <br />
textures included with the designer. <br />
<br />
The ''Material'' entry changes based on the material used to manufacture the design. <br />
Manufacturing material is configured in the design properties. <br />
The material texture can be overridden by loading a custom texture. <br />
When a custom texture is selected for the material entry, it no longer changes according to the manufacturing <br />
material.<br />
<br />
This is the material entry's only special behavior. <br />
The texture may be used on any faces that should change appearance based on material. <br />
<br />
The textures used for materials exist among the built-in choices included with the designer. <br />
To use one of those textures without it changing due to manufacturing material, <br />
simply assign it to a different palette entry. <br />
<br />
Custom picture files are limited to a size of 256x256 pixels. <br />
Pictures are automatically reduced to fit within that size, while maintaining aspect ratio. <br />
<br />
===Unwrap===<br />
Unwraps the faces onto the texture. A window presents options for unwrapping the faces.<br />
<br />
Texture unwrapper is a tool for automatically positioning textures on faces. <br />
Texture unwrapper only operates on faces that are selected.<br />
The designer must be in face mode to select faces.<br />
<br />
[[file:ScFigUnwrap.png|right|Unwrap Texture]]<br />
The term ''unwrap'' derives from the notion of unwrapping or unfolding the faces of a 3D solid onto a flat surface.<br />
The flat surface is the texture.<br />
<br />
Texture unwrapper is affected by the position and orientation of the grid.<br />
In particular, the texture pattern will start where the grid center corresponds to a face.<br />
<br />
A texture is selected from the design's texture palette.<br />
It will be applied to the selected faces.<br />
The size of the texture is specified, using the ''unit of measure'' configured in settings.<br />
<br />
Texture unwrapper offers several strategies to try keeping a continuous texture pattern around corners.<br />
Sometimes one strategy will produce a better result than another.<br />
<br />
Angle tolerance is used by all unwrap strategies except Unwrap by Face.<br />
Angle tolerance enables the unwrapper to group together faces with similar facing.<br />
<br />
'''Unwrap by Face''' maps each face individually.<br />
Texture is aligned to the plane of each face, with origin aligned to the grid center.<br />
Texture pattern restarts at each new face, without regard to others.<br />
No attempt is made to maintain a continuous texture pattern around corners.<br />
<br />
'''Unwrap by Facing''' maps faces in groups according to their facing.<br />
Texture is mapped to each group using a plane projection, with its origin aligned to the grid center.<br />
Texture pattern is continuous across all faces in each group.<br />
No attempt is made to maintain a continuous texture pattern around corners, between groups.<br />
<br />
'''Unwrap by Edges''' maps faces like Unwrap by Facing.<br />
Texture pattern continues around corners where possible.<br />
<br />
'''Unwrap by Edges Horizontally''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping horizontally rather than vertically.<br />
<br />
'''Unwrap by Edges Vertically''' maps faces like Unwrap by Edges.<br />
A preference is made for unwrapping vertically rather than horizontally.<br />
<br />
===Plane Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a plane projection. Position of the grid plane affects the result.<br />
<br />
Plane projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a straight parallel projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture. <br />
<br />
The texture is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern is increasingly distorted as the angle of faces gets closer to perpendicular to the <br />
direction the texture is projected. <br />
The pattern smears along perpendicular faces.<br />
<br />
===Cylindrical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a cylindrical projection. Position of the grid plane affects the result.<br />
<br />
Cylindrical projection texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a cylindrical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the size of the texture and the number of times the texture repeats around the cylinder. <br />
<br />
The texture is stretched into a cylinder that is aligned with the red X axis of the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows around the cylinder with distance from the axis. <br />
The pattern is sized along the X axis according to user choices, so it does not stretch in the X axis direction. <br />
<br />
Cylindrical mapping is useful for applying textures to spindles. <br />
Center the grid on the spindle's rotation axis, with the red X axis aligned to the spindle's rotation axis. <br />
Cylindrically apply a texture.<br />
<br />
===Spherical Projection===<br />
Unwraps the faces onto the texture. Textures are mapped onto faces using a spherical projection. Position of the grid plane affects the result.<br />
<br />
Spherical projected texturing applies a texture to selected faces. <br />
The palette texture referenced by selected faces is changed and the texture is mapped to the surface. <br />
The mapping method is a spherical projection of the texture onto the faces. <br />
<br />
A window offers a choice of palette textures. <br />
The window also requests the number of times the texture repeats around the equator of a sphere. <br />
<br />
The texture is stretched into a sphere that is aligned with the grid plane. <br />
It is sized according to options chosen by the user. <br />
The texture is then projected onto the selected faces. <br />
The center of the projection is the center of the grid plane. <br />
<br />
This method creates a continuous pattern across all faces. <br />
The resulting pattern shrinks and grows with distance from the center.<br />
<br />
===Repeat===<br />
Toggles a repeating pattern of the texture image, to aid in positioning. All textures repeat, regardless of this setting. <br />
<br />
The viewing area only shows faces that are selected in the scene. Vertices are highlighted when selected. Vertex selection matches the vertices selected in the scene. Vertices can be selected/deselected in the scene also. <br />
<br />
===Mouse Controls===<br />
* Left click an unselected vertex to select it. <br />
* Ctrl+left click a vertex to toggle its selection. <br />
* Left click a selected vertex, then drag, to move all selected vertices. <br />
* Left click in empty space to deselect all vertices; then drag, to drag a box to select vertices. <br />
* Ctrl+left click in empty space, then drag, to drag a box to toggle selection of vertices. <br />
* Right click then drag to pan the display. <br />
* Wheel to change view magnification. <br />
* Ctrl+wheel to change view magnification in larger steps. <br />
<br />
===Key Commands===<br />
*<code>A</code> selects all vertices. <br />
*<code>G</code> grabs selected vertices to move them. <br />
*<code>R</code> rotates selected vertices. <br />
*<code>S</code> stretches selected vertices. <br />
*<code>X</code> constraint. While moving, moves in X only. While stretching, stretches in X only. <br />
*<code>Y</code> constraint. While moving, moves in Y only. While stretching, stretches in Y only.<br />
<br />
=Spacecraft Design=<br />
For spacecraft designer specific information, see the [[Spacecraft Design]] page.<br />
<br />
=Building Design=<br />
For building designer specific information, see the [[Building Design]] page.<br />
<br />
[[Category:Designer]]<br />
[[Category:Spacecraft]]<br />
[[Category:Buildings]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Designer_Menu&diff=9856Designer Menu2021-02-25T15:03:40Z<p>Haxus: /* Save */</p>
<hr />
<div>[[file:DesignerMenu.png|right|Menu Bar]]<br />
The [[Designer|designer]] menu bar is itemized here.<br />
<br />
=File=<br />
File menu items initiate new designs and exit the designer. File menu items access designs in files, in the on line library, and in an avatar's gear. <br />
<br />
==New Building==<br />
Clears the design space. Configures the designer for designing a building.<br />
<br />
==New Spacecraft==<br />
Clears the design space. Configures the designer for designing a spacecraft.<br />
<br />
==Open==<br />
Opens a design from an SoH file. The file contents cause the designer to configure appropriately, for designing the kind of design read from the file.<br />
<br />
==Save==<br />
Saves the current design into an SoH file. If the current file name is already known, it is overwritten without asking for a file name.<br />
<br />
It is strongly recommended that you save all of the designs in SoH files that you intend to finalize in the on line designer. That way you have a backup copy of your designs, in case the server data is lost or reset.<br />
<br />
When the file is saved, the current contents of the view are saved along with the file. This image is used by the online Blueprint Exchange, to present a picture of a published design. Be sure to refresh obstructions if you plan to publish the design to the online Blueprint Exchange.<br />
<br />
==Save As==<br />
Saves the current design into an SoH file. Asks the architect to provide a file name.<br />
<br />
It is strongly recommended that you save all of the designs in SoH files that you intend to finalize in the on line designer. That way you have a backup copy of your designs, in case the server data is lost or reset.<br />
<br />
==Open Building from Library==<br />
Opens a building design from the universal library. Building designs created by you are available for opening. Configures the designer for designing a building.<br />
<br />
Only available in the on line designer.<br />
<br />
==Open Spacecraft from Library==<br />
Opens a spacecraft design from the universal library. Spacecraft designs created by you are available for opening. Configures the designer for designing a spacecraft.<br />
<br />
Only available in the on line designer.<br />
<br />
==Open from Gear==<br />
Opens a blueprint from media in your personal gear. The designer is configured appropriately, for designing the kind of blueprint read from the media.<br />
<br />
Media contains publishing terms for the blueprints that are stored there. Publisher terms can prohibit you from opening a blueprint in the designer.<br />
<br />
Only available in the on line designer.<br />
<br />
==Save Building to Gear==<br />
Stores a building blueprint onto a storage device in your avatar's gear, from the universal library. Building blueprints finalized by you are available for storing to the storage device.<br />
<br />
Terms similar to publishing a blueprint are specified by the architect, to restrict use of the blueprint.<br />
<br />
Only available in the on line designer.<br />
<br />
==Save Spacecraft to Gear==<br />
Stores a spacecraft blueprint onto a storage device in your avatar's gear, from the universal library. Spacecraft blueprints finalized by you are available for storing to the storage device.<br />
<br />
Terms similar to publishing a blueprint are specified by the architect, to restrict use of the blueprint.<br />
<br />
Only available in the on line designer.<br />
<br />
==Import==<br />
There is a lot of 3D model data available on the Internet. Spacecraft, buildings, weapons, vehicles and all kinds of other things can be found, many for free. <br />
<br />
Importing brings 3D models created in other programs into the Hazeron designer. Imported models can provide a starting point for a fully functional spacecraft or building in Hazeron.<br />
<br />
No model will be ready for use immediately after importing. Many downloadable models lack interior details, such as rooms. Often times they are not textured. Further work in the Hazeron designer is always needed, before an imported model can be finalized for use in the game.<br />
<br />
Buildings are easier than spacecraft because no interior is required at all. Interior spaces of Hazeron buildings are optional.<br />
<br />
Spacecraft are probably the most rewarding to import and flesh out. They really come to life when you add a few interior spaces and windows, texture everything, make the doors work, and add the little details like blinking lights and control stations.<br />
<br />
===3DS===<br />
3DS is one of the file formats used by the Autodesk 3ds Max 3D modeling, animation and rendering software. It was the native file format of the old Autodesk 3D Studio DOS (releases 1 to 4), which was popular until its successor (3D Studio MAX 1.0) replaced it in April 1996.<br />
<br />
Some 3DS files can be imported into the designer. Sometimes a 3DS file will be accompanied by a corresponding texture image, such as a BMP, PNG or JPG file.<br />
<br />
In testing, good success was achieved by importing 3DS files that were exported from Blender, which is a free modeling program. Poor success was achieved importing some other 3DS files from unknown sources. In some cases, a troublesome 3DS file can be salvaged if it is first imported into Blender, then exported as a new 3DS file. Blender can also import other model file formats and export them as 3DS files.<br />
<br />
The 3DS model is oriented to the grid plane when it is imported. The parts of the 3DS model are appended to the current design as generic mesh parts. Use the ''Design, Make'' options to convert them to other kinds of parts. <br />
<br />
3DS files do not specify their unit of measure. A 10 in the file could mean 10 feet, 10 inches, 10 meters, who knows. A window appears when importing the file to ask what unit of measure you think the 3DS file is using. Your answer affects the size of the resulting model. i.e. If you pick inches and the result is 12 times too small, try feet instead. If the result is too big or too small, it can be imported again using a different unit of measure or the designer can stretch it to a different size afterwards.<br />
<br />
===STL===<br />
STL (an abbreviation of "stereolithography") is a file format native to the stereolithography CAD software created by 3D Systems. STL has several backronyms such as "Standard Triangle Language" and "Standard Tessellation Language". <br />
<br />
Some STL files can be imported into the designer. <br />
<br />
The STL model is oriented to the grid plane when it is imported. <br />
The STL model is appended to the current design as a generic mesh. Use the ''Design, Make'' options to convert it to another kind of part. <br />
<br />
STL files do not specify their unit of measure. A 10 in the file could mean 10 feet, 10 inches, 10 meters, who knows. A window appears when importing the file to ask what unit of measure you think the STL file is using. Your answer affects the size of the resulting model. i.e. If you pick inches and the result is 12 times too small, try feet instead. If the result is too big or too small, it can be imported again using a different unit of measure or the designer can stretch it to a different size afterwards.<br />
<br />
STL files do not specify any texture information.<br />
<br />
==Export STL==<br />
Exports all of the visible faces of the current design into an STL file.<br />
<br />
The exported result is oriented to the design plane and sized according to the unit of measure specified on the export options window.<br />
<br />
==Depart Studio==<br />
Avatar leaves the design environment and returns to the game universe at the point of entry.<br />
<br />
Only available in the on line designer.<br />
<br />
==Exit==<br />
Closes the ''Shores of Hazeron'' program.<br />
<br />
=Edit=<br />
Edit menu items generally operate on all objects in the designer, regardless of part vs face mode. In part mode, whole parts are affected. In face mode, individual faces are affected.<br />
<br />
The edit menu also provides access to program settings.<br />
<br />
==Undo==<br />
Restores the design to the way it was before the last editing operation was performed.<br />
<br />
==Redo==<br />
Restores the result of undo, as if the undo was not performed.<br />
<br />
==Cut==<br />
Removes the parts that are selected from the design.<br />
<br />
The removed parts are copied to the clipboard, oriented according to the grid plane when they are cut.<br />
<br />
==Copy==<br />
Copies the parts that are selected to the clipboard, oriented according to the grid plane.<br />
<br />
==Paste==<br />
Parts on the clipboard are appended to the design, oriented to the grid plane.<br />
<br />
==Paste At==<br />
Pastes the clipboard contents using the cursor. <br />
The design grid describes how the part is copied and pasted. The clipboard contents are centered at the grid origin when copied to the clipboard. When pasting, the clipboard content is centered at the cursor location. In other words, the grid center when copied is the insertion point of the pasted objects.<br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to paste the clipboard contents. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates around the Z axis in 10 degree increments.<br />
*<code>PgUp/PgDn</code> rotates around the Y axis in 10 degree increments.<br />
*<code>Up/Down Arrows</code> rotates around the X axis in 10 degree increments.<br />
*<code>Shift</code> reduces rotation to 1/10 degree increments.<br />
<br />
==Paste Radial==<br />
Pastes the clipboard contents using the cursor. The pasted objects rotate around the center of the design plane according to the position of the cursor. <br />
<br />
The grid describes how the part is copied and pasted. The clipboard contents are centered at the grid origin when copied to the clipboard. When pasting, the clipboard content is centered at the cursor location. In other words, the grid center when copied is the insertion point of the pasted objects. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to paste the clipboard contents. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates around the Z axis in 10 degree increments.<br />
*<code>PgUp/PgDn</code> rotates around the Y axis in 10 degree increments.<br />
*<code>Up/Down</code> Arrows rotates around the X axis in 10 degree increments.<br />
*<code>Shift</code> reduces rotation to 1/10 degree increments.<br />
<br />
==Delete==<br />
Removes the selected objects from the design. They are not copied to the clipboard.<br />
<br />
==Select All==<br />
Selects all visible objects. <br />
<br />
In part mode, this is all visible parts. In face mode, this is all faces in the part.<br />
<br />
==Select Contiguous Faces==<br />
Faces that share a common edge with the currently selected face(s) will be selected.<br />
<br />
The angle allowed between the facing direction of faces is allowed, to select them. Faces that join at a steeper angle are not selected.<br />
<br />
* A small angle will select contiguous faces that are in the same plane as the selected face(s).<br />
* An angle of 180 or larger will select all contiguous faces, regardless of their angle to each other.<br />
<br />
Only available in face mode.<br />
<br />
==Select Edges==<br />
Selects all visible edges.<br />
<br />
Only available in face mode.<br />
<br />
==Select Faces==<br />
Selects all visible faces.<br />
<br />
Only available in face mode.<br />
<br />
==Select Vertices==<br />
Selects all visible vertices.<br />
<br />
Only available in face mode.<br />
<br />
==Deselect All==<br />
Deselects all selected objects.<br />
<br />
==Invert Selection==<br />
Reverses the selection state of all visible objects. Selected items become unselected. Unselected items become selected.<br />
<br />
==Align Selected Objects==<br />
Moves and rotates the selected parts. <br />
<br />
The move is described using the grid. The grid is oriented relative to the selected parts. That grid location is identified as the starting reference for the move. The grid is then oriented to the destination location and rotation.<br />
<br />
Selected parts are moved such that the grid orientation at the start location aligns with the grid orientation at the destination.<br />
<br />
This is the same as aligning the grid to the objects, cutting them to the clipboard, then aligning the grid to the destination and pasting the clipboard contents there.<br />
<br />
The tutorial video ''Adding a Turbo Lift to Del Rey Station'' shows how to use this command to align a turbo lift at a stop. That has changed and it will no longer work as shown in the video. To position a turbo lift at a stop, use the command [[Designer_Menu#Align_Turbo_Lift_Stop|Designer, Align Turbo Lift Stop]].<br />
<br />
==Grab Selected Objects==<br />
Moves or copies the selected objects. <br />
<br />
The guide point is the grid center when the grab is initiated using a menu command. The guide point is the cursor location when the grab is initiated using a hot key.<br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the destination.<br />
<br />
Key Commands:<br />
*<code>X</code>,<code>Y</code>,<code>Z</code> locks movement to an axis. Default is none.<br />
*<code>Ctrl</code> when held, copies the selected objects instead of moving them. <br />
<br />
Note:<br />
When the movement vector is known, there is another easy way to move and copy selected objects, without using this Grab Selection command. To do so, type the movement vector into the [[Designer#Coordinate_Input|Coordinate Input]] box of the input tool bar. Press Enter to move the selected objects, Ctrl+Enter to copy the selected objects.<br />
<br />
==Rotate Selected Objects==<br />
Rotates the selected objects.<br />
<br />
The pivot point is the grid center. Objects rotate around the pivot point. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to rotate the selected objects. Input into the Coordinate Input box is interpreted as 3D rotation angles around the X, Y and Z axes. e.g. To rotate 45 degrees around the Z axis, enter 0,0,45, or simply ,,45. <br />
<br />
Key Commands:<br />
*<code>X</code>,<code>Y</code>,<code>Z</code> rotates around a specific axis. Default is Z.<br />
*<code>Ctrl</code> when held, copies the selected objects instead of moving them.<br />
<br />
==Stretch Selected Objects==<br />
Stretches the selected objects. <br />
<br />
The base point is the grid center. Objects shrink toward the base point and they expand away from the base point.<br />
<br />
Stretch factor is determined by the cursor's distance from the center of the grid. When the stretch is initiated using a menu command, stretch factor 1 is at 10 grid increments. When the stretch is initiated using a hot key, stretch factor 1 is at the cursor location. Move closer to the grid center to reduce the stretch factor. Move farther from the grid center to increase the stretch factor. <br />
<br />
Symmetrical copies of parts can be created using this command. To make a symmetrical copy along the X axis, type -1,1,1 into the coordinate input box and press Ctrl+Enter. To make a symmetrical copy along the Y axis, type 1,-1,1 into the coordinate input box and press Ctrl+Enter. <br />
<br />
Symmetrical copies made in this way are inside out. Use Reverse Faces to restore the proper facing. <br />
<br />
Another way to make symmetrical copies is to use the ''Part, Symmetrical Copy'' command. It does not leave the parts inside out. <br />
<br />
Steps:<br />
* A point is entered to stretch the selected objects. Input into the Coordinate Input box is interpreted as 3D stretch factors along the X, Y and Z axes. e.g. To double the overall size, enter 2,2,2; to reduce the X dimension by half, enter .5,1,1.<br />
<br />
Key Commands:<br />
*<code>X</code>,<code>Y</code>,<code>Z</code> locks stretch of one or more axes. Objects do not stretch along locked axes. Default is all, which acts like none.<br />
*<code>Ctrl</code> when held, copies the selected objects instead of moving them<br />
<br />
==Settings==<br />
Displays the ''Shores of Hazeron'' settings window. <br />
<br />
The Designer page contains settings specific to the designer.<br />
<br />
=Blueprint=<br />
Blueprint menu items generally apply to the entire design.<br />
<br />
==Properties==<br />
Displays properties of the current design.<br />
<br />
The properties that can be configured are dependent on the type of design in the designer.<br />
<br />
==Refresh Obstructions==<br />
Updates [[Designer#Obstructions.2C_Voids.2C_and_Barriers|obstructions data]].<br />
Most changes to the design invalidate the obstructions model.<br />
The obstructions model is needed for solids to obstruct movement.<br />
It is also needed by the ''Blueprint Properties'' to report the design analysis.<br />
<br />
==Solids Obstruct Movement==<br />
Allows [[Designer#Obstructions.2C_Voids.2C_and_Barriers|obstructions]] to block movement of the architect's avatar while in the designer.<br />
<br />
The obstructions model is needed for solids to obstruct movement.<br />
<br />
==Gravity On/Off==<br />
Enables gravity inside room voids. <br />
<br />
When designer gravity is enabled, a gravity force is applied while the architect's avatar is inside a room void of the design.<br />
<br />
==Preview On/Off==<br />
Enables preview of design as it will exist and operate in the game environment. All editing operations are disabled while previewing a design, for everyone in the design studio. <br />
<br />
Buildings in preview will have power at night, to show window lighting. Building window lighting changes more often in the design preview than it does in the game environment, to observe the appearance in more states.<br />
<br />
==Preview People==<br />
Loads crew, troops, and passengers to fill non-officer berths aboard the spacecraft in the preview.<br />
Loads workers and troops to fill posts at buildings in the preview.<br />
<br />
People can be selected and given simple movement orders.<br />
This shows if NPCs can find their way through the blueprint.<br />
<br />
==Preview Settings==<br />
Changes the sun position in the design preview.<br />
<br />
==Preview Place Building==<br />
Constructs the building design on the terrain in the preview.<br />
<br />
The building construction is completed immediately. It is not depicted as being ''under construction''.<br />
<br />
==Finalize==<br />
Verifies that the current design meets the requirements for use in the game universe. Performs final preparations on a valid design.<br />
<br />
Displays a report of notes, warnings, and errors found in the design.<br />
<br />
*Notes are shown in green text. These provide information about the finalize process.<br />
<br />
*Warnings are shown in amber. These indicate potential oversights or errors, depending upon the discretion of the architect. Warnings do not prevent a design from being built in the game.<br />
<br />
*Errors are shown in red. These indicate areas of the design that must be changed before the design can be built in the game.<br />
<br />
In the online designer, a successfully finalized design is sent to the server for inclusion in the universal library. A unique blueprint identity number is issued and reported back to the architect. The blueprint can be used to construct buildings or spacecraft, as appropriate.<br />
<br />
Finalize can store the design as an ''assembly''. An assembly is just a literal save of the design, as is, with all of its parts. It does not have to be a complete design, ready for in-game use. Assemblies provide a means to share incomplete designs or portions of designs, such as commonly used furniture or control station models, even entire hulls.<br />
<br />
In the offline designer, finalizing produces the report of notes, warnings and errors but the design cannot be posted to the library. This is useful to work out all the quirks in a design in the offline designer. Then the design can be loaded into the online designer and finalized successfully there.<br />
<br />
==Previous Finalize Result==<br />
Shows the result of the previous finalize operation.<br />
<br />
Finalize results are not saved between program sessions.<br />
<br />
=Part=<br />
Part menu items generally apply to whole parts. Part mode is required for most of these commands.<br />
<br />
==Properties==<br />
<br />
===Door===<br />
The door properties window does two things when the ''Ok'' button is pressed.<br />
*It configures settings on doors.<br />
*It analyzes doors to see if they appear to be hull doors and it changes their type accordingly.<br />
<br />
===Door Switch Positions===<br />
Doors have two switches to operate them. The default location for both switches is at the center of the door geometry. To limit operation of a door to only one switch, simply put both switches in the same place. <br />
<br />
Door switch locations are not visible. They are simply 3D locations. If a visible door switch is desired, you must create the mesh geometry yourself. <br />
<br />
On large or thick doors, the default switch locations are often inaccessible. A visible object recognizable as a door switch should be created near the door. Then use this command to position the door switches at the visible objects.<br />
<br />
Door switches do not have to be near the door they operate. They can be placed anywhere. <br />
<br />
Door switch locations are only visible when edge line display is enabled. They are depicted as three intersecting lines, centered at the door switch location. The area of the lines is roughly equivalent to the hot spot of the switch when it is clicked; it is fairly large. Switches may not work if the hot spot of one overlaps the hot spot of another. <br />
<br />
Key Commands:<br />
*<code>C</code> sets a switch location to the center of the door geometry.<br />
<br />
===Light Bulb===<br />
Configures the properties of all selected light bulbs.<br />
<br />
===Light Lens===<br />
Configures the properties of all selected light lenses.<br />
<br />
===Room Lighting===<br />
Configures the interior lighting settings on all selected [[Design_Parts#Room|rooms]]. <br />
<br />
A check box indicates if sunlight enters the room. Rooms with windows or openings to the outside should permit sunlight to illuminate their interior. This affects the normal lighting state of the room geometry and its contents. Room lighting is not affected by opening or closing of doors. <br />
<br />
Room lighting can be set to an initial state. Interior lights will be set accordingly when the design is manufactured. <br />
* On sets initial lighting to bright. This is the default setting for all new rooms. <br />
* Dim sets initial lighting to dim. <br />
* Off sets initial lighting to off.<br />
<br />
===Room Void Gravity and Hold Access===<br />
Configures the hold accessibility and gravity settings on all selected room voids.<br />
<br />
Room voids can permit access to the hold by people in the room void. Hold access options control what kinds of things people can access. People access the hold in a room using the cargo transfer window.<br />
* Inaccessible prevents access to the hold. <br />
* Armory accesses weapons, armor and ammunition. <br />
* Bar accesses some food and drinks. <br />
* Feeder accesses food and water. <br />
* Fuel Coupling accesses hydrogen fuel. <br />
* Garage accesses tools, fuel and ammo. <br />
* Hold accesses all things in the hold. <br />
* Pantry accesses all food and drinks. <br />
* Pharmacy accesses medical supplies. <br />
* Wardrobe accesses clothing and environment suits. <br />
<br />
Room voids offer a choice of internal gravity options. <br />
<br />
*'''Natural Gravity''' uses the gravity of the external environment of the spacecraft. The direction of gravity matches the gravity of the external environment. In zero-g conditions, there is no gravity inside the room void. <br />
<br />
*'''Artificial Gravity''' provides gravity depending upon the life support module in use. When the LS module provides gravity, artificial gravity depends on functioning life support. When the LS module does not provide gravity, or it is broken, artificial gravity depends on functioning engines. The up direction is specified for room voids that provide artificial gravity. <br />
<br />
*'''Zero Gravity''' negates gravity depending upon the life support module in use, to create a zero-G room. When the LS module provides gravity, zero gravity depends on functioning life support. When the LS module does not provide gravity, or it is broken, gravity matches the external environment.<br />
<br />
===Site===<br />
''Grading'' determines how the site affects terrain vertices that fall within its area. <br />
* '''Terrain''' grading leaves the underlying terrain alone. <br />
* '''Level''' grading causes all terrain at the site to be raised or lowered to match the site. <br />
* '''Cut''' grading lowers terrain to the site but terrain is not raised if it is below the site. <br />
* '''Fill''' grading raises terrain to the site but terrain is not lowered if it is above the site. <br />
<br />
Site meshes do not have to be level; they can be sloped or bumpy to create hills and valleys. Native terrain vertices are not spaced closely enough together to achieve fine landscape details using the site mesh. Terrain vertex spacing is typically one or more meters apart. Site meshes can be used to coarsly push the underlying terrain out of the way. Detailed modeling can be created to merge with the area, such as making a wide patio around an in-ground pool. <br />
<br />
''Blending'' determines how terrain transitions from the site elevation to the native elevation. Blending occurs when red glow is added to vertices of the site. When the red glow is at its strongest, the native terrain elevation is dominant. When the red glow is at its weakest, the site elevation is dominant. Glow is interpolated between vertices; this causes the influence of the site on the terrain to be interpolated. <br />
* '''Roll Blend''' uses a curve function to calculate the transition, which creates a natural looking hill. <br />
* '''Flat Blend''' uses linear interpolation to calculate the transition, which creates a flat level slope. <br />
<br />
Blending smooths the transition from the site to the native terrain without cliffing. The best way to achieve this is to start with a level site without blending. Then surround the level site with one or more margin sites. Margins should be at least a meter wide, maybe two. A wider margin distributes the transition across a broader area. <br />
<br />
Set the glow to red RGB(255,0,0) on the outermost vertices of the margin sites. The desired result has no glow where margin site vertices touch the level site and margin vertices have full red glow at the edges. <br />
<br />
The simple Agricultural, Residential, Mine, Well, and Shore lots are created with red glow at the outermost vertices of the site. Try these in the building preview to see their effect on terrain.<br />
<br />
===Transporter Station Pad Locations===<br />
This command positions the personnel transporter pad locations for the selected transporter station. <br />
<br />
Transporter stations have pad location where personnel teleporters appear. Teleporters appear at the pad locations, oriented to the normal gravity up direction for the room. <br />
<br />
Transporters equipped with a vehicle transporter module can transport vehicles in addition to personnel. Vehicles are transported directly to and from their parking spots. Personnel pad locations have no effect on transporting vehicles. <br />
<br />
Transporter pads do not have to be near the station that controls them. They can be placed anywhere. <br />
<br />
Transporter pad locations are not visible in the game. They are simply 3D locations. If a visible pad is desired, you must create the pad geometry yourself. Texture effects can be applied to make the pads appear animated when on or active. <br />
<br />
In the designer, transporter pad locations are only visible when edge line display is enabled. They are depicted as hexagons, centered at the pad locations. The orientation of the hexagon does not affect the orientation of the teleporter that appears there. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous transporter pad location.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the pad locations.<br />
<br />
===Turret Base Position===<br />
This command collects information about the base of a turret. The pivot point and pivot axis of the turret base are determined. <br />
<br />
The turret base rotates around its axis. <br />
<br />
Steps:<br />
* The pivot point of the base is entered. <br />
* The pivot axis of the base is entered.<br />
<br />
===Turret Gun Position===<br />
This command collects information about the gun of a turret. The pivot point and pivot axis of the turret gun are determined. The gun fire emit point and direction are also determined. <br />
<br />
Steps:<br />
* The pivot point of the gun is entered. <br />
* The pivot axis of the gun is entered. <br />
* The gun fire emit point is entered. <br />
* The gun fire aim point is entered. Distance from the emit point is not a factor. <br />
* The gun sight point is entered, where the gunner sees from, when aiming the gun. The gun sight point moves with the gun barrel.<br />
<br />
===Weapon Emit Location===<br />
This command positions the weapon emit location for the selected fire control station. <br />
<br />
Fire control stations have a weapon emit location where the discharge emerges from the weapon. The firing effect starts at the emit location and goes to the target. Weapon fire from these kinds of weapons does not hit any part of the firing vessel. <br />
<br />
The weapon emit location does not have to be near the fire control station. It can be placed anywhere. <br />
<br />
Weapon emit locations are not visible in the game. They are simply 3D locations. If a visible gun is desired, you must create the hull geometry yourself. <br />
<br />
In the designer, weapon emit locations are only visible when edge line display is enabled. They are depicted as a four pointed star shape, centered at the emit location.<br />
<br />
==Hull==<br />
Creates a [[Design_Parts#Hull|hull part]] using a [[Designer#Shapes|shape]] generating command.<br />
<br />
==Room==<br />
Creates a [[Design_Parts#Room|room part]] using a [[Designer#Shapes|shape]] generating command.<br />
<br />
==Landing Gear==<br />
Creates a [[Design_Parts#Landing_Gear|landing gear part]] using a [[Designer#Shapes|shape]] generating command.<br />
<br />
==Mesh==<br />
Creates a [[Design_Parts#Mesh|mesh part]] using a [[Designer#Shapes|shape]] generating command.<br />
<br />
==Jig==<br />
<br />
===Cutting===<br />
A [[Design_Parts#Jig.2C_Cutting|cutting jig]] is created by drawing the shape of the cut. The shape is extruded into a jig. Round jigs can be made by entering a radius. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the cut shape. <br />
* Subsequent points are entered to describe the cut shape. <br />
* If making a round jig, radius point of jig is entered. <br />
* A window offers extrusion options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested. <br><br />
*<code>C</code> restarts the action at the beginning. <br><br />
*<code>D</code> finishes the shape and proceeds to request the length of the jig along the Z axis. This option appears after the cut shape contains three or more points. <br><br />
*<code>S</code> round jig, only available after entering the first point.<br />
<br />
===Decal===<br />
A [[Design_Parts#Jig.2C_Decal|decal jig]] is created by drawing the shape of the decal outline. The shape is extruded into a jig. Round jigs can be made by entering a radius.<br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] to begin the decal shape. <br />
* Subsequent points are entered to describe the decal shape. <br />
* If making a round jig, radius point of jig is entered. <br />
* A window offers extrusion options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested. <br><br />
*<code>C</code> restarts the action at the beginning. <br><br />
*<code>D</code> finishes the shape and proceeds to request the length of the jig along the Z axis. This option appears after the cut shape contains three or more points. <br><br />
*<code>S</code> round jig, only available after entering the first point.<br />
<br />
===Door===<br />
A [[Design_Parts#Jig.2C_Door|door jig]] is created by drawing the shape of the door. The shape is extruded into a jig. Round jigs can be made by entering a radius. <br />
<br />
Steps:<br />
* A point is entered to begin the door shape. It may instead establish the lower left corner of a standard door shape. <br />
* Subsequent points are entered to describe the door shape. <br />
* If making a round jig, radius point of jig is entered. <br />
* A window offers extrusion options.<br />
<br />
Key Commands:<br />
*<code>T</code> creates a standard 1.2m x 2.1m door shape. This option appears when the first point has been entered. The first point will be the lower left corner of the standard door. <br><br />
*<code>S</code> round jig, only available after entering the first point. <br><br />
*<code>B</code> backs up to reenter the previous point requested. <br><br />
*<code>C</code> restarts the action at the beginning. <br><br />
*<code>D</code> finishes the shape and proceeds to request the length of the jig along the Z axis. This option appears after the window shape contains three or more points.<br />
<br />
===Launch Tube===<br />
A [[Design_Parts#Jig.2C_Launch_Tube|launch tube jig]] is created by drawing the shape of the launch tube. The shape is extruded into a jig. Round jigs can be made by entering a radius. <br />
<br />
Steps:<br />
* A point is entered to begin the launch tube shape. <br />
* Subsequent points are entered to describe the launch tube shape. <br />
* If making a round launch tube, radius point of jig is entered. <br />
* A window offers extrusion options. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested. <br><br />
*<code>C</code> restarts the action at the beginning. <br><br />
*<code>D</code> finishes the shape and proceeds to request the length of the jig along the Z axis. This option appears after the launch tube shape contains three or more points. <br><br />
*<code>S</code> round jig, only available after entering the first point.<br />
<br />
===Window===<br />
A [[Design_Parts#Jig.2C_Window|window jig]] is created by drawing the shape of the window. The shape is extruded into a jig. Round jigs can be made by entering a radius. <br />
<br />
Steps:<br />
* A point is entered to begin the window shape. <br />
* Subsequent points are entered to describe the window shape. <br />
* If making a round jig, radius point of jig is entered. <br />
* A window offers extrusion options. <br />
<br />
Key Commands:<br />
*<code>S</code> round jig, only available after entering the first point. <br><br />
*<code>B</code> backs up to reenter the previous point requested. <br><br />
*<code>C</code> restarts the action at the beginning. <br><br />
*<code>D</code> finishes the shape and proceeds to request the length of the jig along the Z axis. This option appears after the window shape contains three or more points.<br />
<br />
==Stations==<br />
<br />
===Integrated===<br />
A station provides a place for a person or NPC to operate a system. It has a screen for display of system status and its controls. During the game, a player presses <code>E</code> to enter the operator's position of a station. <br />
<br />
At integrated stations, the screen is only the display screen. You must create any surrounding geometry to frame the screen. The operator's position is only a location. You must create any accompanying geometry to provide a chair or console, as appropriate. It is recommended that accompanying geometry be created before creating the station. <br />
<br />
All station screens have a native 2:1 aspect ratio. The screen is not confined to that ratio; deviations will result in compressed or stretched display contents. The screen is created by indicating two corner points of a rectangle. The screen is oriented to the grid, with +X going to the right and +Y going up on the screen. A station also collects information about the operator's location and body position. <br />
<br />
Operator's Position Options:<br />
*'''Sit Swivel''' · Operator can turn and look, like a swivel chair or the console/screen combo.<br />
*'''Sit Stationary''' · Operator cannot turn but can twist at the waist and look.<br />
*'''Stand''' · Operator stands; can turn and look.<br />
*'''Stand Stationary''' · Operator stands; cannot turn but can twist at the waist and look.<br />
<br />
Steps:<br />
* A corner point of the screen is entered.<br />
* The opposite corner point of the screen is entered.<br />
* A window offers options for describing the operator's position.<br />
* A point is entered to indicate the operator's location when using the station. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
====Command====<br />
Creates an integrated [[Design_Parts#Station.2C_Command|command station]].<br />
<br />
====Designer====<br />
Creates an integrated [[Design_Parts#Station.2C_Designer|designer station]].<br />
<br />
====Engineer====<br />
Creates an integrated [[Design_Parts#Station.2C_Engineer|engineer station]].<br />
<br />
====Fire Control====<br />
Creates an integrated [[Design_Parts#Station.2C_Fire_Control|fire control station]].<br />
<br />
The fire control station stores a location where the weapon fire effect is emitted. This can an be anywhere in the design. Weapon system fire is omnidirectional. Weapon fire does not hit the vessel that fires it.<br />
<br />
====Helm====<br />
Creates an integrated [[Design_Parts#Station.2C_Helm|helm station]].<br />
<br />
====Medic====<br />
Creates an integrated [[Design_Parts#Station.2C_Medic|medic station]].<br />
<br />
A medic station requests information about the patient position.<br />
<br />
Patient's Position Options:<br />
*'''Prone''' · Patient's body lies prone.<br />
*'''Sit Swivel''' · Patient can turn and look, like a swivel chair or the console/screen combo.<br />
*'''Sit Stationary''' · Patient cannot turn but can twist at the waist and look.<br />
*'''Stand''' · Patient stands; can turn and look.<br />
*'''Stand Stationary''' · Patient stands; cannot turn but can twist at the waist and look.<br />
<br />
Steps:<br />
* A corner point of the screen is entered.<br />
* The opposite corner point of the screen is entered.<br />
* A window offers options for describing the medic's and patient's positions.<br />
* A point is entered to indicate the medic's location when using the station.<br />
* The location of the patient is entered.<br />
* A location indicating the patient's facing is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
====Navigator====<br />
Creates an integrated [[Design_Parts#Station.2C_Navigator|navigator station]].<br />
<br />
====Power Relay====<br />
Creates an integrated [[Design_Parts#Station.2C_Power_Relay|power relay station]].<br />
<br />
====Sensor====<br />
Creates an integrated [[Design_Parts#Station.2C_Sensor|sensor station]].<br />
<br />
====Shield====<br />
Creates an integrated [[Design_Parts#Station.2C_Shield|shield station]].<br />
<br />
====Transporter====<br />
Creates an integrated [[Design_Parts#Station.2C_Transporter|transporter station]].<br />
<br />
The locations of the transporter pads are indicated. The pad locations are used when transporting personnel.<br />
<br />
====Turret Gunner====<br />
Configures the gunner station on a selected [[Design_Parts#Turret|turret]].<br />
<br />
===Swivel Consoles w/Chairs===<br />
This is a complete chair and console combination. The geometry of a swivel chair and integrated display screen are provided. The console requires a large area to spin around. <br />
<br />
Steps:<br />
* The location of the base of the console is entered.<br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the console in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments. <br />
<br />
====Command====<br />
Creates a new [[Design_Parts#Console.2C_Command|command console]].<br />
<br />
====Engineer====<br />
Creates a new [[Design_Parts#Console.2C_Engineer|engineer console]].<br />
<br />
====Fire Control====<br />
Creates a new [[Design_Parts#Console.2C_Fire_Control|fire control console]].<br />
<br />
====Helm====<br />
Creates a new [[Design_Parts#Console.2C_Helm|helm console]].<br />
<br />
====Medic====<br />
Creates a new [[Design_Parts#Console.2C_Medic|medic console]].<br />
<br />
====Navigator====<br />
Creates a new [[Design_Parts#Console.2C_Navigator|navigator console]].<br />
<br />
====Power Relay====<br />
Creates a new [[Design_Parts#Console.2C_Power_Relay|power relay console]].<br />
<br />
====Sensor====<br />
Creates a new [[Design_Parts#Console.2C_Sensor|sensor console]].<br />
<br />
====Shield====<br />
Creates a new [[Design_Parts#Console.2C_Shield|shield console]].<br />
<br />
====Transporter====<br />
Creates a new [[Design_Parts#Console.2C_Transporter|transporter console]].<br />
<br />
===Citizen Post===<br />
A citizen post provides a place for a someone to sit or stand. During the game, a player presses E to enter the occupant's position of a troop post. Building residents and workers are positioned at citizen posts. <br />
<br />
Citizen's Position Options:<br />
*'''Sit''' · Citizen can turn and look, like a swivel chair. <br />
*'''Stand''' · Citizen stands; can turn and look. <br />
<br />
Steps:<br />
* A window displays body positioning options for the citizen when at the post. <br />
* The location of the citizen occupying the post is entered.<br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the citizen post in 10 degree increments. <br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Livestock Post===<br />
A livestock post provides a place for an animal to be stationed at farms and zoos. When needed, positions for animals are chosen at random from among the unoccupied posts. <br />
<br />
The large icon is a reminder of the possibility of large animals. <br />
<br />
Steps:<br />
* The location of the livestock occupying the post is entered.<br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the livestock post in 10 degree increments. <br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Troop Post===<br />
A troop post provides a place for a troop to be stationed. During the game, a player presses E to enter the occupant's position of a troop post. <br />
<br />
Troop's Position Options:<br />
*'''Sit''' · Troop can turn and look, like a swivel chair. <br />
*'''Stand''' · Troop stands; can turn and look. <br />
<br />
Steps:<br />
* A window displays body positioning options for the troop when at the post. <br />
* The location of the troop occupying the post is entered.<br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the troop post in 10 degree increments. <br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
==Panels==<br />
<br />
===Alert Status===<br />
Creates a new [[Design_Parts#Status.2C_Alert|alert status panel]].<br />
<br />
Steps:<br />
* A corner point of the screen is entered.<br />
* The opposite corner point of the screen is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Mission Status===<br />
Creates a new [[Design_Parts#Status.2C_Mission|mission status panel]].<br />
<br />
Steps:<br />
* A corner point of the screen is entered.<br />
* The opposite corner point of the screen is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Room Life Support Status===<br />
Creates a new [[Design_Parts#Status.2C_Room_Life_Support|room life support status panel]].<br />
<br />
Steps:<br />
* A corner point of the screen is entered.<br />
* The opposite corner point of the screen is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===World Map===<br />
Creates a new [[Design_Parts#Status.2C_World_Map|world map status panel]].<br />
<br />
Steps:<br />
* A corner point of the screen is entered.<br />
* The opposite corner point of the screen is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Capacitor Service Panel===<br />
Creates a new [[Design_Parts#Panel.2C_Capacitor|capacitor service panel]].<br />
<br />
Steps:<br />
* A corner point of the service panel is entered.<br />
* The opposite corner point of the service panel is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===FTL Drive Service Panel===<br />
Creates a new [[Design_Parts#Panel.2C_FTL_Drive|FTL drive service panel]].<br />
<br />
Steps:<br />
* A corner point of the service panel is entered.<br />
* The opposite corner point of the service panel is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Life Support Service Panel===<br />
Creates a new [[Design_Parts#Panel.2C_Life_Support|life support service panel]].<br />
<br />
Steps:<br />
* A corner point of the service panel is entered.<br />
* The opposite corner point of the service panel is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Maneuver Drive Service Panel===<br />
Creates a new [[Design_Parts#Panel.2C_Maneuver_Drive|maneuver drive service panel]].<br />
<br />
Steps:<br />
* A corner point of the service panel is entered.<br />
* The opposite corner point of the service panel is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Power Plant Service Panel===<br />
Creates a new [[Design_Parts#Panel.2C_Power_Plant|power plant service panel]].<br />
<br />
Steps:<br />
* A corner point of the service panel is entered.<br />
* The opposite corner point of the service panel is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Sensor Service Panel===<br />
Creates a new [[Design_Parts#Panel.2C_Sensor|sensor service panel]].<br />
<br />
Steps:<br />
* A corner point of the service panel is entered.<br />
* The opposite corner point of the service panel is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Shield Service Panel===<br />
Creates a new [[Design_Parts#Panel.2C_Shield|shield service panel]].<br />
<br />
Steps:<br />
* A corner point of the service panel is entered.<br />
* The opposite corner point of the service panel is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Weapon System Service Panel===<br />
Creates a new [[Design_Parts#Panel.2C_Weapon|weapon system service panel]].<br />
<br />
Steps:<br />
* A corner point of the service panel is entered.<br />
* The opposite corner point of the service panel is entered.<br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
==Vehicles==<br />
<br />
===Pod Bay===<br />
A pod bay indicates a place to store a drop pod. Drop pods can be used as life boats. They can also be used to deploy troops. <br />
<br />
The cursor depicts a space that is 5m x 5m. A standard drop pod carries up to three people. <br />
<br />
The pod bay indicates a location for a drop pod to be stored. Drop pods are loaded aboard the ship similar to vehicles. <br />
<br />
The pod bay does not require direct access to the outside. When deployed, drop pods are ejected safely outside the hull, regardless of where they are stored. Drop pods are automated devices that attempt to land safely at the nearest planet. Drop pods do not have sufficient power to take off. Maneuverability is poor. <br />
<br />
Steps:<br />
* The location of the base of the pod bay is entered. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the pod bay in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Ground Vehicle Parking Spot===<br />
A ground vehicle parking spot indicates a place to park a ground vehicle. Ship policies determine which specific ground vehicle will be stored. <br />
<br />
On a ship equipped with a vehicle transporter, parking spots act as transporter pads for vehicles. <br />
<br />
The cursor depicts a space that is 6m x 12m. The parking spot requires direct access to the outside through a door or opening or the ship must be equipped with a vehicle transporter system. <br />
<br />
Steps:<br />
* The location of the parking spot is entered. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the parking spot in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Space Rocket Parking Spot===<br />
A space rocket parking spot indicates a place to park a space rocket. Ship policies determine which specific space rocket will be stored. <br />
<br />
On a ship equipped with a vehicle transporter, parking spots act as transporter pads for vehicles. <br />
<br />
The cursor depicts a space that is 10m x 10m. The parking spot requires direct access to the outside through a door or opening, unless the ship is equipped with a vehicle transporer or both a space vehicle recovery system and a space vehicle launcher. <br />
<br />
Steps:<br />
* The location of the parking spot is entered. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the parking spot in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Space Vehicle Parking Spot===<br />
A space vehicle parking spot indicates a place to park a space vehicle. Ship policies determine which specific space vehicle will be stored.<br />
<br />
On a ship equipped with a vehicle transporter, parking spots act as transporter pads for vehicles. <br />
<br />
The cursor depicts a space that is 12m x 17m. The parking spot requires direct access to the outside through a door or opening, unless the ship is equipped with a vehicle transporer or both a space vehicle recovery system and a space vehicle launcher. <br />
<br />
Steps:<br />
* The location of the parking spot is entered. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the parking spot in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Water Vehicle Parking Spot===<br />
A water vehicle parking spot indicates a place to park a water vehicle. Ship policies determine which specific water vehicle will be stored. <br />
<br />
On a ship equipped with a vehicle transporter, parking spots act as transporter pads for vehicles. <br />
<br />
The cursor depicts a space that is 12m x 24m. The parking spot requires direct access to the outside through a door or opening or the ship must be equipped with a vehicle transporter system. <br />
<br />
Steps:<br />
* The location of the parking spot is entered. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the parking spot in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Space Vehicle Recovery System===<br />
A recovery system simplifies the landing process for space vehicles attempting to get aboard a spacecraft. The recovery system displays an approach lighting system that guides the pilot toward the recovery system. When the vehicle enters the recovery system, it is captured and moved instantly to a vacant parking spot, if one is available. <br />
<br />
The recovery system appears as a virtual runway in space. The width of the virtual runway is 20m and the length is 500m. <br />
<br />
Steps:<br />
* The location of the terminating end of the recovery system is entered. Vehicles land at the other end. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the recovery system in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Space Vehicle Launcher===<br />
A space vehicle launcher is a place to position a space vehicle for launch. It also determines the direction in which the vehicle is launched. <br />
<br />
A space vehicle parked aboard the spacecraft can request launch. If a vacant launch pad is available, their vehicle is moved instantly to the launch pad. After a brief count down, the space vehicle is launched. <br />
<br />
If the launch tube is equipped with a door, it opens before the launch and it closes after the launch. <br />
<br />
The design must provide sufficient room for the desired vehicle on the launch pad. The cursor depicts a space that is 12m x 17m. The launch pad requires direct access to the outside through a door or opening. The launch tube jig is useful for creating a passage way for the vehicle to reach the outside. <br />
<br />
Steps:<br />
* The launch pad location is entered. <br />
* The launch tube exit location is entered.<br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the launch pad in 10 degree increments. <br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
===Spacecraft Parking Spot===<br />
A spacecraft parking spot is a place to park a spacecraft. Spacecraft factories place newly manufactured spacecraft on empty parking spots. Airport terminals provide parking spots for arriving spacecraft to land. <br />
<br />
The size of the spacecraft parking spot is equal to the maximum size spacecraft that can be manufactured on the ground. That is also the largest size spacecraft that is expected to land on the ground at an airport. <br />
<br />
Spacecraft parking spots are intended to be used in building designs. There is no current useful purpose for placing them in a spacecraft design. <br />
<br />
Steps:<br />
* The location of the parking spot is entered.<br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the parking spot in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
==Details==<br />
<br />
===Berths===<br />
A berth indicates a place where a person sleeps. Berths provide a place for avatars to recall into the universe after their body is killed. <br />
<br />
Berths supply life support to the occupant, even if the air is gone from the room. This could happen if the life support system was functioning but the door to the outside was left open. It is appropriate to create geometry around the berth depicting a canopy or chamber. <br />
<br />
The cursor depicts a space that is 1m x 2m. <br />
<br />
Steps:<br />
* The location of the person when sleeping in the berth is entered. <br />
<br />
Key Commands:<br />
*<code>Left/Right Arrows</code> rotates the berth position in 10 degree increments.<br />
*<code>Shift</code> when held, reduces the rotation to 1 degree increments.<br />
<br />
====Captain====<br />
Creates a [[Design_Parts#Berth.2C_Capt|captain's berth]].<br />
<br />
====Officer====<br />
Creates an [[Design_Parts#Berth.2C_Officer|officer berth]].<br />
<br />
====Crew====<br />
Creates a [[Design_Parts#Berth.2C_Crew|crew berth]].<br />
<br />
====Troop====<br />
Creates a [[Design_Parts#Berth.2C_Troop|troop berth]].<br />
<br />
====Passenger====<br />
Creates a [[Design_Parts#Berth.2C_Passenger|passenger berth]].<br />
<br />
===Contrail Emitter===<br />
A [[Design_Parts#Contrail_Emitter|contrail emitter]] marks the location for maneuver drive thruster effects to begin. The type of effect used is dependent upon the maneuver drive module in use. <br />
<br />
Steps:<br />
* The location of the contrail emitter is entered.<br />
<br />
===Decals===<br />
<br />
====Empire Flag====<br />
The flag decal is created by entering two corner points of a rectangle. The flag is oriented to the grid, with +X going to the right and +Y going up on the flag. <br />
<br />
The decal rectangle should be square or nearly square in aspect ratio. It should have faces behind it. The flag that gets displayed in the area may not be square in shape. The flag's aspect ratio will be preserved, exposing faces behind the flag, or visible through holes in the flag. <br />
<br />
Steps:<br />
* A corner point of the flag is entered.<br />
* The opposite corner point of the flag is entered. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
====Empire Name====<br />
The empire name decal is created by entering two corner points of a rectangle. The decal is oriented to the grid, with +X going to the right and +Y going up on the decal.<br />
<br />
Steps:<br />
* A corner point of the decal is entered.<br />
* The opposite corner point of the decal is entered. <br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
====Spacecraft Name====<br />
The ship name decal is created by entering two corner points of a rectangle. The decal is oriented to the grid, with +X going to the right and +Y going up on the decal. <br />
<br />
Steps:<br />
* A corner point of the decal is entered.<br />
* The opposite corner point of the decal is entered. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
====Captain's Name====<br />
The capt name decal is created by entering two corner points of a rectangle. The decal is oriented to the grid, with +X going to the right and +Y going up on the decal. <br />
<br />
Steps:<br />
* A corner point of the decal is entered.<br />
* The opposite corner point of the decal is entered. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
====Berth Assignee's Name====<br />
The berth assignee's name decal is created by entering two corner points of a rectangle. The decal is oriented to the grid, with +X going to the right and +Y going up on the decal. After creating a berth assignee's name decal, it should be associated with a berth, to show the assignee's name. <br />
<br />
Steps:<br />
* A corner point of the decal is entered.<br />
* The opposite corner point of the decal is entered. <br />
<br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Game Table===<br />
<br />
===Light Bulb===<br />
Adds a [[Design_Parts#Light_Bulb|light bulb part]] to the design.<br />
<br />
Steps:<br />
* The location of the light bulb is entered. <br />
* The aim point of the light is entered. Distance from the emit point is not a factor. <br />
* Omnidirectional, downward or forward facing lights are created using a key command. <br />
<br />
Key Commands:<br />
*<code>N</code> indicates the light is omnidirectional. <br><br />
*<code>D</code> indicates the light is to point downward. <br><br />
*<code>F</code> indicates the light is to point forward.<br />
<br />
===Remote Camera===<br />
Remote cameras permit an avatar sitting at a command station to see from the camera's location. <br />
<br />
Steps:<br />
* The location of the remote camera is entered.<br />
<br />
==Landscape==<br />
===Fence/Wall===<br />
Fences and walls are drawn as a series of segments. The end points of the segments will elevate to the terrain as it rises and falls due to site grading. <br />
<br />
Fences and walls are obstructions to movement. <br />
<br />
Fences offer a selection of fence and wall styles.<br />
<br />
===Shrub===<br />
A shrub marks the location for a plant. The location of the shrub will elevate to the terrain as it rises and falls due to site grading. <br />
<br />
The specific DNA of the plant comes from the environment in which the building is constructed. A window offers a choice of plant type. <br />
* Agriculture The type is determined by agricultural processes running at the building. <br />
* Random A random type is selected at each building. <br />
* Plant Resource A specific plant resource can be chosen. Type is random when the building is not agricultural. <br />
<br />
Steps:<br />
* A window asks the type of shrub. <br />
* The location of one or more shrubs is entered.<br />
<br />
===Tree===<br />
A tree marks the location for a plant. The location of the tree will elevate to the terrain as it rises and falls due to site grading. <br />
<br />
The specific DNA of the plant comes from the environment in which the building is constructed. A window offers a choice of plant type. <br />
* Agriculture The type is determined by agricultural processes running at the building. Type is random when the building is not agricultural. <br />
* Random A random type is selected at each building. <br />
* Plant Resource A specific plant resource can be chosen. <br />
<br />
Steps:<br />
* A window asks the type of tree. <br />
* The location of one or more trees is entered.<br />
<br />
===Site===<br />
Creation of a new [[Design_Parts#Site|site mesh]] begins by choosing options. The shape of a site mesh is then created by drawing its outline. <br />
<br />
Steps:<br />
* A window offers site grading options.<br />
* A point is entered to begin the site mesh shape.<br />
* Subsequent points are entered to describe the site mesh shape.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>R</code> starts a round site.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
===Build Zone===<br />
The shape of a [[Design_Parts#Build_Zone|build zone mesh]] is created by drawing its outline. <br />
<br />
Steps:<br />
* A point is entered to begin the build zone mesh shape.<br />
* Subsequent points are entered to describe the build zone mesh shape.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>G</code> starts a round build zone.<br />
*<code>D</code> indicates completion of the shape.<br />
<br />
==Paths==<br />
<br />
===Barrier===<br />
A [[Design_Parts#Barrier|barrier]] is created as an [[Designer#Extrusion|extrusion shape]].<br />
<br />
===Hull Void===<br />
A [[Design_Parts#Void.2C_Hull|hull void]] is created as an [[Designer#Extrusion|extrusion shape]] or a [[Designer#Spindle|spindle shape]].<br />
<br />
===Room Void===<br />
A [[Design_Parts#Void.2C_Room|room void]] is created as an [[Designer#Extrusion|extrusion shape]] or a [[Designer#Spindle|spindle shape]].<br />
<br />
===Environment Void===<br />
An [[Design_Parts#Void.2C_Environment|environment void]] is created as an [[Designer#Extrusion|extrusion shape]] or a [[Designer#Spindle|spindle shape]].<br />
<br />
===Walk Path===<br />
[[Design_Parts#Path.2C_Walk|Walk paths]] are drawn as a series of segments. Each end of a walk path segment is a node. Walk paths form an interconnected network of nodes that leads to every place an NPC might need to walk. They can interconnect with ladder paths, to create connections between heights. The number of nodes in the network should be minimized for efficiency. <br />
<br />
Nodes do not have to lie on the floor. This is useful when connecting a walk path to the top end of a ladder path.<br />
<br />
===Ladder Path===<br />
[[Design_Parts#Path.2C_Ladder|Ladder paths]] do not have to be exactly vertical. They can travel at any angle. <br />
<br />
The top end of the ladder path should extend high enough that a player climbing the ladder can get off. For example, the ladder path for a ladder going up to the edge of a roof should go above the roof, or a player might not be able to get off the ladder onto the roof.<br />
<br />
==Sketch==<br />
The [[Design_Parts#Sketch|sketch]] is created by entering two corner points of a rectangle. The sketch is oriented to the grid, with +X going to the right and +Y going up on the sketch. The picture file to be displayed in the rectangle is selected using a file chooser. <br />
<br />
Steps:<br />
* A corner point of the sketch is entered. <br />
* The opposite corner point of the sketch is entered. <br />
* A file chooser requests the picture file. <br />
Key Commands:<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
==Align Turbo Lift Stop==<br />
Moves and rotates the selected turbo lift stop. <br />
<br />
This method must be used when establishing the location of each stop of a turbo lift. '''Routine move, rotate, and mouse drag operations affect all stops of the lift simultaneously.''' <br />
<br />
The move is described using the grid. The grid is oriented relative to the selected turbo lift stop. That grid location is identified as the starting reference for the move. The grid is then oriented to the destination location and rotation. <br />
<br />
Selected turbo lift stops are moved such that the grid orientation at the start location aligns with the grid orientation at the destination.<br />
<br />
==Associate Parts==<br />
[[Designer#Part_Association|Certain parts can be associated]] with certain other parts. Association is a loose connection between parts. The meaning of this association depends upon the parts involved. <br />
<br />
A part can be associated with only one other part. Any number of parts can be associated with the same part.<br />
<br />
Parts are selected for the association. One or more parts to be associated are selected. A single part is also selected that is the target of the association. This command does nothing if no parts are selected that can be associated. This command does nothing if no target part is select or more than one target part is selected.<br />
<br />
==Dissociate Parts==<br />
Removes any associations from the selected parts.<br />
<br />
This only affects parts that are associated to other parts.<br />
<br />
This does not affect the part that is the subject of those associations. That part does not have to be selected.<br />
<br />
==Jig Cut==<br />
Jig cutting requires that a jig and one or more other parts be selected, depending on the jig. <br />
<br />
The jig may be a part sealed by another architect. Parts cannot be cut if they are sealed by another architect but a sealed jig can be used to cut parts.<br />
<br />
===Cutting Jigs===<br />
Cutting jigs cut the faces of parts. Cutting jigs require that one or two other parts be selected. The jig is positioned to penetrate the parts to be cut. The jig cuts the hole. When two parts are cut, the gap between them is lined with faces to create a solid connection. <br />
<br />
Not all parts can be cut by jigs. <br />
<br />
===Door Jigs===<br />
[[file:ScFigDoorJig.png|right|Door Jig]]<br />
Door jigs create operational doors that connect rooms with each other and to the outside. Door jigs require that two other parts be selected that are rooms or hulls, or one of each. The door jig is positioned to penetrate both parts to be cut. The jig cuts the hole and lines it with faces to create a solid connection. <br />
<br />
A door is created from the cut out faces. It can be modified to represent open and closed states. <br />
<br />
When a door jig cuts only one part, no door is made. The cut out pieces remain in place.<br />
<br />
When a turbo lift uses its door jig to cut out a door, the door is assigned with the current stop name of the turbo lift. It appears in the parts list as a turbo lift door.<br />
<br />
===Window Jigs===<br />
[[file:ScFigWindowJig.png|right|Window Jig]]<br />
Window jigs create transparent windows that connect rooms with each other and to the outside. Window jigs also create translucent windows. <br />
<br />
Translucent windows are opaque panels that glow in response to internal lighting conditions, to simulate a window. Translucent windows are used to create a facade of greater internal room detail, without having to make the rooms behind them. <br />
<br />
To create a window, the window jig is positioned to penetrate the parts to be cut. The jig and one or two other parts are selected to be cut by the jig. Those parts must be rooms or hulls, or one of each. The jig cuts the hole. When two parts are cut, the gap between them is lined with faces to create a solid connection. <br />
<br />
Window panes are created from the cut out faces. Window glass is optional and it can be deleted where it is not wanted, to achieve the desire appearance. <br />
* When a window is created between a room and the hull, a single thin two-sided transparent window pane is created from the hull skin. <br />
* When a window is created between two rooms, two one-sided transparent window panes are created. <br />
* When a window is created in one room or hull, a one-sided translucent window pane is created.<br />
<br />
===Launch Tube Jigs===<br />
A launch tube jig creates a space vehicle launch tube to connect an internal room with the outside. <br />
<br />
To create a launch tube, the jig is positioned to penetrate the parts to be cut. The jig and one or two other parts are selected to be cut by the jig. Those parts must be one room and one hull. The jig cuts the hole and lines it with faces to create a solid connection. <br />
<br />
A thin two-sided door is created from the faces cut from the hull. It can be modified to represent open and closed states. The launch tube door is optional and it can be deleted if unwanted. <br />
<br />
Note that a door jig can also be used to create a launch tube. It just depends on the type of door desired, thick or thin. <br />
After the launch tube is cut out, a space vehicle launcher must be installed to complete the launch system. Refer to the Vehicles, Space Vehicle Launcher menu option.<br />
<br />
==Join==<br />
Joins multiple parts together to combine them into a single part.<br />
<br />
The complement to this command is [[Designer_Menu#Split_Faces|Split Faces]].<br />
<br />
==Make==<br />
Make functions provide a way to create new parts from existing parts.<br />
<br />
===Decal===<br />
Each selected part is converted into a [[Design_Parts#Decal|decal]] if possible. Not all parts can be converted into other parts. <br />
<br />
===Door===<br />
Each selected part is converted into a door, if possible. Not all parts can be converted into other parts.<br />
<br />
===Hull===<br />
Each selected part is converted into a hull, if possible. Not all parts can be converted into other parts.<br />
<br />
===Landing Gear===<br />
Each selected part is converted into a landing gear, if possible. Not all parts can be converted into other parts. <br />
<br />
===Mesh===<br />
Each selected part is converted into a mesh, if possible. Not all parts can be converted into other parts.<br />
<br />
===Room===<br />
Each selected part is converted into a room, if possible. Not all parts can be converted into other parts.<br />
<br />
===Turbo Lift===<br />
A turbo lift is made from a selected room, room void, and door jig. The turbo lift is created with three states. <br />
<br />
The room is used to create the ''Car'' state of the lift. This is the geometry that makes up the visible appearance of the lift car. It moves to each stop when the lift is called. <br />
<br />
The room void is used to create the ''Room Void'' state of the lift. The room void describes the accessible space inside the lift car. It moves to each stop when the lift is called. <br />
<br />
The door jig becomes the ''Door Jig'' state of the lift. The door jig is attached to the turbo lift, used when making the jig cut at each stop. The jig state is removed during the finalizing process. <br />
<br />
When the first door is cut using the lift, the ''Uncut Car'' state is created using the room mesh. This geometry is used when making the jig cut at each stop. The uncut car state is removed during the finalizing process. <br />
<br />
Use the parts manager to create stops for the turbo lift. Creating three stops goes sort of like this. <br />
* Make the turbo lift. <br />
* Position the lift car at the first stop. <br />
* Right-click the lift in the parts manager to add the first stop. <br />
* Select the lift and a room. Use Parts, Jig Cut to cut the first door. This also cuts the initial door opening into the lift car and the uncut car state is added to the lift. <br />
* Use the parts manager to add the second stop, before moving the car. <br />
* Align the car at the second position; do not copy it. The Part, Align Turbo Lift Stop command is the ONLY tool for doing this. Dragging, rotating or moving the lift car affects all lift stops equally. <br />
* Jig cut a door at the second position, using the lift. <br />
* Add the next stop. <br />
* Align the car at the next position. <br />
* Jig cut a door at the next position. <br />
* To see the car at any of its stops, right-click the lift in the parts manager. <br />
<br />
'''The lift will not act as a jig to cut anything until a stop has been added.''' If the jig cut does nothing, insure the lift has at least one stop. <br />
<br />
Do not cut the room with the jig before making the lift. In order for the turbo lift jig to make a door, the jig must cut the lift and a room when the first door is made. The uncut car state is created then; it is used internally when cutting doors at each additional stop. <br />
<br />
The lift car model actually moves to each stop, unlike the states of a door or landing gear that are represented by multiple different models. Changes to the lift car will affect its appearance at every stop. The lift car may be edited at any stop. The shape of the door should not be changed. It might stop producing the desired jig cut result due to cached information. <br />
<br />
Doors at each stop should be grouped to match the stop name. This connects the door to the stop of the turbo lift. A turbo lift door with no matching turbo lift stop will not call the lift car.<br />
<br />
===Turret===<br />
Makes a turret base from a selected part. A turret base provides the rotating foundation for a turret gun. The gun can be elevated and lowered, providing a full hemisphere of coverage. <br />
<br />
The turret base rotates around its axis. The axis direction of the turret is the up (+Z) direction of the grid when this command is run. The grid should be positioned before making the turret. <br />
<br />
The default turret does not require a gun. If no gun is made, shots will be fired from the middle of the turret base. <br />
<br />
To create a gun for the turret, select the turret base after it is created. Use the part manager to add a Gun state. After the gun is added, various states of the gun may then be added for more detail when firing and reloading. <br />
<br />
Information about the gun may be also specified. Use the ''Part, Properties, Turret Gun Position'' command to assign information needed to animate the gun's movement. <br />
<br />
A gunner station must be assigned to operate the turret. Use the ''Part, Stations, Integrated, Turret Gunner'' command to assign the gunner's station to a turret. <br />
<br />
In the designer, only the currently selected state of a turret gun is visible. To view all states of a turret gun simultaneously, select the Gunner Station state of the turret. Then all states of the turret are visible at once.<br />
<br />
Steps:<br />
* The pivot point of the turret base is entered. <br />
<br />
===Window===<br />
Each selected part is converted into a [[Design_Parts#Window|window]]. The transparency of the window is configurable. <br />
<br />
Doors and other multi-state parts cannot include window parts but they can have transparent faces. To make windows in those parts, apply transparency to the faces of the window glass. They will not glow due to internal lighting but they will function for viewing through them.<br />
<br />
===Light Lens===<br />
Each selected part is converted into a [[Design_Parts#Light_Lens|light lens]]. <br />
<br />
The parts represent only the glowing lit lens portion of the light. The bezel or other hardware should not be included in the light or they will glow. <br />
* Street lights are turned on/off automatically, as natural light level changes. <br />
* Spacecraft headlights are turned on/off using ship controls. <br />
<br />
Light lenses produce a steady glow that appears as a glow spot centered on the lens. Light lenses do not blink or oscillate. <br />
<br />
Making light lenses does not affect the actual emission of light by the design. Illumination is added by making a [[Design_Parts#Light_Bulb|light bulb]], using the ''Part, Make, Light Bulb'' command. <br />
<br />
Light illumination does not require that any light lens parts exist; they simply add detail.<br />
<br />
===Navigation Light Lens===<br />
Each selected part is converted into a [[Design_Parts#Nav_Light_Lens|navigation light lens]]. The color of the nav light glow is configurable. <br />
<br />
This represents only the glowing lit lens portion of the lights. The bezel or other hardware should not be included in the light or they will glow. Navigation lights are turned on/off using ship controls. On buildings, nav lights are on at night if the building has power.<br />
<br />
Nav light lenses produce a steady glow in the color that is configured for them. Nav light lenses do not blink or oscillate. <br />
<br />
Terrestrial aircraft usually have a green nav light on the starboard wingtip and a red nav light on the port wingtip. Sometimes they have a red nav light on the belly.<br />
<br />
===Rotating Beacon Lens===<br />
Each selected part is converted into a [[Design_Parts#Rotating_Beacon_Lens|rotating beacon lens]]. The color of the rotating light glow is configurable. The +Z axis of the design grid establishes the rotation axis of the light glare effect. <br />
<br />
The parts represent only the glowing lit lens portion of the lights. The bezel or other hardware should not be included in the light or they will glow. Rotating beacons are turned on/off using ship anticollision light controls. On buildings, rotating beacons are on at night if the building has power.<br />
<br />
Rotating beacon lenses oscillate slowly around an axis, using a colored light glare effect. The effect is centered on the geometry of the lens. <br />
<br />
Terrestrial aircraft often use one or more white strobes and/or rotating red beacons to provide an anticollision light system.<br />
<br />
===Strobe Lens===<br />
Each selected part is converted into a [[Design_Parts#Strobe_Lens|strobe light lens]]. The color of the strobe light glow is configurable. <br />
<br />
This represents only the glowing lit lens portion of the lights. The bezel or other hardware should not be included in the light or they will glow. Strobes are turned on/off using ship anticollision light controls. On buildings, strobes are on at night if the building has power.<br />
<br />
Strobe lenses blink once per second. Strobe lenses are typically bright white. <br />
<br />
Terrestrial aircraft often use one or more white strobes and/or red rotating beacons to provide an anticollision light system.<br />
<br />
==Symmetrical Copy==<br />
[[file:ScFigCopySymmetrical.png|right|Symmetrical Copy]]<br />
A window presents a choice of X, Y or Z axis. Each selected part is duplicated. The copied parts are mirrored across the center of the grid plane, in the direction of the chosen axis. <br />
<br />
For example, if the red X axis is chosen, parts will be copied left to right. If the green Y axis is chosen, parts will be copied front to back. If the blue Z axis is chosen, parts will be copied top to bottom.<br />
<br />
=Face=<br />
Face menu items edit the faces and vertices within parts, rather than whole parts. <br />
<br />
When working on more than one part in face mode, one of the parts is the target part. It is often the last part that was selected before entering face mode. It can be changed by selecting a different part on the parts window.<br />
<br />
==Face Mode==<br />
Switches between [[Designer#Part_Mode_vs_Face_Mode|face mode and part mode]].<br />
<br />
One or more parts must be selected to enable face mode.<br />
<br />
Face mode must be enabled to use any face menu commands, except this switch to turn face mode on or off.<br />
<br />
Face mode is required to use the [[Designer#Texture_Wrapper_Window|texture wrapper]].<br />
<br />
==Isolate Parts==<br />
Isolates parts when working in face mode.<br />
<br />
When enabled, only the selected parts are visible while working in face mode.<br />
<br />
When disabled, all parts are visible while working in face mode.<br />
<br />
==Add==<br />
Adds one or more faces to the target part.<br />
<br />
[[Designer#Faces|Faces]] can be added individually, by drawing their boundary. A ''triangle'', ''quad'', or ''face'' boundary can be drawn.<br />
Faces can also be added using [[Designer#Shapes|shape generators]].<br />
<br />
===Triangle===<br />
A triangle is created by drawing its boundary of three points. <br />
<br />
Draw direction determines up direction of the face, for triangle facing. <br />
The up side of the triangle is the side where the vertices are clockwise. <br />
<br />
Steps:<br />
* The first point of the triangle is entered. <br />
* The second point of the triangle is entered. <br />
* The third point of the triangle is entered. <br />
* Input repeats to draw another triangle.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
<br />
===Quad===<br />
A quad is created by drawing its boundary of four points. <br />
<br />
Draw direction determines up direction of the quad, for triangle facing. <br />
The up side of the quad is the side where the vertices are clockwise. <br />
<br />
Steps:<br />
* The first point of the quad is entered. <br />
* The second point of the quad is entered. <br />
* The third point of the quad is entered. <br />
* The fourth point of the quad is entered. <br />
* Input repeats to draw another quad. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested. <br />
*<code>C</code> restarts the action at the beginning. <br />
<br />
===Face===<br />
An individual face is created by drawing its boundary. <br />
At least three boundary points are needed to create a face. <br />
A round face can be made by entering a radius. <br />
<br />
Grid determines up direction of the face, for triangle facing. <br />
Orient the grid to the area before drawing the face. <br />
<br />
Steps:<br />
* A point is entered to begin the shape of the face.<br />
* Subsequent points are entered to describe the shape of the face. <br />
* If making a round face, radius point of face is entered. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> finishes the face. This option appears after the shape contains three or more points.<br />
*<code>S</code> round face, only available after entering the first point.<br />
<br />
==Finish==<br />
===Paint===<br />
Paint is a colored coating applied on top of the surface texture. <br />
<br />
Paint colors can be chosen from one of several theme colors. Theme colors are controlled by empire policy. When a ship is manufactured, the theme colored parts are painted accordingly. <br />
<br />
Theme painted parts do not change color automatically when a ship changes empire. Theme painted parts can be repainted at any time. A color theme must be used when repainting but it can be any color theme, enabling company ships to be repainted with their own color themes. <br />
<br />
Paint has transparency. Opaque paint completely obscures the underlying texture. A small amount of transparency allows some of the underlying texture to show through. This can retain useful detail, depending on the texture. Paint that is mostly transparent causes only a slight tint change to the underlying texture. The lowest setting removes paint entirely.<br />
<br />
===Polish===<br />
Polish helps to make surfaces appear matte or shiny. Polish settings cause specular highlights to appear. Specular highlights are those shiny spots on glossy surfaces, like the shiny spot on a polished apple, or the glints of light off waves at sunset. Specular highlights are seen when the angle between the eye, surface, and light source are just right. <br />
<br />
Specular highlights simulate the reflection of the incoming light off the surface. Light reflected off the surface gets scattered, more or less depending on surface roughness. If the light was reflected perfectly, a mirror image of the light source would be visible. As this is only a simulation, a true reflection will not be achieved. <br />
<br />
Specular highlighting is calculated at vertices. The result is interpolated between vertices. Specular highlighting is most effective on surfaces with ample vertices. Polish settings control the brightness and intensity of specular highlights. <br />
<br />
Small bright intense highlights produce a glossy appearance. Examples include: apples, glass, chrome. <br />
<br />
Large diffuse dim highlights produce a satin appearance. Examples include: plastic, fabric, skin, finished wood.<br />
<br />
===Glow===<br />
Glow is a color that is emitted at vertices. Glow is added to the results of other lighting conditions at the vertex. <br />
<br />
When there is little or no other lighting, glow is easy to see. Low intensity glow may be difficult to see in bright lighting conditions. <br />
A glow color of RGB(255,255,255) would turn every detail of a surface to bright solid white, regardless of lighting or texturing. <br />
<br />
Glow color is applied at selected vertices of selected faces. Glow is interpolated between vertices. To get a crisp drop off in glow between one face and another, select the common vertices but only select the face that should glow. <br />
<br />
Glow color obscures the surface color beneath, by modulating colors toward the glow color. The amount depends on the intensity of the glow color. Use self illumination to make a surface bright without changing its color. <br />
<br />
Light lenses use glow when they are rendered in the on state. The glow color of the lens is not affected by the color of the underlying surface texture or paint. Lens parts glow automatically so their on/off state can be controlled. You do not have to set up the glow on lenses.<br />
<br />
===Self Illumination===<br />
Self illumination causes a face to appear bright regardless of environmental lighting. Typical objects are not self illuminated, instead relying on light sources to illuminate their surfaces in a realistic way. <br />
<br />
Full self illumination results in a bright surface that never modulates due to lighting. This effect is useful when creating display screens or light lenses. <br />
This differs from glow in that the resulting appearance is the color of the surface texture/paint, only bright. Glow adds a uniform color to the underlying texture, which masks the texture and paint. <br />
<br />
Display screens use self illumination. The difference with screens is that the self illumination is applied automatically. You do not have to set up the self illumination of screens.<br />
<br />
===Transparency===<br />
Transparency can be applied to faces to see through them. Transparent faces do not glow due to internal lighting like [[Design_Parts#Window|windows]]. <br />
<br />
Transparency may be set to invisible. Invisible faces are not useful for any purpose. <br />
<br />
Avoid situations where the player may see through several transparent faces at the same time. This will often produce undesirable results. <br />
<br />
Transparency is useful when making windows in doors and other multi-state parts. Multi-state parts cannot include [[Design_Parts#Window|windows]] but they can have transparent faces.<br />
<br />
===Effect Intensity===<br />
Effects are emitted at vertices. Brightly lit effects are added to the results of other lighting conditions at the vertex. <br />
<br />
Effect intensity is applied at selected vertices of selected faces. Effect intensity is interpolated between vertices. <br />
<br />
Effect textures are applied to faces using the texture wrapper. Effect intensity does not affect faces that do not have effects textures.<br />
<br />
==Cut Face==<br />
Faces are cut by drawing a cut line. Faces are only cut if the line lies in the plane of the face. <br />
<br />
Steps:<br />
* A point is entered to begin the cut line.<br />
* Subsequent points are entered to describe the cut line. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the cut.<br />
<br />
==Divide Faces==<br />
[[file:ScFigDivide.png|right|Divide Faces]]<br />
Faces are divided into smaller faces.<br />
<br />
Triangles are divided along each edge. Applying 1 division produces 4 triangles. Applying 2 divisions produces 9 triangles. Applying 3 divisions produces 16 triangles. <br />
<br />
Quads are divided along each edge. Applying 1 division produces 4 quads. Applying 2 divisions produces 9 quads. Applying 3 divisions produces 16 quads. <br />
Polygons with more than 4 sides are not divided.<br />
<br />
==Flatten Vertices==<br />
Operates on selected vertices of selected faces.<br />
<br />
Changes the up direction at each selected [[Designer#Vertices|vertex]] to match the facing direction of its face, if its face is selected.<br />
<br />
After flattening, a curved surface made using multiple faces will appear strongly faceted because shading changes suddenly where the up direction changes. Compare this to the result of [[Designer_Menu#Smooth_Vertices|Smooth Vertices]].<br />
<br />
To see the effect of this.<br />
*Create a sphere shape.<br />
*Select all of its faces and vertices.<br />
*Flatten its Vertices.<br />
*Observe the result.<br />
*Smooth its vertices.<br />
*Compare the result.<br />
<br />
==Fracture Faces==<br />
Faces with more than three vertices are replaced with one or more individual triangles.<br />
<br />
==Fuse Faces==<br />
Selected faces are joined together into a single face where possible. <br />
<br />
Faces must be coplanar and they must share an edge.<br />
<br />
==Loop Cut==<br />
Loop cutting attempts to find a path around the surface of a part. The faces of the part are cut where the loop cut line crosses them. <br />
<br />
Steps:<br />
* The location along the edge of a face is entered.<br />
<br />
==Punch Face==<br />
Holes are punched into faces by drawing a cut line. Faces are only cut if the line lies in the plane of the face. Round holes can be cut by entering a radius. <br />
<br />
Steps:<br />
* A point is entered to begin the punch shape or mark the center of a round hole. <br />
* Subsequent points are entered to describe the punch shape. <br />
* If making a round hole, radius point of hole is entered. <br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested.<br />
*<code>C</code> restarts the action at the beginning.<br />
*<code>D</code> indicates completion of the punch shape.<br />
*<code>S</code> round hole, only available after entering the first point.<br />
<br />
==Push Pull==<br />
[[file:ScFigPushPull.png|right|Push Pull]]<br />
Moves or copies the selected faces. Face edges are filled with additional faces instead of leaving gaps, like an extrusion. Faces may be moved together or separately. <br />
<br />
When moved together, all faces move in a common direction. Faces are not added where edges overlap. This is the default behavior. <br />
<br />
When moved separately, each face moves in the direction it is facing. Every face adds new faces at the edges, regardless of overlap. <br />
<br />
When the push/pull is initiated using a menu command, movement is based on distance from grid center. When the push/pull is initiated using a hot key, movement is based on changes in cursor location.<br />
<br />
Steps:<br />
* A point is entered to indicate the amount of movement. The point also determines the direction when moving faces together. <br />
<br />
Key Commands:<br />
*<code>X</code>,<code>Y</code>,<code>Z</code> locks movement to an axis when moving together. Default is none.<br />
*<code>S</code> switches between dragging faces separately or together.<br />
*<code>Ctrl</code> when held, copies the selected objects instead of moving them.<br />
<br />
==Reverse Faces==<br />
Reverses the [[Designer#Faces|facing direction]] of selected faces.<br />
<br />
==Smooth Vertices==<br />
Operates on selected vertices of selected faces.<br />
<br />
Changes the up direction at each selected [[Designer#Vertices|vertex]] to match the average facing direction of all selected faces that share the same vertex.<br />
<br />
After smoothing, a curved surface made using multiple faces will appear smooth because the surface color modulates smoothly between changes in surface up direction. Compare this to the result of [[Designer_Menu#Flatten_Vertices|Flatten Vertices]].<br />
<br />
To see the effect of this.<br />
*Create a sphere shape.<br />
*Select all of its faces and vertices.<br />
*Flatten its Vertices.<br />
*Observe the result.<br />
*Smooth its vertices.<br />
*Compare the result.<br />
<br />
To see a more advanced example, showing why only vertices of selected faces are considered.<br />
*Create a simple cylinder using the tubing command. One path segment is adequate. Make the diameter about the same as the length.<br />
*Select all of its faces and vertices.<br />
*Smooth its vertices.<br />
<br />
The result considers the end caps so the smoothing is trying to wrap around the ends. This doesn't look correct on our simple cylinder.<br />
<br />
*Flatten the vertices.<br />
*Deselect the face at each end of the cylinder.<br />
*Smooth the vertices.<br />
<br />
This time the curved side of the cylinder should look smooth, with a crisp turn at the end caps.<br />
<br />
==Split Faces==<br />
Selected faces are removed from the current part. <br />
<br />
A new part is created using the removed faces. The type of the newly created part is the type of the target part.<br />
<br />
This command complements the [[Designer_Menu#Join|Join Parts]] command.<br />
<br />
=Helpers=<br />
Helpers assist the architect when creating geometry. Helpers do not create or modify geometry.<br />
<br />
==Save Grid Position==<br />
Stores the current grid position to a numbered location.<br />
<br />
Grid positions are saved with a design.<br />
<br />
Grid positions are common to all architects in the same designer.<br />
<br />
==Restore Grid Position==<br />
Restores the position of the grid to a previously saved grid position.<br />
<br />
Restore Position to Origin restores the grid to the absolute coordinate system.<br />
<br />
==Find Vertices==<br />
When this switch is enabled, vertices can be found using the mouse.<br />
<br />
This only applies when working in face mode.<br />
<br />
==Find Edges==<br />
When this switch is enabled, visible edges can be found using the mouse.<br />
<br />
This only applies when working in face mode.<br />
<br />
==Find Faces==<br />
When this switch is enabled, faces can be found using the mouse.<br />
<br />
This only applies when working in face mode.<br />
<br />
==Move Grid==<br />
Moving the [[Designer#Grid|grid]] changes the location of its center. The rotation of the grid does not change. The grid center is where the red X axis and green Y axis lines cross. <br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the new grid center.<br />
<br />
Key Commands:<br />
*<code>S</code> restores the center of the grid to the true center of the design space without changing its rotation.<br />
<br />
==XY Grid==<br />
Changes the orientation of the grid without changing its origin.<br />
<br />
==XZ Grid==<br />
Changes the orientation of the grid without changing its origin.<br />
<br />
==YZ Grid==<br />
Changes the orientation of the grid without changing its origin.<br />
<br />
==Position Grid==<br />
Positioning the [[Designer#Grid|grid]] changes the location of its center and the rotation of the grid lines. The grid center is where the red X axis, green Y axis, and blue Z axis lines cross.<br />
<br />
Steps:<br />
* A [[Designer#Coordinate_Input|point is entered]] at the new grid center.<br />
* A second point is entered to set the direction of the red X axis line. Its distance from the center does not matter as it only determines a direction.<br />
* A third point is entered to set the direction of the green Y axis line. It may be entered at any location in the new grid plane.<br />
<br />
Key Commands:<br />
*<code>B</code> backs up to reenter the previous point requested. <br />
*<code>C</code> restarts the action at the beginning. <br />
*<code>S</code> restores the grid to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]] of the design space. <br />
*<code>F</code> restores the grid rotation to flat, without moving the grid. The direction of the axes is restored to match the absolute coordinate system, without moving the origin.<br />
*<code>X</code> rotates the grid 180 degrees around the X axis, without moving the grid. <br />
*<code>Y</code> rotates the grid 180 degrees around the Y axis, without moving the grid. <br />
*<code>Z</code> rotates the grid 180 degrees around the Z axis, without moving the grid.<br />
<br />
==Show Grid==<br />
Turns the [[Designer#Visible_Grid|visible grid]] on and off.<br />
<br />
The grid plane is always active, regardless of its visibility state.<br />
<br />
==Grid Follows Work==<br />
When this switch is on, [[Designer#Grid_as_a_Tool|the grid]] origin moves to the location of each point entered in response to [[Designer#Coordinate_Input|coordinate input]], either using the mouse pointer or by entering a location into the input tool bar. The rotation of the grid does not change.<br />
<br />
This is convenient when the location of each subsequent point input is known as a vector relative to the last point entered.<br />
<br />
Here is an example of drawing a 2.5 x 4.5 box, with lower left corner at (1.2, 6.7). Assume a command has been started that requests points one by one until completed. None of the points lands on a whole grid increment.<br />
<br />
To draw that closed box without grid following work, these points would have to be input.<br />
<br />
<code>1.2,6.7</code><br><br />
<code>1.2,11.2</code><br><br />
<code>3.7,11.2</code><br><br />
<code>3.7,6.7</code><br><br />
<code>1.2,6.7</code> to close<br />
<br />
To draw that closed box with grid following work, these points would have to be input.<br />
<br />
<code>1.2,6.7</code> grid follows work to this location<br><br />
<code>,4.5</code> omitted X=0<br><br />
<code>2.5</code> omitted Y=0<br><br />
<code>,-4.5</code><br><br />
<code>-2.5</code> to close<br />
<br />
In this example, a lot less typing and mental math was needed when the grid followed the work.<br />
<br />
==Snap to Grid==<br />
When this switch is on, [[Designer#Coordinate_Input|point input]] using the mouse is rounded to the nearest grid intersection. Dragging of selected objects is also rounded to grid increments.<br />
<br />
Refer to the [[Designer#Grid_as_a_Tool|''Grid as a Tool'']] section for details about how this works.<br />
<br />
==Snap to Edges==<br />
When this switch is on, [[Designer#Coordinate_Input|point input]] using the mouse searches for visible edge lines near the pointer. This search is independent of the grid and is entirely based on the apparent distance between the pointer and edge lines.<br />
<br />
When objects are dragged with the mouse, this switch will cause them to snap to the visible edge lines of objects.<br />
<br />
==Snap to Vertices==<br />
When this switch is on, [[Designer#Coordinate_Input|point input]] using the mouse searches for vertices of visible objects near the pointer. This search is independent of the grid and is entirely based on the apparent distance between the pointer and vertices.<br />
<br />
When objects are dragged with the mouse, this switch will cause them to snap to the vertices of visible objects.<br />
<br />
==Bounding Box==<br />
Bounding boxes are a visual indicator of limits imposed by the designer, to keep the size of designs inside reasonable limits. Bounding boxes do not prevent drawing outside the bounds; they just show where the limits are.<br />
<br />
===Building Structure Design Limit===<br />
Shows the size limits of the combined hull parts of a building blueprint. All hull parts of a building must fit inside this space.<br />
<br />
A building design that exceeds this limit cannot be finalized.<br />
<br />
===Building Structure Site Limit===<br />
Shows the size limits of the combined site meshes of a building blueprint. All site meshes of a building must fit inside this space.<br />
<br />
A building design that exceeds this limit cannot be finalized.<br />
<br />
===Spacecraft Ground Build Limit===<br />
Shows the size limits of a spacecraft to be built on the ground. <br />
<br />
A spacecraft design that exceeds these limits cannot be built on the ground. It must be built in space, near a space station.<br />
<br />
===Spacecraft Max Design Limit===<br />
Shows the size limits of the combined hull parts of a spacecraft blueprint. All hull parts of a spacecraft must fit inside this space.<br />
<br />
A spacecraft design that exceeds this limit cannot be finalized.<br />
<br />
==Change My DNA==<br />
Changes the DNA of the architect's avatar.<br />
<br />
This is useful when designing blueprints for a specific race.<br />
<br />
Only available in the on line designer.<br />
<br />
=View=<br />
==Go To Selection==<br />
Teleports your avatar to the center of the selected objects.<br />
<br />
==Save My Position==<br />
Saves the current position of your avatar to a numbered spot.<br />
<br />
Positions are saved with the design. They are common to all architects in the same designer.<br />
<br />
==Restore My Position==<br />
===Position to Origin===<br />
Teleports your avatar to the [[Designer#Absolute_Coordinate_System|absolute coordinate system]].<br />
<br />
===Position to Grid===<br />
Teleports your avatar to [[Designer#Grid_as_a_Tool|the grid]].<br />
<br />
===Restore Number===<br />
Restores a position that was saved using the ''Save My Position'' command.<br />
<br />
Your avatar teleports to the restored position.<br />
<br />
==Show Back Faces==<br />
When this switch is on, the backs of [[Designer#Faces|faces]] are visible. Back faces are tinted yellow, to distinguish them from front faces.<br />
<br />
Back faces are not visible when the model is rendered in the game universe.<br />
<br />
==Show Edges==<br />
When this switch is on, the [[Designer#Edges|edges]] of [[Designer#Faces|faces]] are visible.<br />
<br />
Edges are not visible when the model is rendered in the game universe.<br />
<br />
Buildings under construction are depicted as frameworks of boards or beams. The frame boards and beams appear where there are edge lines in the design.<br />
<br />
==Show Faces==<br />
When this switch is on, the fronts of [[Designer#Faces|faces]] are visible. <br />
<br />
Front faces are visible when the model is rendered in the game universe.<br />
<br />
==Show Ground==<br />
Shows a flat textured polygon representing the ground under a spacecraft design. It shows how the design will sit on the ground when it settles due to gravity.<br />
<br />
This may be useful when working on landing gear.<br />
<br />
This option has no effect when designing a building. To see how a building interacts with terrain, place the building in a preview using the [[Designer_Menu#Preview_Place_Building|Preview Place Building]] command.<br />
<br />
==Show Sky Box==<br />
The sky box in the designer make the scenery interesting but it serves no useful purpose. It may even be distracting at times.<br />
<br />
Use this switch to turn the sky box on and off.<br />
<br />
This does not turn off the sky box during a [[Designer_Menu#Preview_On.2FOff|preview]].<br />
<br />
==Full Screen==<br />
Toggles between full screen and windowed mode.<br />
<br />
==Parts==<br />
Toggles visibility of the [[Designer#Parts_Window|parts window]].<br />
<br />
==Texture Wrapper==<br />
Toggles visibility of the [[Designer#Texture_Wrapper_Window|texture wrapper window]].<br />
<br />
=Help=<br />
Help menu items provide helpful documentation and videos. Information about the current program version is also accessed there.<br />
<br />
==Online Wiki==<br />
Opens your web browser to the Designer section of this wiki.<br />
<br />
==Online Videos==<br />
Opens your web browser to the Hazeron.com videos web page. There are videos showing how to use the designer and how to play ''Shores of Hazeron''.<br />
<br />
==Building Codes==<br />
States the purpose, placement rules, and blueprint requirements of each industry.<br />
<br />
Industries can be built using any blueprint that satisfies the requirements of the industry. This realistically allows a building design to be used for many different purposes. It also makes efficient use of building models that may be a lot of work to design.<br />
<br />
==About==<br />
Shows version information for the running program. Also shows information about the developers of ''Shores of Hazeron'' and its various components.<br />
<br />
[[Category:Designer]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9842Story Script2021-02-19T21:56:03Z<p>Haxus: /* World Functions */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
angle - Angle in degrees, in the range -360 to 360.<br />
<br />
animal - A wild animal. A creature that is not sentient.<br />
<br />
atom - A variable that references an atom. Most objects in the game universe are atoms.<br />
<br />
avatar - A variable that references an avatar atom.<br />
<br />
bool - Boolean value returned by calling one or more functions. Can use logical operators '&', '|', and '!'.<br />
<br />
bool - Boolean argument. Accepts 'true' or 'false', not case sensitive.<br />
<br />
building - Building name, not case sensitive.<br />
<br />
city - A variable that references a capitol building atom.<br />
<br />
commodity - Commodity name, not case sensitive.<br />
<br />
channel - Communication channel name. Not limited to standard channel names.<br />
<br />
character - A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
<br />
choiceValue - A value associated with multiple choices, in the range -127 to 127.<br />
<br />
creature - A variable that references a creature atom. Animals and sentients are creature atoms.<br />
<br />
dna - DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a <br />
city.<br />
<br />
empire - Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
<br />
file - A file name found in the same path as the script.<br />
<br />
gearslot - Gear slot, not case sensitive: Hand, Head, Face, Neck, Body, Wear, Limb, Digit, Waist. All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. All creatures have at least one body slot for carrying gear. Wear is specifically for things worn on the body, such as clothing and armor. Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. All creatures have four waist slots; there is a size limit to items placed at the waist.<br />
<br />
gender - Gender of creature, not case sensitive: Male, Female, Asexual, Hermaphrodite.<br />
<br />
hand - Dominant hand of creature, not case sensitive: Left Handed, Right Handed<br />
<br />
int - Signed integer value. Decimals are truncated.<br />
<br />
item - A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
<br />
ll - A variable that contains a longitude latitude coordinate on a world.<br />
<br />
npc - A variable that references an npc atom.<br />
<br />
npcrole - A role for an AI controlled sentient: Citizen, Worker, Passenger, Crew, Troop, Officer, IndigenousPerson, IndigenousElder, IndigenousHealer, IndigenousStargazer.<br />
<br />
orbit - Orbit: Inferno, Inner, Habitable, Outer or Frigid also Any, Harsh (Inferno or Frigid), Mild (Inner, Habitable, or Outer), Uninhabitable (not Habitable).<br />
<br />
quality - Quality in the range 1 to 255.<br />
<br />
range - Communication range, not case sensitive.<br />
<br />
real - Signed real value.<br />
<br />
scenario - Avatar startup scenario, not case sensitive: Reach for the Stars, Citizen of the Galaxy, The Savage State, Lost Atlantis.<br />
<br />
sector - A variable that references a sector atom.<br />
<br />
sentient - A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
<br />
ship - A variable that references a spacecraft atom, could be a station.<br />
<br />
stage - Growth stage of creature, not case sensitive: Mature, Juvenile.<br />
<br />
stance - Political stance, not case sensitive. Empire, Vassal, Friend, Neutral, Enemy. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
<br />
station - Station that can be occupied, not case sensitive: Command, Citizen, Designer, Engine, FireControl, Game, Helm, Livestock, Medic, Navigation, Patient, Power, Sensor, Shield, Transporter, Troop, Turret<br />
<br />
system - A variable that references a solar system atom.<br />
<br />
text - Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
<br />
unit - A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
<br />
vehicle - A variable that references a vehicle atom.<br />
<br />
void - A function return value placeholder indicating a function does not return anything.<br />
<br />
world - A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
goto blockName - Unconditional branch to a block of the story.<br />
<br />
if(bool) blockName - In the catalyst block, 'if' tests determine when the story can start for an avatar and which block will begin the story.<br />
<br />
In body blocks, 'if' tests determine when to branch to another block of the story.<br />
<br />
Each block of the story, including the catalyst, may contain more than one 'if' to test and branch based on different conditions. The story engine checks the 'if' conditions of the current block every 10 seconds. Each 'if' is tested in the order it appears in the script. The first 'if' to return true results in a branch to its block of the story.<br />
<br />
choiceValue choiceMade() - Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
bool dateIsChristmas() - Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
int secondsElapsed() - Returns the number of seconds that have passed since the current story block was started.<br />
<br />
bool wait(int) - Returns true if 'int' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the 'storyDroppable' function.<br />
<br />
void storyAuthor(text) - Identifies the author of the story. Required in catalyst block.<br />
<br />
void storyAutoRepeat() - Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyAutoRepeatUntilComplete() - Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed.<br />
<br />
A story that is dropped is not considered to be completed.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyAutoStart() - Enables the story to automatically start once, based on the catalyst.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyBrief(text) - Gives a brief description of the story. Required in catalyst block.<br />
<br />
void storyDroppable(bool) - Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script.<br />
<br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story.<br />
<br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way.<br />
<br />
void storyInterval(int) - Specifies the time interval in minutes before the story can start again.<br />
<br />
The time interval starts when the story terminates, whether by finishing or by dropping.<br />
<br />
void storyTitle(text) - Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
<br />
Avatar functions operate on the avatar atom for whom the story is running.<br />
<br />
avatar avatar() - Returns the atom id of the avatar executing the story.<br />
<br />
bool avatarConstructedBuildingHabitable(building) - Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
bool avatarConstructedBuildingHarsh(building) - Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
void avatarCreditGovtDebt(real) - Credits the person's government debt account with a number of cronodollars.<br />
<br />
bool avatarCurrentItem(commodity) - Test if the person's current item is a commodity.<br />
<br />
atom avatarEnvironment() - Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
int avatarEVAMinutes() - Returns the number of minutes of EVA experience.<br />
<br />
bool avatarHadItem(commodity) - Test if the person's gear has ever contained a commodity.<br />
<br />
bool avatarHasFood() - Test if the person's gear contains any food.<br />
<br />
bool avatarHasItem(commodity) - Test if the person's gear contains a commodity.<br />
<br />
bool avatarHasItemInHand(commodity) - Test if the person is holding a commodity in their hand.<br />
<br />
bool avatarHasItemInHandSpecific(commodity,quality,empire,text) - Test if the person is holding a specific commodity in their hand. 'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
bool avatarHasItemSpecific(commodity,quality,empire,text) - Test if the person's gear contains a very specific commodity. 'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
bool avatarInCity() - Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
bool avatarInitScenario(scenario) - Test if the person started the game using a specified 'scenario'.<br />
<br />
bool avatarInOrbit() - Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
bool avatarInStudio() - Test if the person is inside a design studio instance.<br />
<br />
bool avatarInVehicle(commodity) - Test if the person is inside a certain type of vehicle.<br />
<br />
bool avatarInVehicleMoving(commodity) - Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
bool avatarInVehicleOnGround(commodity) - Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
int avatarItemCount(commodity) - Returns the amount of a commodity possessed by the avatar.<br />
<br />
void avatarItemMakePermanent(commodity,quality,empire,text) - Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void avatarItemSetDropOnDeath(int,commodity,quality,empire,text) - Sets the 'drop' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. 'bool' is the new state.<br />
<br />
bool avatarLineageAvatar() - Returns true if the avatar's lineage is a regular avatar.<br />
<br />
bool avatarLineageDemiavatar() - Returns true if the avatar's lineage is demiavatar.<br />
<br />
bool avatarLineageHighborn() - Returns true if the avatar's lineage is highborn.<br />
<br />
int avatarOnLineMinutes() - Returns number of minutes the person has been on line.<br />
<br />
bool avatarStoryCompleted(int) - Test if the person has completed a particular story script id.<br />
<br />
int avatarStoryLastResult(int) - Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
void avatarStoryResult(int) - Stores the result for the current story in an avatar's memory. 'int' is result, in the range 0 to 255. <br />
<br />
int avatarVehicleMinutes(commodity) - Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the 'atom' argument is not valid, all functions return quietly.<br />
<br />
atom atom(int) - Casts 'int' to be an atom identifier.<br />
<br />
city atomCity(atom) - Returns the city capitol building atom whose jurisdiction controls the building site that contains 'atom'.<br />
<br />
The result is 0 if the atom's current building is not part of a city.<br />
<br />
If 'atom' is on a road, the capitol building whose jurisdiction contains 'atom' is returned.<br />
<br />
The result is 0 if 'atom' is not at a building site or on a road in a city.<br />
<br />
void atomComm(atom,channel,range,text) - Atom sends a message on a comm channel.<br />
<br />
void atomCommChannelToAtom(atom,atom,channel) - Atom opens a channel to the other atom.<br />
<br />
void atomCommChoice(atom,channel,range,choiceValue,text) - Atom says a choice on a comm channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage) - Creates a character near 'atom', subordinate to the same parent as 'atom'. Will not create the charater if 'atom' is in a vehicle.<br />
<br />
Arguments:<br />
<br />
'angle' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind.<br />
<br />
'real' is a distance in meters.<br />
<br />
The new character's location will be in the domain of 'atom's parent. i.e. on the same ship or world. The path from 'atom' to the new character's location will be unobstructed. The final starting location will be no farther than 'real' meters from 'atom', even if it means starting on top of 'atom'. It will be closer than 'real' if the path to the starting location from the 'atom' is obstructed.<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
real atomDistanceToAtom(atom,atom) - Returns the distance between two atoms, in meters.<br />
<br />
int atomEmpire(atom) - Returns id value of an atom's empire. 0 if none.<br />
<br />
atom atomFindBuilding(atom,building,int,stance,int) - Locates a building of a specific 'building' type, subordinate to 'atom'.<br />
<br />
Arguments:<br />
<br />
'int' is under construction requirement 0=yes, 1=no, 2=ok,<br />
<br />
'stance' and 'int' are used to check the atom empire's stance toward the building's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
vehicle atomFindVehicle(atom,commodity,int) - Locates a vehicle of a specific 'commodity' type, subordinate to 'atom'. 'int' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care.<br />
<br />
bool atomHasAtom(atom,atom) - Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
bool atomHasBuilding(atom,building,int,stance,int) - Test recursively if an atom has a building type. The atom might typically be a system, world or city.<br />
<br />
Arguments:<br />
<br />
'int' is under construction requirement 0=yes, 1=no, 2=ok,<br />
<br />
'stance' and 'int' are used to check the atom empire's stance toward the building's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
bool atomInSystem(atom,system) - Returns true if atom is in a solar system.<br />
<br />
bool atomIsAtom(atom,atom) - Returns true if atom == atom and atom is valid.<br />
<br />
sector atomSector(atom) - Returns the sector atom that contains 'atom'.<br />
<br />
bool atomValid(atom) - Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
world atomWorld(atom) - Returns the world atom that contains 'atom'. 'atom' may be subordinate to the world at any subatom level or distance, possibly in space.<br />
<br />
Returns 'atom' if atom is a world.<br />
<br />
ll atomWorldLL(atom) - Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time.<br />
<br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
bool blueprintSpacecraftLoad(int) - Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story.<br />
<br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously.<br />
<br />
void characterDepart(character) - Causes a character to depart the scene. The character disappears instantly with no visual effect.<br />
<br />
void characterDie(character) - Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time.<br />
<br />
void characterEquipFromCity(character,gearslot,commodity,text) - Transfer an item to a character's gear from the inventory of the current city.<br />
<br />
Arguments:<br />
<br />
'text' is an optional inscription to place on the item.<br />
<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
void characterSetIndestructible(character,bool) - Sets indestructible state of a character.<br />
<br />
void characterWantItem(character,commodity) - Causes the character to want a specific commodity.<br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel.<br />
<br />
void characterWantItemSpecific(character,commodity,quality,empire,text) - Causes the character to want a very specific commodity.<br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom.<br />
<br />
vehicle cityFindNewVehicle(city,commodity) - Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
bool cityHasBuilding(city,building,int) - Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building.<br />
<br />
bool cityHasFood(city) - Test if a city has any food in any of its buildings.<br />
<br />
bool cityHasItem(city,commodity) - Test if a city has a commodity in any of its buildings.<br />
<br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
bool cityHasPower(city) - Test if a city has any electricity.<br />
<br />
Arguments:<br />
<br />
'city' can be any building.<br />
<br />
int cityItemCount(city,commodity) - Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
int cityPopulation(city) - Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions.<br />
<br />
bool creatureIsDyingOrDead(creature) - Test if the creature's body is dying or dead.<br />
<br />
void creatureSetHealth(creature,int) - Sets health level of a creature.<br />
<br />
Arguments:<br />
<br />
'int' is the health level as a percentage, 0 to 100.<br />
<br />
void creatureSetMouth(creature,visage,visage) - Sets 'visage' pose of a creature.<br />
<br />
When the first 'visage' pose is an animated pose, the second 'visage' pose is set when the animation completes.<br />
<br />
void creatureSetVisage(creature,visage) - Sets 'visage' of a creature.<br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar.<br />
<br />
world findGasGiant(orbit) - Locates a gas giant in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findMoon(orbit) - Locates a moon in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findPlanet(orbit,int) - Locates a planet in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
'int' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
world findRing(orbit) - Locates a ring around a world in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findRingWorld() - Locates a ringworld arc section in the current environment.<br />
<br />
Arguments:<br />
<br />
Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector.<br />
<br />
text hengeSystemName(system) - Returns the name of a solar system that is known to contain a henge, as returned by the 'sectorHengeSystem' function.<br />
<br />
worldcat hengeSystemWorld(system,int) - Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
world hengeWorld(worldcat) - Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world.<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
ll hengeWorldLL(worldcat) - Returns the longitude latitude of a henge if there is one.<br />
<br />
Arguments:<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
text hengeWorldName(worldcat) - Returns the name assigned to a henge world, given its catalog name.<br />
<br />
bool hengeWorldPortalActive(worldcat,ll) - Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal.<br />
<br />
Arguments:<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions.<br />
<br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that.<br />
<br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom.<br />
<br />
void itemArmWeapon(item,unit,empire) - Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive.<br />
<br />
Arguments:<br />
<br />
'unit' is the unit who armed the weapon.<br />
<br />
'empire' is the empire who armed the weapon.<br />
<br />
void itemCreateContent(item,bool,int,commodity,quality,empire,text) - Creates a new item inside 'item', which is expected to be a container.<br />
<br />
Arguments:<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'int' is condition percent, 1 to 100.<br />
<br />
If 'text' is not blank, it is inscribed onto the item.<br />
<br />
void itemDetonate(item) - Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
void itemMakePermanent(item) - Changes a story item into a permanent item.<br />
<br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
item itemOnGround(commodity,real) - Locates an item on the ground nearby.<br />
<br />
Arguments:<br />
<br />
'real' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
item itemOnGroundSpecific(int,commodity,quality,empire,text) - Locates a specific item on the ground nearby.<br />
<br />
Arguments:<br />
<br />
'int' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void itemSetDropOnDeath(item,int) - Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop.<br />
<br />
Arguments:<br />
<br />
'int' is the new state.<br />
<br />
void itemSetMessage(item,text) - Sets the message of an item, such as a beacon. This is not the inscription.<br />
<br />
Arguments:<br />
<br />
'text' is the new message.<br />
<br />
void itemSetState(item,int) - Sets the state of an item, such as the on/off state of a light or musical instrument.<br />
<br />
Arguments:<br />
<br />
'int' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source.<br />
<br />
void narratorHint(text) - Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window.<br />
<br />
void narratorImage(file,text,text) - Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window.<br />
<br />
void narratorSay(text) - Sends a text message on the narrator comm channel.<br />
<br />
void narratorSayAudio(file,text) - Sends audio and an optional text message on the narrator comm channel.<br />
<br />
void narratorSayChoice(choiceValue,text) - Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
void narratorTitle(text) - Sends a text message on the narrator comm channel formatted as a title.<br />
<br />
void narratorVideo(file,text) - Sends video and an optional text message on the narrator comm channel.<br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled.<br />
<br />
void npcSetRole(npcrole) - Changes the role of an npc.<br />
<br />
The role of an npc cannot be changed while they hold a berth.<br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions.<br />
<br />
bool sectorHasHengeSystem(sector,int) - Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
system sectorHengeSystem(sector,int) - Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city.<br />
<br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions.<br />
<br />
void sentientAttackUnit(sentient,unit) - Order a sentient to attack a unit.<br />
<br />
void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text) - Create an item in a sentient's gear.<br />
<br />
Arguments:<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'text' is inscribed on the item if not blank.<br />
<br />
item sentientDropGear(sentient,gearslot) - Drops the item at a sentient's gear slot.<br />
<br />
item sentientDropGearItem(sentient,commodity) - Drops an item from a sentient's gear.<br />
<br />
void sentientFireWeapon(sentient) - Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
void sentientFollowAvatar(sentient) - Order a sentient to follow the person.<br />
<br />
void sentientFollowSentient(sentient,sentient) - Order a sentient to follow another sentient.<br />
<br />
void sentientGetItem(sentient,item) - Order a sentient to pick an item up off the ground.<br />
<br />
void sentientGoToAvatar(sentient) - Order a sentient to go to the avatar.<br />
<br />
void sentientGoToLL(sentient,ll) - Order a sentient to go to a longitude latitude.<br />
<br />
void sentientGoToLLExactly(sentient,ll) - Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
void sentientGoToRoom(sentient,text) - Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
void sentientGoToUnit(sentient,unit) - Order a sentient to go to a unit.<br />
<br />
bool sentientHasItem(sentient,commodity) - Test if the sentient possesses a specific commodity.<br />
<br />
bool sentientHasItemSpecific(sentient,commodity,quality,empire,text) - Test if the sentient's gear contains a very specific commodity.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void sentientHengeCeremony(sentient,ll) - Order a sentient to perform the henge ceremony, if a henge is found near 'll'.<br />
<br />
void sentientItemMakePermanent(sentient,commodity,quality,empire,text) - Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text) - Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop.<br />
<br />
Arguments:<br />
<br />
'bool' is the new state.<br />
<br />
void sentientMoveBack(sentient,real) - Order a sentient to move backward a distance specified in meters.<br />
<br />
void sentientMoveForward(sentient,real) - Order a sentient to move forward a distance specified in meters.<br />
<br />
void sentientSay(sentient,text,visage) - Order a sentient being to say a message on the Voice channel.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayAudio(sentient,file,text,visage) - Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayChoice(sentient,choiceValue,text,visage) - Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayImage(sentient,file,text,text,visage) - Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
<br />
Arguments:<br />
<br />
'text' args are image title and text to say.<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayTo(sentient,atom,text,visage) - Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSellGearItem(sentient,atom,commodity,int) - Offers an item from a sentient's gear on the Voice channel.<br />
<br />
Arguments:<br />
<br />
'atom' is the target of the sale, causing sentient to turn to face them; it can be null.<br />
<br />
The best Q 'commodity' possessed by 'sentient' is offered for sale.<br />
<br />
'int' is the price, which can be 0 to offer it for free.<br />
<br />
void sentientStay(sentient) - Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions.<br />
<br />
void shipChargeCapacitor(ship) - Fills the capacitor to 100% on a ship.<br />
<br />
void shipChargeShields(ship) - Fills the shields to 100% on a ship.<br />
<br />
character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage) - Creates a character aboard 'ship'.<br />
<br />
Arguments:<br />
<br />
'int' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location.<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
void shipCreateCrew(ship,dna) - Fills all empty crew positions on a ship.<br />
<br />
Arguments:<br />
<br />
'dna' is used to create the new crew members.<br />
<br />
void shipCreateTroops(ship,dna) - Fills all empty troop positions on a ship.<br />
<br />
Arguments:<br />
<br />
'dna' is used to create the new troops.<br />
<br />
sentient shipFindAI(ship,npcrole) - Locates an AI controlled sentient aboard a ship.<br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them.<br />
<br />
sentient shipFindAIInRoom(ship,npcrole,text) - Locates an AI controlled sentient aboard a ship, in a specific room.<br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
npc shipFindNpc(ship,npcrole) - Locates an npc aboard a ship.<br />
<br />
Does not find demiavatars.<br />
<br />
npc shipFindNpcInRoom(ship,npcrole,text) - Locates an npc aboard a ship, in a specific room.<br />
<br />
Does not find demiavatars.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
void shipInteriorLight(ship,int) - Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
void shipManeuverDrive(ship,int) - Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
void shipPowerPlant(ship,int) - Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
void shipRefuel(ship,int) - Fills the fuel cells to 100% on a ship with 'int' quality fuel.<br />
<br />
void shipRetreat(ship) - Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
void shipShields(ship,int) - Sets a ship's shield state. 0=off, 1=on.<br />
<br />
creature shipStationOccupant(ship,station) - Returns a creature who is controlling or occupying a station on the ship.<br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned.<br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled.<br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned.<br />
<br />
Designer returns an avatar in a designer instance.<br />
<br />
Livestock returns an animal.<br />
<br />
creature shipStationOccupantInRoom(ship,station,text) - Returns a creature who is controlling or occupying a station on the ship.<br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned.<br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled.<br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned.<br />
<br />
Designer returns an avatar in a designer instance.<br />
<br />
Livestock returns an animal.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft.<br />
<br />
ship unitAboardShip(unit) - Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
bool unitAtBuilding(unit,building) - Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
world unitAtWorld(unit) - Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
bool unitInOrbit(unit) - Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
ship unitInsideShip(unit) - Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
text unitRoomName(unit) - Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room.<br />
<br />
ship unitStationInTradeRange(unit,stance,int) - Returns station that is within trade range of the unit.<br />
<br />
Arguments:<br />
<br />
'stance' and 'int' are used to check the station empire's stance toward the unit's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions.<br />
<br />
void vehicleRefuel(vehicle) - Fills the fuel cells to 100% on a vehicle.<br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions.<br />
<br />
bool worldAtmosphereBreathable(world) - Test if the world atmosphere is breathable.<br />
<br />
bool worldClaimed(world) - Test if the world is claimed by any empire.<br />
<br />
bool worldClaimedBy(world,empire) - Test if the world is claimed by 'empire'.<br />
<br />
character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage) - Creates a character on 'world' at 'll'.<br />
<br />
Arguments:<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
void worldCreateIndigenous(world,ll,dna) - Create an indigenous village on a world. Establishes the indigenous DNA using 'dna' if it is not already set.<br />
<br />
item worldCreateItem(world,ll,bool,commodity,quality,empire,text) - Create an item on a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the item.<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'text' is inscribed on the item if not blank.<br />
<br />
ship worldCreateShip(world,ll,real,int,quality,empire,text) - Create a spaceship at a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed.<br />
<br />
'real' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
<br />
'int' is the design id of the ship.<br />
<br />
'empire' is the empire who owns the spaceship.<br />
<br />
'text' is the name of the ship, set randomly if this is blank.<br />
<br />
vehicle worldCreateVehicle(world,ll,commodity,quality,empire) - Create a vehicle on a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed.<br />
<br />
'empire' is the empire who owns the vehicle.<br />
<br />
bool worldHasCity(world) - Test if the world has any cities at all.<br />
<br />
void worldHengeCeremony(world,ll,int) - Sets the state of the henge ceremony, if there is a henge.<br />
<br />
Arguments:<br />
<br />
'int' is ceremony state: 1=Active, 0=inactive.<br />
<br />
int worldHydrographics(world) - Returns the world's water percentage in the range 0 to 100.<br />
<br />
bool worldIsGasGiant(world) - Test if the world is a gas giant.<br />
<br />
bool worldIsMoon(world) - Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
bool worldIsPlanet(world) - Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
bool worldIsPlanetoid(world) - Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
bool worldIsRing(world) - Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
bool worldIsRingworld(world) - Test if the world is a ringworld arc section.<br />
<br />
bool worldIsTitan(world) - Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
ll worldLandLocation(world,real,real) - Returns a location that is on land.<br />
<br />
Arguments:<br />
<br />
First 'real' is minimum altitude MSL, in meters.<br />
<br />
Second 'real' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
ll worldLandLocationNear(world,ll,real,real,real) - Returns a location that is on land somewhere near 'll'.<br />
<br />
Arguments:<br />
<br />
First 'real' is minimum altitude MSL, in meters.<br />
<br />
Second 'real' is minimum distance from 'll', in meters.<br />
<br />
Third 'real' is maximum distance from 'll', in meters.<br />
<br />
bool worldOrbitFrigid(world) - Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitHabitable(world) - Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitInferno(world) - Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitInner(world) - Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitOuter(world) - Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
ll worldRelativeLL(world,ll,real,real) - Returns a location that is offset from another location.<br />
<br />
Arguments:<br />
<br />
'll' is the reference location.<br />
<br />
'real,real' is horizontal, vertical offset, in meters.<br />
<br />
void worldScheduleAsteroid(world, int) - Schedules an asteroid to destroy the world in 'int' minutes.<br />
<br />
Arguments:<br />
<br />
'world' is the world that will be the target of the asteroid.<br />
<br />
'int' is the number of minutes before impact. Must be at least 1.<br />
<br />
bool worldSupportsAnimals(world) - Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals.<br />
<br />
All worlds that support animals also support plants.<br />
<br />
bool worldSupportsPlants(world) - Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants.<br />
<br />
Worlds that support plants do not necessarily support animals.</div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_Mantifries.png&diff=9841File:C Mantifries.png2021-02-19T15:45:34Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_Mantispice.png&diff=9840File:C Mantispice.png2021-02-19T15:45:12Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:C_Mantifloss.png&diff=9839File:C Mantifloss.png2021-02-19T15:44:40Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:UniverseMap.png&diff=9837File:UniverseMap.png2021-02-18T21:48:46Z<p>Haxus: Haxus uploaded a new version of File:UniverseMap.png</p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=File:UniverseMap.png&diff=9836File:UniverseMap.png2021-02-18T21:46:08Z<p>Haxus: </p>
<hr />
<div></div>Haxushttps://hazeron.com:443/wiki/index.php?title=Universe&diff=9833Universe2021-02-18T21:16:54Z<p>Haxus: /* Galaxies */</p>
<hr />
<div>[[File:UniverseMap.png|425px|right]]<br />
Shores of Hazeron simulates a small universe containing twenty one galaxies.<br />
<br />
Intergalactic [[Wormhole|wormhole]]s exist at the core of most galaxies. These wormholes interconnect a galaxy with one or more other galaxies. This is similar to the network of wormholes that interconnects [[Solar_System|solar system]]s. <br />
<br />
A [[spacecraft]] equipped with a [[Wormhole_Drive|wormhole PNN FTL drive]] is needed to traverse intergalactic wormholes. Immense gravitational forces exist near the [[Supermassive_Black_Hole|supermassive black hole]] hosting these wormholes. Entry and exit from them is a dangerous experience, requiring patience and a good feel for flying the ship. AI crew members cannot do it.<br />
<br />
Galaxies are extremely far apart from each other. It is not possible to [[deadhead]] from one galaxy to another.<br />
<br />
==Galaxies==<br />
{|class="wikitable sortable"<br />
! Name<br />
! Picture<br />
! Diameter<br />
! Flags<br />
|-<br />
| Andromeda Rising<br />
| [[File:Galaxy_AndromedaRising.png|200px|Andromeda Rising]]<br />
| style="text-align:right;" | 2'800pc<br />
||<br />
* Pirate Home ([[Vilmorti]])<br />
|-<br />
| Black Hole<br />
| [[File:Galaxy_BlackHole.png|200px|Black Hole]]<br />
| style="text-align:right;" | 1'200pc<br />
||<br />
* Pirate Home ([[Malacon]])<br />
* Pirate Home ([[Syth]])<br />
|-<br />
| Core<br />
| [[File:Galaxy_Core.png|200px|Core]]<br />
| style="text-align:right;" | 2'500pc<br />
||<br />
* Pirate Home ([[Malacon]])<br />
* Pirate Home ([[Syth]])<br />
|-<br />
| Crown of Othon<br />
| [[File:Galaxy_CrownOfOthon.png|200px|Crown of Othon]]<br />
| style="text-align:right;" | 5'600pc<br />
||<br />
* Pirate Home ([[Dendrae]])<br />
|-<br />
| Dyrathon's Retreat<br />
| [[File:Galaxy_DyrathonsRetreat.png|200px|Dyrathon's Retreat]]<br />
| style="text-align:right;" | 2'200pc<br />
||<br />
* Pirate Home ([[Balorite]])<br />
* Pirate Home ([[Vreen]])<br />
|-<br />
| Edge of the Rift<br />
| [[File:Galaxy_EdgeOfTheRift.png|200px|Edge of the Rift]]<br />
| style="text-align:right;" | 2'100pc<br />
||<br />
* Pirate Home ([[Ogar]])<br />
|-<br />
| Falla's Embrace<br />
| [[File:Galaxy_FallasEmbrace.png|200px|Falla's Embrace]]<br />
| style="text-align:right;" | 2'800pc<br />
||<br />
* Pirate Home ([[Vilmorti]])<br />
|-<br />
| Fallen Legions of Muturon<br />
| [[File:Galaxy_FallenLegionsOfMuturon.png|200px|Fallen Legions of Muturon]]<br />
| style="text-align:right;" | 1'400pc<br />
||<br />
* Pirate Home ([[Kla'tra]])<br />
* Pirate Home ([[Myntaka]])<br />
|-<br />
| Heart of Victorus<br />
| [[File:Galaxy_HeartOfVictorus.png|200px|Heart of Victorus]]<br />
| style="text-align:right;" | 4'700pc<br />
||<br />
* Pirate Home ([[Dendrae]])<br />
|-<br />
| House Zanathar<br />
| [[File:Galaxy_HouseZanathar.png|200px|House Zanathar]]<br />
| style="text-align:right;" | 2'100pc<br />
||<br />
* Pirate Home ([[Akson]])<br />
* Pirate Home ([[Tassad]])<br />
|-<br />
| Indigo Sea<br />
| [[File:Galaxy_IndigoSea.png|200px|Indigo Sea]]<br />
| style="text-align:right;" | 1'800pc<br />
||<br />
* Pirate Home ([[Haxu]])<br />
* Pirate Home ([[Otari]])<br />
|-<br />
| In'kar Border Region<br />
| [[File:Galaxy_InkarBorderRegion.png|200px|In'kar Border Region]]<br />
| style="text-align:right;" | 3'200pc<br />
||<br />
* Pirate Home ([[Ogar]])<br />
|-<br />
| Milky Way<br />
| [[File:MilkyWay.png|200px|Milky Way]]<br />
| style="text-align:right;" | 3'500pc<br />
||<br />
|-<br />
| [[Muturon Encounter]]<br />
| [[File:Galaxy_MuturonEncounter.png|200px|Muturon Encounter]]<br />
| style="text-align:right;" | 2'000pc<br />
||<br />
* Pirate Home ([[Kla'tra]])<br />
* Pirate Home ([[Myntaka]])<br />
|-<br />
| Ransuul's Flaming Sword<br />
| [[File:Galaxy_RansuulsFlamingSword.png|200px|Ransuul's Flaming Sword]]<br />
| style="text-align:right;" | 1'200pc<br />
||<br />
* Pirate Home ([[Haxu]])<br />
* Pirate Home ([[Otari]])<br />
|-<br />
| Seven Ten<br />
| [[File:Galaxy_SevenTen.png|200px|Seven Ten]]<br />
| style="text-align:right;" | 2'600pc<br />
||<br />
* Pirate Home ([[Akson]])<br />
* Pirate Home ([[Tassad]])<br />
|-<br />
| Shores of Hazeron<br />
| [[File:Galaxy_ShoresOfHazeron.png|200px|Shores of Hazeron]]<br />
| style="text-align:right;" | 5'000pc<br />
||<br />
* Pirate Home ([[Seledon]])<br />
* Primeval World<br />
* Home World<br />
* Solo Design Environment<br />
|-<br />
| Thustra's Eye<br />
| [[File:Galaxy_ThustrasEye.png|200px|Thustra's Eye]]<br />
| style="text-align:right;" | 4'100pc<br />
||<br />
* Pirate Home ([[Zuul]])<br />
|-<br />
| Veil of Targoss<br />
| [[File:Galaxy_VeilOfTargoss.png|200px|Veil of Targoss]]<br />
| style="text-align:right;" | 3'000pc<br />
||<br />
* Pirate Home ([[Seledon]])<br />
* Primeval World<br />
* Home World<br />
|-<br />
| Vreenox Eclipse<br />
| [[File:Galaxy_VreenoxEclipse.png|200px|Vreenox Eclipse]]<br />
| style="text-align:right;" | 1'500pc<br />
||<br />
* Pirate Home ([[Balorite]])<br />
* Pirate Home ([[Vreen]])<br />
|-<br />
| Vulcan's Forge<br />
| [[File:Galaxy_VulcansForge.png|200px|Vulcan's Forge]]<br />
| style="text-align:right;" | 2'900pc<br />
||<br />
* Pirate Home ([[Zuul]])<br />
|}<br />
<br />
===Galaxy Flags===<br />
* '''Home World'''<br />
*: Galaxies with the ''Home World'' flag can be selected as a starting galaxy during [[Avatar_Creation|avatar creation]].<br />
* '''Pirate Home'''<br />
*: [[Pirate]] empires are most commonly encountered in their home galaxy. Their prevalence in other galaxies diminishes with distance from their home galaxy.<br />
* '''Primeval World'''<br />
*: When [[Primeval World]] is launched, a galaxy with the ''Primeval World'' flag is randomly selected in order to generate the [[Solar_System|solar system]].<br />
* '''Solo Design Environment'''<br />
*: When the offline [[designer]] is launched, a galaxy with the ''Solo Design Environment'' flag is randomly selected in order to generate the skybox.<br />
<br />
<br />
[[Category:Science]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Universe&diff=9832Universe2021-02-18T21:14:13Z<p>Haxus: /* Dimensions */</p>
<hr />
<div>[[File:UniverseMap.png|425px|right]]<br />
Shores of Hazeron simulates a small universe containing twenty one galaxies.<br />
<br />
Intergalactic [[Wormhole|wormhole]]s exist at the core of most galaxies. These wormholes interconnect a galaxy with one or more other galaxies. This is similar to the network of wormholes that interconnects [[Solar_System|solar system]]s. <br />
<br />
A [[spacecraft]] equipped with a [[Wormhole_Drive|wormhole PNN FTL drive]] is needed to traverse intergalactic wormholes. Immense gravitational forces exist near the [[Supermassive_Black_Hole|supermassive black hole]] hosting these wormholes. Entry and exit from them is a dangerous experience, requiring patience and a good feel for flying the ship. AI crew members cannot do it.<br />
<br />
Galaxies are extremely far apart from each other. It is not possible to [[deadhead]] from one galaxy to another.<br />
<br />
==Galaxies==<br />
{|class="wikitable sortable"<br />
! Name<br />
! Picture<br />
! Diameter<br />
! Flags<br />
! Dimension<br />
|-<br />
| Andromeda Rising<br />
| [[File:Galaxy_AndromedaRising.png|200px|Andromeda Rising]]<br />
| style="text-align:right;" | 2'800pc<br />
||<br />
* Pirate Home ([[Vilmorti]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Black Hole<br />
| [[File:Galaxy_BlackHole.png|200px|Black Hole]]<br />
| style="text-align:right;" | 1'200pc<br />
||<br />
* Pirate Home ([[Malacon]])<br />
* Pirate Home ([[Syth]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Core<br />
| [[File:Galaxy_Core.png|200px|Core]]<br />
| style="text-align:right;" | 2'500pc<br />
||<br />
* Pirate Home ([[Malacon]])<br />
* Pirate Home ([[Syth]])<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| Crown of Othon<br />
| [[File:Galaxy_CrownOfOthon.png|200px|Crown of Othon]]<br />
| style="text-align:right;" | 5'600pc<br />
||<br />
* Pirate Home ([[Dendrae]])<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| Dyrathon's Retreat<br />
| [[File:Galaxy_DyrathonsRetreat.png|200px|Dyrathon's Retreat]]<br />
| style="text-align:right;" | 2'200pc<br />
||<br />
* Pirate Home ([[Balorite]])<br />
* Pirate Home ([[Vreen]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Edge of the Rift<br />
| [[File:Galaxy_EdgeOfTheRift.png|200px|Edge of the Rift]]<br />
| style="text-align:right;" | 2'100pc<br />
||<br />
* Pirate Home ([[Ogar]])<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| Falla's Embrace<br />
| [[File:Galaxy_FallasEmbrace.png|200px|Falla's Embrace]]<br />
| style="text-align:right;" | 2'800pc<br />
||<br />
* Pirate Home ([[Vilmorti]])<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| Fallen Legions of Muturon<br />
| [[File:Galaxy_FallenLegionsOfMuturon.png|200px|Fallen Legions of Muturon]]<br />
| style="text-align:right;" | 1'400pc<br />
||<br />
* Pirate Home ([[Kla'tra]])<br />
* Pirate Home ([[Myntaka]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Heart of Victorus<br />
| [[File:Galaxy_HeartOfVictorus.png|200px|Heart of Victorus]]<br />
| style="text-align:right;" | 4'700pc<br />
||<br />
* Pirate Home ([[Dendrae]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| House Zanathar<br />
| [[File:Galaxy_HouseZanathar.png|200px|House Zanathar]]<br />
| style="text-align:right;" | 2'100pc<br />
||<br />
* Pirate Home ([[Akson]])<br />
* Pirate Home ([[Tassad]])<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| Indigo Sea<br />
| [[File:Galaxy_IndigoSea.png|200px|Indigo Sea]]<br />
| style="text-align:right;" | 1'800pc<br />
||<br />
* Pirate Home ([[Haxu]])<br />
* Pirate Home ([[Otari]])<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| In'kar Border Region<br />
| [[File:Galaxy_InkarBorderRegion.png|200px|In'kar Border Region]]<br />
| style="text-align:right;" | 3'200pc<br />
||<br />
* Pirate Home ([[Ogar]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Milky Way<br />
| [[File:MilkyWay.png|200px|Milky Way]]<br />
| style="text-align:right;" | 3'500pc<br />
||<br />
| style="background-color:gold;" | Earth<br />
|-<br />
| [[Muturon Encounter]]<br />
| [[File:Galaxy_MuturonEncounter.png|200px|Muturon Encounter]]<br />
| style="text-align:right;" | 2'000pc<br />
||<br />
* Pirate Home ([[Kla'tra]])<br />
* Pirate Home ([[Myntaka]])<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| Ransuul's Flaming Sword<br />
| [[File:Galaxy_RansuulsFlamingSword.png|200px|Ransuul's Flaming Sword]]<br />
| style="text-align:right;" | 1'200pc<br />
||<br />
* Pirate Home ([[Haxu]])<br />
* Pirate Home ([[Otari]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Seven Ten<br />
| [[File:Galaxy_SevenTen.png|200px|Seven Ten]]<br />
| style="text-align:right;" | 2'600pc<br />
||<br />
* Pirate Home ([[Akson]])<br />
* Pirate Home ([[Tassad]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Shores of Hazeron<br />
| [[File:Galaxy_ShoresOfHazeron.png|200px|Shores of Hazeron]]<br />
| style="text-align:right;" | 5'000pc<br />
||<br />
* Pirate Home ([[Seledon]])<br />
* Primeval World<br />
* Home World<br />
* Solo Design Environment<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Thustra's Eye<br />
| [[File:Galaxy_ThustrasEye.png|200px|Thustra's Eye]]<br />
| style="text-align:right;" | 4'100pc<br />
||<br />
* Pirate Home ([[Zuul]])<br />
| style="background-color:lightblue;" | War<br />
|-<br />
| Veil of Targoss<br />
| [[File:Galaxy_VeilOfTargoss.png|200px|Veil of Targoss]]<br />
| style="text-align:right;" | 3'000pc<br />
||<br />
* Pirate Home ([[Seledon]])<br />
* Primeval World<br />
* Home World<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| Vreenox Eclipse<br />
| [[File:Galaxy_VreenoxEclipse.png|200px|Vreenox Eclipse]]<br />
| style="text-align:right;" | 1'500pc<br />
||<br />
* Pirate Home ([[Balorite]])<br />
* Pirate Home ([[Vreen]])<br />
| style="background-color:lightgreen;" | Peace<br />
|-<br />
| Vulcan's Forge<br />
| [[File:Galaxy_VulcansForge.png|200px|Vulcan's Forge]]<br />
| style="text-align:right;" | 2'900pc<br />
||<br />
* Pirate Home ([[Zuul]])<br />
| style="background-color:lightgreen;" | Peace<br />
|}<br />
<br />
===Galaxy Flags===<br />
* '''Home World'''<br />
*: Galaxies with the ''Home World'' flag can be selected as a starting galaxy during [[Avatar_Creation|avatar creation]].<br />
* '''Pirate Home'''<br />
*: [[Pirate]] empires are most commonly encountered in their home galaxy. Their prevalence in other galaxies diminishes with distance from their home galaxy.<br />
* '''Primeval World'''<br />
*: When [[Primeval World]] is launched, a galaxy with the ''Primeval World'' flag is randomly selected in order to generate the [[Solar_System|solar system]].<br />
* '''Solo Design Environment'''<br />
*: When the offline [[designer]] is launched, a galaxy with the ''Solo Design Environment'' flag is randomly selected in order to generate the skybox.<br />
<br />
<br />
[[Category:Science]]</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9831Story Script2021-02-17T22:30:38Z<p>Haxus: /* World Functions */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
angle - Angle in degrees, in the range -360 to 360.<br />
<br />
animal - A wild animal. A creature that is not sentient.<br />
<br />
atom - A variable that references an atom. Most objects in the game universe are atoms.<br />
<br />
avatar - A variable that references an avatar atom.<br />
<br />
bool - Boolean value returned by calling one or more functions. Can use logical operators '&', '|', and '!'.<br />
<br />
bool - Boolean argument. Accepts 'true' or 'false', not case sensitive.<br />
<br />
building - Building name, not case sensitive.<br />
<br />
city - A variable that references a capitol building atom.<br />
<br />
commodity - Commodity name, not case sensitive.<br />
<br />
channel - Communication channel name. Not limited to standard channel names.<br />
<br />
character - A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
<br />
choiceValue - A value associated with multiple choices, in the range -127 to 127.<br />
<br />
creature - A variable that references a creature atom. Animals and sentients are creature atoms.<br />
<br />
dna - DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a <br />
city.<br />
<br />
empire - Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
<br />
file - A file name found in the same path as the script.<br />
<br />
gearslot - Gear slot, not case sensitive: Hand, Head, Face, Neck, Body, Wear, Limb, Digit, Waist. All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. All creatures have at least one body slot for carrying gear. Wear is specifically for things worn on the body, such as clothing and armor. Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. All creatures have four waist slots; there is a size limit to items placed at the waist.<br />
<br />
gender - Gender of creature, not case sensitive: Male, Female, Asexual, Hermaphrodite.<br />
<br />
hand - Dominant hand of creature, not case sensitive: Left Handed, Right Handed<br />
<br />
int - Signed integer value. Decimals are truncated.<br />
<br />
item - A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
<br />
ll - A variable that contains a longitude latitude coordinate on a world.<br />
<br />
npc - A variable that references an npc atom.<br />
<br />
npcrole - A role for an AI controlled sentient: Citizen, Worker, Passenger, Crew, Troop, Officer, IndigenousPerson, IndigenousElder, IndigenousHealer, IndigenousStargazer.<br />
<br />
orbit - Orbit: Inferno, Inner, Habitable, Outer or Frigid also Any, Harsh (Inferno or Frigid), Mild (Inner, Habitable, or Outer), Uninhabitable (not Habitable).<br />
<br />
quality - Quality in the range 1 to 255.<br />
<br />
range - Communication range, not case sensitive.<br />
<br />
real - Signed real value.<br />
<br />
scenario - Avatar startup scenario, not case sensitive: Reach for the Stars, Citizen of the Galaxy, The Savage State, Lost Atlantis.<br />
<br />
sector - A variable that references a sector atom.<br />
<br />
sentient - A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
<br />
ship - A variable that references a spacecraft atom, could be a station.<br />
<br />
stage - Growth stage of creature, not case sensitive: Mature, Juvenile.<br />
<br />
stance - Political stance, not case sensitive. Empire, Vassal, Friend, Neutral, Enemy. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
<br />
station - Station that can be occupied, not case sensitive: Command, Citizen, Designer, Engine, FireControl, Game, Helm, Livestock, Medic, Navigation, Patient, Power, Sensor, Shield, Transporter, Troop, Turret<br />
<br />
system - A variable that references a solar system atom.<br />
<br />
text - Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
<br />
unit - A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
<br />
vehicle - A variable that references a vehicle atom.<br />
<br />
void - A function return value placeholder indicating a function does not return anything.<br />
<br />
world - A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
goto blockName - Unconditional branch to a block of the story.<br />
<br />
if(bool) blockName - In the catalyst block, 'if' tests determine when the story can start for an avatar and which block will begin the story.<br />
<br />
In body blocks, 'if' tests determine when to branch to another block of the story.<br />
<br />
Each block of the story, including the catalyst, may contain more than one 'if' to test and branch based on different conditions. The story engine checks the 'if' conditions of the current block every 10 seconds. Each 'if' is tested in the order it appears in the script. The first 'if' to return true results in a branch to its block of the story.<br />
<br />
choiceValue choiceMade() - Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
bool dateIsChristmas() - Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
int secondsElapsed() - Returns the number of seconds that have passed since the current story block was started.<br />
<br />
bool wait(int) - Returns true if 'int' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the 'storyDroppable' function.<br />
<br />
void storyAuthor(text) - Identifies the author of the story. Required in catalyst block.<br />
<br />
void storyAutoRepeat() - Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyAutoRepeatUntilComplete() - Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed.<br />
<br />
A story that is dropped is not considered to be completed.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyAutoStart() - Enables the story to automatically start once, based on the catalyst.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyBrief(text) - Gives a brief description of the story. Required in catalyst block.<br />
<br />
void storyDroppable(bool) - Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script.<br />
<br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story.<br />
<br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way.<br />
<br />
void storyInterval(int) - Specifies the time interval in minutes before the story can start again.<br />
<br />
The time interval starts when the story terminates, whether by finishing or by dropping.<br />
<br />
void storyTitle(text) - Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
<br />
Avatar functions operate on the avatar atom for whom the story is running.<br />
<br />
avatar avatar() - Returns the atom id of the avatar executing the story.<br />
<br />
bool avatarConstructedBuildingHabitable(building) - Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
bool avatarConstructedBuildingHarsh(building) - Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
void avatarCreditGovtDebt(real) - Credits the person's government debt account with a number of cronodollars.<br />
<br />
bool avatarCurrentItem(commodity) - Test if the person's current item is a commodity.<br />
<br />
atom avatarEnvironment() - Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
int avatarEVAMinutes() - Returns the number of minutes of EVA experience.<br />
<br />
bool avatarHadItem(commodity) - Test if the person's gear has ever contained a commodity.<br />
<br />
bool avatarHasFood() - Test if the person's gear contains any food.<br />
<br />
bool avatarHasItem(commodity) - Test if the person's gear contains a commodity.<br />
<br />
bool avatarHasItemInHand(commodity) - Test if the person is holding a commodity in their hand.<br />
<br />
bool avatarHasItemInHandSpecific(commodity,quality,empire,text) - Test if the person is holding a specific commodity in their hand. 'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
bool avatarHasItemSpecific(commodity,quality,empire,text) - Test if the person's gear contains a very specific commodity. 'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
bool avatarInCity() - Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
bool avatarInitScenario(scenario) - Test if the person started the game using a specified 'scenario'.<br />
<br />
bool avatarInOrbit() - Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
bool avatarInStudio() - Test if the person is inside a design studio instance.<br />
<br />
bool avatarInVehicle(commodity) - Test if the person is inside a certain type of vehicle.<br />
<br />
bool avatarInVehicleMoving(commodity) - Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
bool avatarInVehicleOnGround(commodity) - Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
int avatarItemCount(commodity) - Returns the amount of a commodity possessed by the avatar.<br />
<br />
void avatarItemMakePermanent(commodity,quality,empire,text) - Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void avatarItemSetDropOnDeath(int,commodity,quality,empire,text) - Sets the 'drop' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. 'bool' is the new state.<br />
<br />
bool avatarLineageAvatar() - Returns true if the avatar's lineage is a regular avatar.<br />
<br />
bool avatarLineageDemiavatar() - Returns true if the avatar's lineage is demiavatar.<br />
<br />
bool avatarLineageHighborn() - Returns true if the avatar's lineage is highborn.<br />
<br />
int avatarOnLineMinutes() - Returns number of minutes the person has been on line.<br />
<br />
bool avatarStoryCompleted(int) - Test if the person has completed a particular story script id.<br />
<br />
int avatarStoryLastResult(int) - Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
void avatarStoryResult(int) - Stores the result for the current story in an avatar's memory. 'int' is result, in the range 0 to 255. <br />
<br />
int avatarVehicleMinutes(commodity) - Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the 'atom' argument is not valid, all functions return quietly.<br />
<br />
atom atom(int) - Casts 'int' to be an atom identifier.<br />
<br />
city atomCity(atom) - Returns the city capitol building atom whose jurisdiction controls the building site that contains 'atom'.<br />
<br />
The result is 0 if the atom's current building is not part of a city.<br />
<br />
If 'atom' is on a road, the capitol building whose jurisdiction contains 'atom' is returned.<br />
<br />
The result is 0 if 'atom' is not at a building site or on a road in a city.<br />
<br />
void atomComm(atom,channel,range,text) - Atom sends a message on a comm channel.<br />
<br />
void atomCommChannelToAtom(atom,atom,channel) - Atom opens a channel to the other atom.<br />
<br />
void atomCommChoice(atom,channel,range,choiceValue,text) - Atom says a choice on a comm channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage) - Creates a character near 'atom', subordinate to the same parent as 'atom'. Will not create the charater if 'atom' is in a vehicle.<br />
<br />
Arguments:<br />
<br />
'angle' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind.<br />
<br />
'real' is a distance in meters.<br />
<br />
The new character's location will be in the domain of 'atom's parent. i.e. on the same ship or world. The path from 'atom' to the new character's location will be unobstructed. The final starting location will be no farther than 'real' meters from 'atom', even if it means starting on top of 'atom'. It will be closer than 'real' if the path to the starting location from the 'atom' is obstructed.<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
real atomDistanceToAtom(atom,atom) - Returns the distance between two atoms, in meters.<br />
<br />
int atomEmpire(atom) - Returns id value of an atom's empire. 0 if none.<br />
<br />
atom atomFindBuilding(atom,building,int,stance,int) - Locates a building of a specific 'building' type, subordinate to 'atom'.<br />
<br />
Arguments:<br />
<br />
'int' is under construction requirement 0=yes, 1=no, 2=ok,<br />
<br />
'stance' and 'int' are used to check the atom empire's stance toward the building's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
vehicle atomFindVehicle(atom,commodity,int) - Locates a vehicle of a specific 'commodity' type, subordinate to 'atom'. 'int' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care.<br />
<br />
bool atomHasAtom(atom,atom) - Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
bool atomHasBuilding(atom,building,int,stance,int) - Test recursively if an atom has a building type. The atom might typically be a system, world or city.<br />
<br />
Arguments:<br />
<br />
'int' is under construction requirement 0=yes, 1=no, 2=ok,<br />
<br />
'stance' and 'int' are used to check the atom empire's stance toward the building's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
bool atomInSystem(atom,system) - Returns true if atom is in a solar system.<br />
<br />
bool atomIsAtom(atom,atom) - Returns true if atom == atom and atom is valid.<br />
<br />
sector atomSector(atom) - Returns the sector atom that contains 'atom'.<br />
<br />
bool atomValid(atom) - Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
world atomWorld(atom) - Returns the world atom that contains 'atom'. 'atom' may be subordinate to the world at any subatom level or distance, possibly in space.<br />
<br />
Returns 'atom' if atom is a world.<br />
<br />
ll atomWorldLL(atom) - Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time.<br />
<br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
bool blueprintSpacecraftLoad(int) - Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story.<br />
<br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously.<br />
<br />
void characterDepart(character) - Causes a character to depart the scene. The character disappears instantly with no visual effect.<br />
<br />
void characterDie(character) - Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time.<br />
<br />
void characterEquipFromCity(character,gearslot,commodity,text) - Transfer an item to a character's gear from the inventory of the current city.<br />
<br />
Arguments:<br />
<br />
'text' is an optional inscription to place on the item.<br />
<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
void characterSetIndestructible(character,bool) - Sets indestructible state of a character.<br />
<br />
void characterWantItem(character,commodity) - Causes the character to want a specific commodity.<br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel.<br />
<br />
void characterWantItemSpecific(character,commodity,quality,empire,text) - Causes the character to want a very specific commodity.<br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom.<br />
<br />
vehicle cityFindNewVehicle(city,commodity) - Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
bool cityHasBuilding(city,building,int) - Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building.<br />
<br />
bool cityHasFood(city) - Test if a city has any food in any of its buildings.<br />
<br />
bool cityHasItem(city,commodity) - Test if a city has a commodity in any of its buildings.<br />
<br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
bool cityHasPower(city) - Test if a city has any electricity.<br />
<br />
Arguments:<br />
<br />
'city' can be any building.<br />
<br />
int cityItemCount(city,commodity) - Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
int cityPopulation(city) - Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions.<br />
<br />
bool creatureIsDyingOrDead(creature) - Test if the creature's body is dying or dead.<br />
<br />
void creatureSetHealth(creature,int) - Sets health level of a creature.<br />
<br />
Arguments:<br />
<br />
'int' is the health level as a percentage, 0 to 100.<br />
<br />
void creatureSetMouth(creature,visage,visage) - Sets 'visage' pose of a creature.<br />
<br />
When the first 'visage' pose is an animated pose, the second 'visage' pose is set when the animation completes.<br />
<br />
void creatureSetVisage(creature,visage) - Sets 'visage' of a creature.<br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar.<br />
<br />
world findGasGiant(orbit) - Locates a gas giant in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findMoon(orbit) - Locates a moon in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findPlanet(orbit,int) - Locates a planet in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
'int' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
world findRing(orbit) - Locates a ring around a world in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findRingWorld() - Locates a ringworld arc section in the current environment.<br />
<br />
Arguments:<br />
<br />
Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector.<br />
<br />
text hengeSystemName(system) - Returns the name of a solar system that is known to contain a henge, as returned by the 'sectorHengeSystem' function.<br />
<br />
worldcat hengeSystemWorld(system,int) - Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
world hengeWorld(worldcat) - Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world.<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
ll hengeWorldLL(worldcat) - Returns the longitude latitude of a henge if there is one.<br />
<br />
Arguments:<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
text hengeWorldName(worldcat) - Returns the name assigned to a henge world, given its catalog name.<br />
<br />
bool hengeWorldPortalActive(worldcat,ll) - Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal.<br />
<br />
Arguments:<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions.<br />
<br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that.<br />
<br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom.<br />
<br />
void itemArmWeapon(item,unit,empire) - Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive.<br />
<br />
Arguments:<br />
<br />
'unit' is the unit who armed the weapon.<br />
<br />
'empire' is the empire who armed the weapon.<br />
<br />
void itemCreateContent(item,bool,int,commodity,quality,empire,text) - Creates a new item inside 'item', which is expected to be a container.<br />
<br />
Arguments:<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'int' is condition percent, 1 to 100.<br />
<br />
If 'text' is not blank, it is inscribed onto the item.<br />
<br />
void itemDetonate(item) - Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
void itemMakePermanent(item) - Changes a story item into a permanent item.<br />
<br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
item itemOnGround(commodity,real) - Locates an item on the ground nearby.<br />
<br />
Arguments:<br />
<br />
'real' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
item itemOnGroundSpecific(int,commodity,quality,empire,text) - Locates a specific item on the ground nearby.<br />
<br />
Arguments:<br />
<br />
'int' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void itemSetDropOnDeath(item,int) - Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop.<br />
<br />
Arguments:<br />
<br />
'int' is the new state.<br />
<br />
void itemSetMessage(item,text) - Sets the message of an item, such as a beacon. This is not the inscription.<br />
<br />
Arguments:<br />
<br />
'text' is the new message.<br />
<br />
void itemSetState(item,int) - Sets the state of an item, such as the on/off state of a light or musical instrument.<br />
<br />
Arguments:<br />
<br />
'int' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source.<br />
<br />
void narratorHint(text) - Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window.<br />
<br />
void narratorImage(file,text,text) - Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window.<br />
<br />
void narratorSay(text) - Sends a text message on the narrator comm channel.<br />
<br />
void narratorSayAudio(file,text) - Sends audio and an optional text message on the narrator comm channel.<br />
<br />
void narratorSayChoice(choiceValue,text) - Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
void narratorTitle(text) - Sends a text message on the narrator comm channel formatted as a title.<br />
<br />
void narratorVideo(file,text) - Sends video and an optional text message on the narrator comm channel.<br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled.<br />
<br />
void npcSetRole(npcrole) - Changes the role of an npc.<br />
<br />
The role of an npc cannot be changed while they hold a berth.<br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions.<br />
<br />
bool sectorHasHengeSystem(sector,int) - Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
system sectorHengeSystem(sector,int) - Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city.<br />
<br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions.<br />
<br />
void sentientAttackUnit(sentient,unit) - Order a sentient to attack a unit.<br />
<br />
void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text) - Create an item in a sentient's gear.<br />
<br />
Arguments:<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'text' is inscribed on the item if not blank.<br />
<br />
item sentientDropGear(sentient,gearslot) - Drops the item at a sentient's gear slot.<br />
<br />
item sentientDropGearItem(sentient,commodity) - Drops an item from a sentient's gear.<br />
<br />
void sentientFireWeapon(sentient) - Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
void sentientFollowAvatar(sentient) - Order a sentient to follow the person.<br />
<br />
void sentientFollowSentient(sentient,sentient) - Order a sentient to follow another sentient.<br />
<br />
void sentientGetItem(sentient,item) - Order a sentient to pick an item up off the ground.<br />
<br />
void sentientGoToAvatar(sentient) - Order a sentient to go to the avatar.<br />
<br />
void sentientGoToLL(sentient,ll) - Order a sentient to go to a longitude latitude.<br />
<br />
void sentientGoToLLExactly(sentient,ll) - Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
void sentientGoToRoom(sentient,text) - Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
void sentientGoToUnit(sentient,unit) - Order a sentient to go to a unit.<br />
<br />
bool sentientHasItem(sentient,commodity) - Test if the sentient possesses a specific commodity.<br />
<br />
bool sentientHasItemSpecific(sentient,commodity,quality,empire,text) - Test if the sentient's gear contains a very specific commodity.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void sentientHengeCeremony(sentient,ll) - Order a sentient to perform the henge ceremony, if a henge is found near 'll'.<br />
<br />
void sentientItemMakePermanent(sentient,commodity,quality,empire,text) - Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text) - Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop.<br />
<br />
Arguments:<br />
<br />
'bool' is the new state.<br />
<br />
void sentientMoveBack(sentient,real) - Order a sentient to move backward a distance specified in meters.<br />
<br />
void sentientMoveForward(sentient,real) - Order a sentient to move forward a distance specified in meters.<br />
<br />
void sentientSay(sentient,text,visage) - Order a sentient being to say a message on the Voice channel.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayAudio(sentient,file,text,visage) - Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayChoice(sentient,choiceValue,text,visage) - Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayImage(sentient,file,text,text,visage) - Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
<br />
Arguments:<br />
<br />
'text' args are image title and text to say.<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayTo(sentient,atom,text,visage) - Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSellGearItem(sentient,atom,commodity,int) - Offers an item from a sentient's gear on the Voice channel.<br />
<br />
Arguments:<br />
<br />
'atom' is the target of the sale, causing sentient to turn to face them; it can be null.<br />
<br />
The best Q 'commodity' possessed by 'sentient' is offered for sale.<br />
<br />
'int' is the price, which can be 0 to offer it for free.<br />
<br />
void sentientStay(sentient) - Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions.<br />
<br />
void shipChargeCapacitor(ship) - Fills the capacitor to 100% on a ship.<br />
<br />
void shipChargeShields(ship) - Fills the shields to 100% on a ship.<br />
<br />
character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage) - Creates a character aboard 'ship'.<br />
<br />
Arguments:<br />
<br />
'int' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location.<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
void shipCreateCrew(ship,dna) - Fills all empty crew positions on a ship.<br />
<br />
Arguments:<br />
<br />
'dna' is used to create the new crew members.<br />
<br />
void shipCreateTroops(ship,dna) - Fills all empty troop positions on a ship.<br />
<br />
Arguments:<br />
<br />
'dna' is used to create the new troops.<br />
<br />
sentient shipFindAI(ship,npcrole) - Locates an AI controlled sentient aboard a ship.<br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them.<br />
<br />
sentient shipFindAIInRoom(ship,npcrole,text) - Locates an AI controlled sentient aboard a ship, in a specific room.<br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
npc shipFindNpc(ship,npcrole) - Locates an npc aboard a ship.<br />
<br />
Does not find demiavatars.<br />
<br />
npc shipFindNpcInRoom(ship,npcrole,text) - Locates an npc aboard a ship, in a specific room.<br />
<br />
Does not find demiavatars.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
void shipInteriorLight(ship,int) - Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
void shipManeuverDrive(ship,int) - Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
void shipPowerPlant(ship,int) - Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
void shipRefuel(ship,int) - Fills the fuel cells to 100% on a ship with 'int' quality fuel.<br />
<br />
void shipRetreat(ship) - Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
void shipShields(ship,int) - Sets a ship's shield state. 0=off, 1=on.<br />
<br />
creature shipStationOccupant(ship,station) - Returns a creature who is controlling or occupying a station on the ship.<br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned.<br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled.<br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned.<br />
<br />
Designer returns an avatar in a designer instance.<br />
<br />
Livestock returns an animal.<br />
<br />
creature shipStationOccupantInRoom(ship,station,text) - Returns a creature who is controlling or occupying a station on the ship.<br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned.<br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled.<br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned.<br />
<br />
Designer returns an avatar in a designer instance.<br />
<br />
Livestock returns an animal.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft.<br />
<br />
ship unitAboardShip(unit) - Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
bool unitAtBuilding(unit,building) - Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
world unitAtWorld(unit) - Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
bool unitInOrbit(unit) - Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
ship unitInsideShip(unit) - Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
text unitRoomName(unit) - Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room.<br />
<br />
ship unitStationInTradeRange(unit,stance,int) - Returns station that is within trade range of the unit.<br />
<br />
Arguments:<br />
<br />
'stance' and 'int' are used to check the station empire's stance toward the unit's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions.<br />
<br />
void vehicleRefuel(vehicle) - Fills the fuel cells to 100% on a vehicle.<br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions.<br />
<br />
bool worldAtmosphereBreathable(world) - Test if the world atmosphere is breathable.<br />
<br />
bool worldClaimed(world) - Test if the world is claimed by any empire.<br />
<br />
bool worldClaimedBy(world,empire) - Test if the world is claimed by 'empire'.<br />
<br />
character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage) - Creates a character on 'world' at 'll'.<br />
<br />
Arguments:<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
void worldCreateIndigenous(world,ll,dna) - Create an indigenous village on a world. Establishes the indigenous DNA using 'dna' if it is not already set.<br />
<br />
item worldCreateItem(world,ll,bool,commodity,quality,empire,text) - Create an item on a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the item.<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'text' is inscribed on the item if not blank.<br />
<br />
ship worldCreateShip(world,ll,real,int,quality,empire,text) - Create a spaceship at a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed.<br />
<br />
'real' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
<br />
'int' is the design id of the ship.<br />
<br />
'empire' is the empire who owns the spaceship.<br />
<br />
'text' is the name of the ship, set randomly if this is blank.<br />
<br />
vehicle worldCreateVehicle(world,ll,commodity,quality,empire) - Create a vehicle on a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed.<br />
<br />
'empire' is the empire who owns the vehicle.<br />
<br />
bool worldHasCity(world) - Test if the world has any cities at all.<br />
<br />
void worldHengeCeremony(world,ll,int) - Sets the state of the henge ceremony, if there is a henge.<br />
<br />
Arguments:<br />
<br />
'int' is ceremony state: 1=Active, 0=inactive.<br />
<br />
int worldHydrographics(world) - Returns the world's water percentage in the range 0 to 100.<br />
<br />
bool worldIsGasGiant(world) - Test if the world is a gas giant.<br />
<br />
bool worldIsMoon(world) - Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
bool worldIsPlanet(world) - Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
bool worldIsPlanetoid(world) - Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
bool worldIsRing(world) - Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
bool worldIsRingworld(world) - Test if the world is a ringworld arc section.<br />
<br />
bool worldIsTitan(world) - Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
ll worldLandLocation(world,real,real) - Returns a location that is on land.<br />
<br />
Arguments:<br />
<br />
First 'real' is minimum altitude MSL, in meters.<br />
<br />
Second 'real' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
ll worldLandLocationNear(world,ll,real,real,real) - Returns a location that is on land somewhere near 'll'.<br />
<br />
Arguments:<br />
<br />
First 'real' is minimum altitude MSL, in meters.<br />
<br />
Second 'real' is minimum distance from 'll', in meters.<br />
<br />
Third 'real' is maximum distance from 'll', in meters.<br />
<br />
bool worldOrbitFrigid(world) - Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitHabitable(world) - Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitInferno(world) - Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitInner(world) - Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitOuter(world) - Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
ll worldRelativeLL(world,ll,real,real) - Returns a location that is offset from another location.<br />
<br />
Arguments:<br />
<br />
'll' is the reference location.<br />
<br />
'real,real' is horizontal, vertical offset, in meters.<br />
<br />
bool worldScheduleAsteroid(world, int) - Schedules an asteroid to destroy the world in 'int' minutes.<br />
<br />
Arguments:<br />
<br />
'world' is the world that will be the target of the asteroid.<br />
<br />
'int' is the number of minutes before impact. Must be at least 1.<br />
<br />
bool worldSupportsAnimals(world) - Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals.<br />
<br />
All worlds that support animals also support plants.<br />
<br />
bool worldSupportsPlants(world) - Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants.<br />
<br />
Worlds that support plants do not necessarily support animals.</div>Haxushttps://hazeron.com:443/wiki/index.php?title=Story_Script&diff=9830Story Script2021-02-16T20:18:03Z<p>Haxus: /* Avatar Functions */</p>
<hr />
<div>Stories are told to the player in the form of one or more scripts, like chapters<br />
of a book or acts of a play. Each instance of a script being enacted is<br />
associated with an avatar. The player's avatar is the main character.<br />
<br />
Scripts start automatically based on conditions defined in the script itself.<br />
When a script starts for an avatar, a story job appears in the jobs list for the avatar.<br />
<br />
Script sequence is established by making each subsequent script depend upon the<br />
completion of its preceding script.<br />
<br />
Completion states can be stored by a script to influence the startup conditions<br />
of subsequent scripts, or to remember outcomes for recall in later scripts.<br />
<br />
When an avatar uses the Jobs page of the Bio window to drop a story, that script<br />
is not considered to be completed. It will autostart again if/when script<br />
settings and game conditions permit.<br />
<br />
An avatar can only have one active autostarted story job at a time. When they do<br />
not have one, the game tries to start a new script once per minute while they<br />
are online. The avatar is evaluated against the start conditions of all<br />
autostartable scripts. Scripts that have already been completed by the avatar<br />
are never autostarted again.<br />
<br />
The solo game is automatically saved whenever a new script starts.<br />
<br />
Multiple stories can play out simultaneously, with chapters interleaved, due to chapters starting whenever conditions permit. <br />
It is unknown if this behavior is beneficial to game play, as it has never been tried. <br />
The intent was that stories could start/continue when conditions permit, like during the Relic story while searching for the archeological dig site. <br />
The avatar could be drawn to a different story for a while.<br />
They would then detect the supply ship beacon when they happen upon an appropriate sector for the next chapter of the Relic story, resuming that first story.<br />
<br />
Avatars remember every story character they meet, by name. <br />
When a script creates a character that an avatar has met before, the character is recreated using the avatar's memory. <br />
The character's DNA, gender, handedness, growth stage, haircut, shave, empire, clothing and gear are restored.<br />
<br />
==Script Files==<br />
A script is created in a text file named 'script.sh'. The .sh suffix triggers a<br />
useful color scheme in the vi text editor that I use.<br />
<br />
A '#' denotes a script comment. The remainder of the script line is ignored by<br />
the script compiler, including the #.<br />
<br />
A script consists of two or more blocks. A block is denoted by a block label,<br />
which marks the beginning of the block. A colon ':' at the beginning of a line<br />
starts a block label. Following are some examples.<br />
<br />
:<br />
:Introduction<br />
:TheEnd<br />
<br />
The first block label listed is only a ':' colon with no name. This marks a<br />
special block called the 'catalyst'. Every script must have a catalyst block.<br />
The catalyst block declares information about the script and its run conditions.<br />
The catalyst block provides logical tests that are used to determine when the<br />
script can start for an avatar in the game.<br />
<br />
The 'storyTitle', 'storyAuthor', and 'storyBrief' functions must be called<br />
in the catalyst block.<br />
<br />
At least one 'if' is required for evaluation of the catalyst. When any of the<br />
catalyst 'if's returns true, the script can begin for an avatar.<br />
<br />
The catalyst section may optionally contain an interval declaration. This<br />
specifies the number of minutes that must pass before the script can be started<br />
again by the same person, after the previous time it was started.<br />
<br />
Each 'if' evaluation specifies a block name. The block name is the next part of<br />
the script that is executed when the 'if' test becomes true. By using multiple<br />
'if' tests, a block can branch to different parts of the script based on varying<br />
conditions.<br />
<br />
===Example catalyst block===<br />
<br />
:<br />
# Basic story info.<br />
story.title("Simple Story");<br />
story.author("Charles S. Lewis");<br />
story.brief("A simple story.");<br />
<br />
# Test to begin story.<br />
if(!avatarHasItem(Hammer)) Introduction;<br />
<br />
In the preceding example, a minimal catalyst block is created. The script will<br />
be available to all avatars with no hammer.<br />
<br />
===Example body block===<br />
<br />
:Introduction<br />
narratorTitle("Simple Story");<br />
narratorSay("Welcome to my simple story.");<br />
if(wait(10)) PickUp;<br />
<br />
In this example, the person who starts the script receives a title message on<br />
the screen, followed by a narrated message, welcoming them to the story. After<br />
ten seconds have passed, the script branches to the 'PickUp' block.<br />
<br />
===Example body block with conditional branch===<br />
It is possible for a block to branch to different parts of the script, depending<br />
on conditions present in the script.<br />
<br />
Every 10 seconds, the story engine evaluates the current script block for<br />
completion. When doing so, the branch conditions are tested one-by-one in<br />
sequence. The script branches to the first branch condition that is true.<br />
<br />
In the following example, there are three 'if' conditions. Observe that the<br />
order is critical. If the first 'if' was moved to the third position, the script<br />
would likely never branch on that condition. The Candle branch and the Hammer<br />
branch would individually be true and they would branch first.<br />
<br />
This is an unpredictable set of 'if's. It is possible the branch conditions will<br />
be checked before the avatar picks up the second item. Then the script will<br />
branch based on the first item the avatar grabbed, not both items.<br />
<br />
:PickUp<br />
narratorSay("Pick up a hammer and a candle.");<br />
if(avatarHasItem(Hammer) & avatarHasItem(Candle)) HammerAndCandle;<br />
if(avatarHasItem(Hammer)) Hammer;<br />
if(avatarHasItem(Candle)) Candle;<br />
<br />
:HammerAndCandle<br />
narratorSay("You picked up both the candle and the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Hammer<br />
narratorSay("You picked up the hammer.");<br />
if(wait(10)) TheEnd;<br />
<br />
:Candle<br />
narratorSay("You picked up the candle.");<br />
if(wait(10)) TheEnd;<br />
<br />
===Example final block===<br />
<br />
:TheEnd<br />
narratorSay("Good bye.");<br />
narratorSay("I hope you had fun!");<br />
<br />
In this ending block example, the person receives two narrated messages. The<br />
script terminates because the block contains no 'if' or 'goto' statements. The<br />
script is now completed for the avatar; it will not restart automatically.<br />
<br />
===Data Files===<br />
Scripts may reference many kinds of data files, such as .chr and .dna files,<br />
and also picture and sound .wav files.<br />
<br />
Script data files should accompany the script.sh file in the same folder.<br />
<br />
===Blueprints===<br />
Blueprints must be finalized online but publishing is not required.<br />
<br />
Scripts may reference spacecraft or building blueprints by number. The number<br />
is the one that appears in the online multiplayer game.<br />
<br />
Each empire associated with a published blueprint, that is referenced by a story<br />
script, will be added to the Empires list in this document.<br />
<br />
==Commodity Names==<br />
These are the commodity names expected in the 'commodity' argument type.<br />
<br />
APC<br />
<br />
APC Apparatus Patent<br />
<br />
Adamantine<br />
<br />
Adamantine Bullion Patent<br />
<br />
Adamantine Hull<br />
<br />
Adamantite<br />
<br />
Air<br />
<br />
Animal Carcass<br />
<br />
Animal Meat<br />
<br />
Antidote<br />
<br />
Antidote using Herbs Patent<br />
<br />
Antidote using Minerals Patent<br />
<br />
Antidote using Petrochemicals Patent<br />
<br />
Antiflux Particles<br />
<br />
Antitoxin<br />
<br />
Antitoxin using Animal Carcass Patent<br />
<br />
Antitoxin using Eggs Patent<br />
<br />
Atmosphere Condenser Bay Module<br />
<br />
Atmosphere Condenser Bay Module Patent<br />
<br />
Atmosphere Density<br />
<br />
Backpack<br />
<br />
Ballistic Weapon Bay Module<br />
<br />
Ballistic Weapon Bay Module Patent<br />
<br />
Ballistic Weapon Turret Module<br />
<br />
Ballistic Weapon Turret Module Patent<br />
<br />
Battle Ship Apparatus Patent<br />
<br />
Beacon<br />
<br />
Beacon Patent<br />
<br />
Beans<br />
<br />
Beer<br />
<br />
Black Uniform<br />
<br />
Blank Disk<br />
<br />
Blank Disk Patent<br />
<br />
Blue Binder<br />
<br />
Blue Uniform<br />
<br />
Bolite<br />
<br />
Bomb Bl Black Cat<br />
<br />
Bomb Bl Black Cat Patent<br />
<br />
Bomb BlPi Porcupine<br />
<br />
Bomb BlPi Porcupine Patent<br />
<br />
Bomb BlRa Los Alamos<br />
<br />
Bomb BlRa Los Alamos Patent<br />
<br />
Bomb ElSt Tesla<br />
<br />
Bomb ElSt Tesla Patent<br />
<br />
Bomb SlCr Meat Slicer<br />
<br />
Bomb SlCr Meat Slicer Patent<br />
<br />
Bomb SuPo Muffler<br />
<br />
Bomb SuPo Muffler Patent<br />
<br />
Bone<br />
<br />
Borexino Precipitate<br />
<br />
Brain<br />
<br />
Bread<br />
<br />
Brown Uniform<br />
<br />
Building Blueprint Disk<br />
<br />
Building Blueprint Drawing<br />
<br />
Burning Barrel<br />
<br />
Candle<br />
<br />
Candle using Petrochemicals Patent<br />
<br />
Candy<br />
<br />
Candy Patent<br />
<br />
Capacitor Module<br />
<br />
Capacitor Module Patent<br />
<br />
Capris and Halter<br />
<br />
Cheese<br />
<br />
Clamp<br />
<br />
Cloaking Shield Module<br />
<br />
Cloaking Shield Module Patent<br />
<br />
Coal<br />
<br />
Coal Power Plant Module<br />
<br />
Command And Control Module<br />
<br />
Command And Control Module Patent<br />
<br />
Commercial Ship<br />
<br />
Commercial Ship Apparatus Patent<br />
<br />
Compressor Beam Lens<br />
<br />
Compressor Beam Lens Patent<br />
<br />
Computer<br />
<br />
Computer Patent<br />
<br />
Crate<br />
<br />
Cronodollars<br />
<br />
Cryo Heat Sink<br />
<br />
Cryo Heat Sink Patent<br />
<br />
Cryozine<br />
<br />
Crystal Necklace<br />
<br />
Crystals<br />
<br />
Cybernetics Medical Module<br />
<br />
Cybernetics Medical Module Patent<br />
<br />
DNA Sample<br />
<br />
DNA Sample Kit<br />
<br />
DNA Sample Kit Patent<br />
<br />
Disintegrator Ray Lens<br />
<br />
Disintegrator Ray Lens Patent<br />
<br />
Disruptor Beam Lens<br />
<br />
Disruptor Beam Lens Patent<br />
<br />
Distilling Gin Patent<br />
<br />
Distilling Rum Patent<br />
<br />
Distilling Tequila Patent<br />
<br />
Distilling Vodka Patent<br />
<br />
Distilling Whiskey Patent<br />
<br />
Drilling Phlogiston Patent<br />
<br />
Drilling Polytaride Patent<br />
<br />
Drilling Viathol Patent<br />
<br />
Drum<br />
<br />
Dynamite<br />
<br />
Dynamite Patent<br />
<br />
EV Helmet<br />
<br />
EV Helmet Patent<br />
<br />
EV Suit<br />
<br />
EV Suit Patent<br />
<br />
Eggs<br />
<br />
Electricity<br />
<br />
Electron Beam Lens<br />
<br />
Electron Beam Lens Patent<br />
<br />
Electronic Part<br />
<br />
Electronic Part Patent<br />
<br />
Eludium<br />
<br />
Energy Shield Module<br />
<br />
Energy Shield Module Patent<br />
<br />
Energy Weapon Bay Module<br />
<br />
Energy Weapon Bay Module Patent<br />
<br />
Energy Weapon Turret Module<br />
<br />
Energy Weapon Turret Module Patent<br />
<br />
Erg Ray Lens<br />
<br />
Erg Ray Lens Patent<br />
<br />
Extracting Flomentum Patent<br />
<br />
Extracting Magmex Patent<br />
<br />
Extracting Myrathane Patent<br />
<br />
Farm Machinery<br />
<br />
Farm Machinery Apparatus Patent<br />
<br />
Fertilizer<br />
<br />
Fire<br />
<br />
Fish<br />
<br />
Fish Meat<br />
<br />
Fitting Wrench<br />
<br />
Flag<br />
<br />
Flak Helmet<br />
<br />
Flak Vest<br />
<br />
Flomentum<br />
<br />
Flour<br />
<br />
Freeze Ray Lens<br />
<br />
Freeze Ray Lens Patent<br />
<br />
Frigid Atmosphere Density<br />
<br />
Fruit<br />
<br />
Gasoline<br />
<br />
Gasoline Power Plant Module<br />
<br />
Gem Ring<br />
<br />
Gems<br />
<br />
Generating Electricity using Coal Patent<br />
<br />
Generating Electricity using Gasoline Patent<br />
<br />
Generating Electricity using Hydrogen Patent<br />
<br />
Generating Electricity using Natural Gas Patent<br />
<br />
Generating Electricity using Nuclear Fuel Rod Patent<br />
<br />
Generating Electricity using Radioactives Patent<br />
<br />
Generating Electricity using Sunlight Patent<br />
<br />
Generating Electricity using Water in Environment Patent<br />
<br />
Generating Electricity using Wind Patent<br />
<br />
Genetics Medical Module<br />
<br />
Genetics Medical Module Patent<br />
<br />
Gigacell<br />
<br />
Gigacell Patent<br />
<br />
Gills<br />
<br />
Gin<br />
<br />
Glue Gun<br />
<br />
Glue Gun Patent<br />
<br />
Gold<br />
<br />
Gold Hull<br />
<br />
Gold Ore<br />
<br />
Gold Ring<br />
<br />
Gold Uniform<br />
<br />
Grain<br />
<br />
Grapes<br />
<br />
Grav Coupling<br />
<br />
Grav Coupling Patent<br />
<br />
Grav Pack<br />
<br />
Grav Pack Patent<br />
<br />
Gravity Drive Module<br />
<br />
Gravity Drive Module Patent<br />
<br />
Green Binder<br />
<br />
Green Uniform<br />
<br />
Grey BDU<br />
<br />
Grey Uniform<br />
<br />
Gun Powder<br />
<br />
Gun Powder Patent<br />
<br />
Hammer<br />
<br />
Hay<br />
<br />
Head<br />
<br />
Heart<br />
<br />
Heat Ray Lens<br />
<br />
Heat Ray Lens Patent<br />
<br />
Heavy Arms Ammo Pi Patent<br />
<br />
Heavy Arms Ammo PiAc Patent<br />
<br />
Heavy Arms Ammo PiBl Patent<br />
<br />
Heavy Arms Ammo PiRa Patent<br />
<br />
Heavy Arms Ammunition Pi<br />
<br />
Heavy Arms Ammunition PiAc<br />
<br />
Heavy Arms Ammunition PiBl<br />
<br />
Heavy Arms Ammunition PiRa<br />
<br />
Heavy Weapon<br />
<br />
Heavy Weapon Patent<br />
<br />
Helicopter<br />
<br />
Helicopter Apparatus Patent<br />
<br />
Herbs<br />
<br />
Hops<br />
<br />
Hydroelectric Power Plant Module<br />
<br />
Hydrogen<br />
<br />
Hydrogen Power Plant Module<br />
<br />
Hydrogen Power Plant Module Patent<br />
<br />
Hydrogen from Natural Gas Patent<br />
<br />
Ice<br />
<br />
Ice Cream<br />
<br />
Ice Cream Patent<br />
<br />
Inferno Atmosphere Density<br />
<br />
Io Tube<br />
<br />
Io Tube Patent<br />
<br />
Ioplasma<br />
<br />
Jeans and Shirt<br />
<br />
Jewelry Storage Device Patent<br />
<br />
Khaki BDU<br />
<br />
Kinetic Shield Module<br />
<br />
Kinetic Shield Module Patent<br />
<br />
Knapsack<br />
<br />
Knife<br />
<br />
Knife using Metal and Plastic Patent<br />
<br />
Lantern<br />
<br />
Lantern Patent<br />
<br />
Large Flower Pot<br />
<br />
Large Missile Bl Thumper<br />
<br />
Large Missile Bl Thumper Patent<br />
<br />
Large Missile BlBu Fireball<br />
<br />
Large Missile BlBu Fireball Patent<br />
<br />
Large Missile SlPo Sideviper<br />
<br />
Large Missile SlPo Sideviper Patent<br />
<br />
Large Rocket Bl Thud<br />
<br />
Large Rocket Bl Thud Patent<br />
<br />
Large Rocket BlBu Molotov<br />
<br />
Large Rocket BlBu Molotov Patent<br />
<br />
Large Rocket BuDi Scudpox<br />
<br />
Large Rocket BuDi Scudpox Patent<br />
<br />
Large Rocket Motor<br />
<br />
Large Rocket Motor Patent<br />
<br />
Laser Pistol<br />
<br />
Laser Pistol Patent<br />
<br />
Laser Rifle<br />
<br />
Laser Rifle Patent<br />
<br />
Lava in the Environment<br />
<br />
Leather<br />
<br />
Leather Armor<br />
<br />
Leather Clothing<br />
<br />
Leather Helmet<br />
<br />
Life Support Gravity Module<br />
<br />
Life Support Gravity Module Patent<br />
<br />
Life Support Module<br />
<br />
Life Support Module Patent<br />
<br />
Log<br />
<br />
Lumber<br />
<br />
Lumber Hull<br />
<br />
Lumenite<br />
<br />
Lungs<br />
<br />
Magmex<br />
<br />
Magmium<br />
<br />
Magmium Bullion Patent<br />
<br />
Magmium EV Helmet<br />
<br />
Magmium EV Helmet Patent<br />
<br />
Magmium EV Suit<br />
<br />
Magmium EV Suit Patent<br />
<br />
Magmium Heat Sink<br />
<br />
Magmium Heat Sink Patent<br />
<br />
Magmium Hull<br />
<br />
Magmium Knife<br />
<br />
Magmium Knife Patent<br />
<br />
Mechanical Part<br />
<br />
Medical Kit<br />
<br />
Metal<br />
<br />
Metal Armor<br />
<br />
Metal Bracelet<br />
<br />
Metal EV Helmet<br />
<br />
Metal EV Helmet Patent<br />
<br />
Metal EV Suit<br />
<br />
Metal EV Suit Patent<br />
<br />
Metal Helmet<br />
<br />
Metal Hull<br />
<br />
Microscope<br />
<br />
Microscope Patent<br />
<br />
Milk<br />
<br />
Mine Machinery<br />
<br />
Mine Machinery Apparatus Patent<br />
<br />
Minerals<br />
<br />
Mining Adamantite Patent<br />
<br />
Mining Bolite Patent<br />
<br />
Mining Eludium Patent<br />
<br />
Mining Lumenite Patent<br />
<br />
Mining Radioactives Patent<br />
<br />
Mining Vulcanite Patent<br />
<br />
Mission Disk<br />
<br />
Motor Bike<br />
<br />
Motor Bike Apparatus Patent<br />
<br />
Myrasplicer<br />
<br />
Myrasplicer Patent<br />
<br />
Myrathane<br />
<br />
Nanopath Calibrator<br />
<br />
Nanopath Calibrator Patent<br />
<br />
Natural Gas<br />
<br />
Natural Gas Power Plant Module<br />
<br />
Naval Ship<br />
<br />
Neutron Beam Lens<br />
<br />
Neutron Beam Lens Patent<br />
<br />
Nitrate Explosive<br />
<br />
Nitrate Explosive Patent<br />
<br />
Nuclear Fuel Rod<br />
<br />
Nuclear Fuel Rod Patent<br />
<br />
Nuclear Power Plant Module<br />
<br />
Nuts<br />
<br />
Officer Log<br />
<br />
Oil<br />
<br />
Olive Drab BDU<br />
<br />
Orange Uniform<br />
<br />
Ore<br />
<br />
Oscilloscope<br />
<br />
Oscilloscope Patent<br />
<br />
Paper<br />
<br />
ParcX Box<br />
<br />
ParcX Uniform<br />
<br />
Particle Collector Bay Module<br />
<br />
Particle Collector Bay Module Patent<br />
<br />
Pastry<br />
<br />
Pastry Patent<br />
<br />
Personnel Transporter Module<br />
<br />
Personnel Transporter Module Patent<br />
<br />
Petrochemicals<br />
<br />
Pharmaceuticals<br />
<br />
Pharmaceuticals using Petrochemicals Patent<br />
<br />
Phlogiston<br />
<br />
Picture Frame 120x68cm<br />
<br />
Picture Frame 22x28cm<br />
<br />
Picture Frame 60x34cm<br />
<br />
Pink Uniform<br />
<br />
Pistol<br />
<br />
Pistol Ammunition<br />
<br />
Pistol Ammunition Patent<br />
<br />
Pistol Patent<br />
<br />
Plant Fiber<br />
<br />
Plastic<br />
<br />
Plastic Armor<br />
<br />
Plastic Explosive<br />
<br />
Plastic Explosive Patent<br />
<br />
Plastic Helmet<br />
<br />
Plastic Patent<br />
<br />
Plastic Sailboat Apparatus Patent<br />
<br />
Pliers<br />
<br />
Plutonium<br />
<br />
Plutonium Patent<br />
<br />
Polytaride<br />
<br />
Preon Ring Patent<br />
<br />
Pressure Tent<br />
<br />
Pressure Tent Patent<br />
<br />
Prospector Bay Module<br />
<br />
Prospector Bay Module Patent<br />
<br />
Proton Beam Lens<br />
<br />
Proton Beam Lens Patent<br />
<br />
Radioactives<br />
<br />
Red Binder<br />
<br />
Red Uniform<br />
<br />
Refining Air from Atmosphere Patent<br />
<br />
Refining Air from Water Patent<br />
<br />
Refining Antiflux Particles from Atmosphere Patent<br />
<br />
Refining Borexino Precipitate from Atmosphere Patent<br />
<br />
Refining Cryozine Patent<br />
<br />
Refining Fertilizer from Air Patent<br />
<br />
Refining Fertilizer from Atmosphere Patent<br />
<br />
Refining Gasoline Patent<br />
<br />
Refining Hydrogen from Atmosphere Patent<br />
<br />
Refining Hydrogen from Water Patent<br />
<br />
Refining Ioplasma Patent<br />
<br />
Refining Petrochemicals Patent<br />
<br />
Rifle<br />
<br />
Rifle Ammunition<br />
<br />
Rifle Ammunition Patent<br />
<br />
Rifle Patent<br />
<br />
Rocket Drive Module<br />
<br />
Rocket Drive Module Patent<br />
<br />
Rum<br />
<br />
SUV<br />
<br />
SUV Apparatus Patent<br />
<br />
Sailboat<br />
<br />
Screw Driver<br />
<br />
Seed<br />
<br />
Sensor Module<br />
<br />
Sensor Module Patent<br />
<br />
Sewing Needle<br />
<br />
Shotgun<br />
<br />
Shotgun Ammunition<br />
<br />
Shotgun Ammunition Patent<br />
<br />
Shotgun Patent<br />
<br />
Shovel<br />
<br />
Silage<br />
<br />
Siphon Bay Module<br />
<br />
Siphon Bay Module Patent<br />
<br />
Small Flower Pot<br />
<br />
Small Missile Bl Zipper<br />
<br />
Small Missile Bl Zipper Patent<br />
<br />
Small Missile BlBu Barnburner<br />
<br />
Small Missile BlBu Barnburner Patent<br />
<br />
Small Missile CrFr Snowball<br />
<br />
Small Missile CrFr Snowball Patent<br />
<br />
Small Rocket Bl Partypopper<br />
<br />
Small Rocket Bl Partypopper Patent<br />
<br />
Small Rocket BlBu Firecracker<br />
<br />
Small Rocket BlBu Firecracker Patent<br />
<br />
Small Rocket Motor<br />
<br />
Small Rocket Motor Patent<br />
<br />
Small Rocket SlPi Meathook<br />
<br />
Small Rocket SlPi Meathook Patent<br />
<br />
Smelting Adamantine Patent<br />
<br />
Smelting Magmium Patent<br />
<br />
Smelting Vulcium Patent<br />
<br />
Solar Power Plant Module<br />
<br />
Soldering Iron<br />
<br />
Soldering Iron Patent<br />
<br />
Space Fighter F1<br />
<br />
Space Fighter F1 Apparatus Patent<br />
<br />
Space Fighter F2<br />
<br />
Space Fighter F2 Apparatus Patent<br />
<br />
Space Rocket<br />
<br />
Space Rocket Apparatus Patent<br />
<br />
Space Transport<br />
<br />
Space Transport Apparatus Patent<br />
<br />
Spacecraft Blueprint Disk<br />
<br />
Spacecraft Blueprint Drawing<br />
<br />
Spacecraft Title<br />
<br />
Spices<br />
<br />
Stasis Beam Lens<br />
<br />
Stasis Beam Lens Patent<br />
<br />
Stomach<br />
<br />
Stone<br />
<br />
Stone Hull<br />
<br />
Storage Crystal<br />
<br />
Storage Crystal Bracelet<br />
<br />
Storage Crystal Necklace<br />
<br />
Storage Crystal Patent<br />
<br />
Storage Crystal Ring<br />
<br />
Submarine<br />
<br />
Submarine Apparatus Patent<br />
<br />
Sugar<br />
<br />
Sunlight<br />
<br />
Supercooled Liquid in the Environment<br />
<br />
Surgery Medical Module<br />
<br />
Surgery Medical Module Patent<br />
<br />
TEU Container<br />
<br />
Tank<br />
<br />
Tank Apparatus Patent<br />
<br />
Teal Uniform<br />
<br />
Tepee<br />
<br />
Tequila<br />
<br />
Tesloid Dissipator<br />
<br />
Tesloid Dissipator Patent<br />
<br />
Textiles<br />
<br />
Thumb Drive<br />
<br />
Thumb Drive Bracelet<br />
<br />
Thumb Drive Necklace<br />
<br />
Thumb Drive Patent<br />
<br />
Thumb Drive Ring<br />
<br />
Tongs<br />
<br />
Torch<br />
<br />
Torque Wrench<br />
<br />
Tractor Beam Bay Module<br />
<br />
Tractor Beam Bay Module Patent<br />
<br />
Type A Preon Ring<br />
<br />
Type A Preons<br />
<br />
Type B Preon Ring<br />
<br />
Type B Preons<br />
<br />
Type F Preon Ring<br />
<br />
Type F Preons<br />
<br />
Type G Preon Ring<br />
<br />
Type G Preons<br />
<br />
Type K Preon Ring<br />
<br />
Type K Preons<br />
<br />
Type M Preon Ring<br />
<br />
Type M Preons<br />
<br />
Type O Preon Ring<br />
<br />
Type O Preons<br />
<br />
Utility Pouch<br />
<br />
Vegetable<br />
<br />
Vegetation Density<br />
<br />
Vehicle Transporter Module<br />
<br />
Vehicle Transporter Module Patent<br />
<br />
Viathol<br />
<br />
Vodka<br />
<br />
Vulcanite<br />
<br />
Vulcium<br />
<br />
Vulcium Bullion Patent<br />
<br />
Vulcium EV Helmet<br />
<br />
Vulcium EV Helmet Patent<br />
<br />
Vulcium EV Suit<br />
<br />
Vulcium EV Suit Patent<br />
<br />
Vulcium Heat Sink<br />
<br />
Vulcium Heat Sink Patent<br />
<br />
Vulcium Hull<br />
<br />
Vulcium Knife<br />
<br />
Vulcium Knife Patent<br />
<br />
Warp 1 FTL Drive Module<br />
<br />
Warp 1 FTL Drive Module Patent<br />
<br />
Warp 2 FTL Drive Module<br />
<br />
Warp 2 FTL Drive Module Patent<br />
<br />
Warp 3 FTL Drive Module<br />
<br />
Warp 3 FTL Drive Module Patent<br />
<br />
Warp 4 FTL Drive Module<br />
<br />
Warp 4 FTL Drive Module Patent<br />
<br />
Warp 5 FTL Drive Module<br />
<br />
Warp 5 FTL Drive Module Patent<br />
<br />
Warp 6 FTL Drive Module<br />
<br />
Warp 6 FTL Drive Module Patent<br />
<br />
Warp 7 FTL Drive Module<br />
<br />
Warp 7 FTL Drive Module Patent<br />
<br />
Warp 8 FTL Drive Module<br />
<br />
Warp 8 FTL Drive Module Patent<br />
<br />
Warp 9 FTL Drive Module<br />
<br />
Warp 9 FTL Drive Module Patent<br />
<br />
Water<br />
<br />
Water in the Environment<br />
<br />
Water using Air and Hydrogen Patent<br />
<br />
Weapon Deployment Bay Module<br />
<br />
Weapon Deployment Bay Module Patent<br />
<br />
Weapon Launcher Bay Module<br />
<br />
Weapon Launcher Bay Module Patent<br />
<br />
Weapon Launcher Turret Module<br />
<br />
Weapon Launcher Turret Module Patent<br />
<br />
Weaving Textiles using Plastic Patent<br />
<br />
Whiskey<br />
<br />
White Uniform<br />
<br />
Wildcatter Bay Module<br />
<br />
Wildcatter Bay Module Patent<br />
<br />
Wind Power Plant Module<br />
<br />
Wine<br />
<br />
Wood Hull<br />
<br />
Wormhole P FTL Drive Module<br />
<br />
Wormhole P FTL Drive Module Patent<br />
<br />
Wormhole PN FTL Drive Module<br />
<br />
Wormhole PN FTL Drive Module Patent<br />
<br />
Wormhole PNN FTL Drive Module<br />
<br />
Wormhole PNN FTL Drive Module Patent<br />
<br />
Wrench<br />
<br />
Кала́шников<br />
<br />
Кала́шников Patent<br />
<br />
==Industry Names==<br />
These are the industry names expected in the 'industry' argument type.<br />
<br />
Aerial Platform<br />
<br />
Aircraft Factory<br />
<br />
Airport Radar<br />
<br />
Airport Repair Shop<br />
<br />
Airport Terminal<br />
<br />
Apartment<br />
<br />
Arena<br />
<br />
Armorer<br />
<br />
Bakery<br />
<br />
Bank<br />
<br />
Biodome<br />
<br />
Brewery<br />
<br />
Bridge<br />
<br />
Broker<br />
<br />
Cantina<br />
<br />
Capitol<br />
<br />
Carpenter<br />
<br />
Casino<br />
<br />
Church<br />
<br />
Clothing Factory<br />
<br />
Coal Power Plant<br />
<br />
Computer Factory<br />
<br />
Condominium<br />
<br />
Dairy<br />
<br />
Design Studio<br />
<br />
Distillery<br />
<br />
Drilling Rig<br />
<br />
Electronics Factory<br />
<br />
Explosives Factory<br />
<br />
Farm<br />
<br />
Fence/Wall<br />
<br />
Fire Station<br />
<br />
Gasoline Power Plant<br />
<br />
Grist Mill<br />
<br />
Grocery<br />
<br />
Ground Platform<br />
<br />
Hangar<br />
<br />
Hospital<br />
<br />
House<br />
<br />
Hydroelectric Power Plant<br />
<br />
Hydrogen Power Plant<br />
<br />
Jeweler<br />
<br />
Landscape<br />
<br />
Logging Camp<br />
<br />
Lumber Mill<br />
<br />
Machine Shop<br />
<br />
Mass Media<br />
<br />
Meat Processing Plant<br />
<br />
Military Airport Terminal<br />
<br />
Military Barracks<br />
<br />
Military Dock<br />
<br />
Military Flag<br />
<br />
Military Guard Post<br />
<br />
Military Gun Tower<br />
<br />
Military Headquarters<br />
<br />
Military Motor Pool<br />
<br />
Military Radar<br />
<br />
Military Shield Projector<br />
<br />
Military Weapon System<br />
<br />
Mine<br />
<br />
Munitions Factory<br />
<br />
Natural Gas Power Plant<br />
<br />
Nuclear Fuel Plant<br />
<br />
Nuclear Power Plant<br />
<br />
Observatory<br />
<br />
Orchard<br />
<br />
Paper Mill<br />
<br />
Park<br />
<br />
Pharmaceutical Lab<br />
<br />
Plastics Factory<br />
<br />
Police Station<br />
<br />
Private Security Contractor<br />
<br />
Refinery<br />
<br />
Retail Store<br />
<br />
Road<br />
<br />
Rocket Motor Factory<br />
<br />
Sea Platform<br />
<br />
Shed<br />
<br />
Ship Yard<br />
<br />
Smelter<br />
<br />
Solar Power Plant<br />
<br />
Space Marine Barracks<br />
<br />
Spacecraft Factory<br />
<br />
Star Fleet Academy<br />
<br />
Storage Tank<br />
<br />
Street Light<br />
<br />
Sugar Mill<br />
<br />
Textile Mill<br />
<br />
Town Square<br />
<br />
Treatment Plant<br />
<br />
Tunnel<br />
<br />
University<br />
<br />
Vehicle Factory<br />
<br />
Warehouse<br />
<br />
Weapon Smith<br />
<br />
Well<br />
<br />
Wharf<br />
<br />
Wind Power Plant<br />
<br />
Winery<br />
<br />
Zoo<br />
<br />
==Empires==<br />
These are the empires that initially exist in the solo game universe.<br />
<br />
Pirate empires show their ranking, from the least difficult at 1 to the most<br />
difficult at 15. The name of each pirate emperor is also shown. Pirate emperor<br />
name is seen in the game when a city is surrendered to a pirate empire.<br />
<br />
Akson - Pirate 9. Emperor Detria.<br />
<br />
Alpha Fleet - Arena only.<br />
<br />
Balorite - Pirate 3. Emperor Atrakhan.<br />
<br />
Dendrae - Pirate 13. Emperor Martress.<br />
<br />
Haxu - Pirate 14. Emperor Tenracca.<br />
<br />
Imperium - Admin empire. Required for Haxus' exchange entries in the solo game.<br />
<br />
Kla'tra - Pirate 5. Emperor Putres'p.<br />
<br />
Malacon - Pirate 7. Emperor Ilth.<br />
<br />
Myntaka - Pirate 12. Emperor Tiver.<br />
<br />
Observer - Arena only.<br />
<br />
Ogar - Pirate 2. Emperor Xidius.<br />
<br />
Otari - Pirate 11. Emperor Boanon.<br />
<br />
Seledon - Pirate 1. Emperor Nahoth.<br />
<br />
Syth - Pirate 6. Emperor Decavit.<br />
<br />
Tassad - Pirate 10. Emperor Si'darr.<br />
<br />
Vilmorti - Pirate 8. Emperor Levalle.<br />
<br />
Vreen - Pirate 4. Emperor Ortax.<br />
<br />
Zulu Fleet - Arena only.<br />
<br />
Zuul - Pirate 15. Emperor Kang.<br />
<br />
==Comm Channel Names==<br />
Hail - Channel to everyone out to solar system range. Stations monitor this channel.<br />
<br />
Galactic - Channel to everyone.<br />
<br />
Voice - Channel to everyone nearby who can hear.<br />
<br />
Intercom - Channel to everyone aboard the ship you occupy and to the ship itself. Vehicles also have an intercom channel.<br />
<br />
Crew - Channel to crew mates, passengers and the ship. You must be a ship crew member or passenger to broadcast on this channel.<br />
<br />
Trade - Channel to everyone for trading purposes, out to solar system range. Cities and brokers monitor this channel.<br />
<br />
Friend - Channel to members of your empire and friendly empires.<br />
<br />
Help - Channel to service staff for help playing the game.<br />
<br />
Diplomacy - Channel to members of all governments. Only government officials may broadcast on this channel.<br />
<br />
Empire - Channel to members of your empire.<br />
<br />
Government - Channel to members of your empire's government. Only government officials may broadcast on this channel.<br />
<br />
Fleet - Channel to officers of spacecraft in your empire. Only officers in your chain-of-command will respond. Only spacecraft officers and government officials may broadcast on this channel.<br />
<br />
Company - Channel to officers of spacecraft in your company. Anyone may broadcast on this channel. Your company is the owner of the company ship on which you hold an officer berth; or it is you.<br />
<br />
Recruit - Channel to everyone for recruiting purposes.<br />
<br />
Thoughts - Channel for thoughts vocalized in your own mind.<br />
<br />
Galaktika - Russian language channel to everyone.<br />
<br />
Galaxie - French language channel to everyone.<br />
<br />
Galaxia - Spanish language channel to everyone.<br />
<br />
Galaktischen - German language channel to everyone.<br />
<br />
==Comm Ranges==<br />
These are the comm range names expected in the 'range' argument type.<br />
<br />
Close<br />
<br />
Hail<br />
<br />
System<br />
<br />
Sector<br />
<br />
Galaxy<br />
<br />
Universe<br />
<br />
==Atom Class Hierarchy==<br />
Atoms are C++ class objects that have a position in space. A class defines an<br />
object's behavior when used in a computer program. An atom in the game is an<br />
instance of an Atom class object. Each atom instance is identified with a number<br />
that is unique among all atoms.<br />
<br />
Classes derive from base classes, altering program behavior as required.<br />
Operations on a class perform similarly on derived classes. e.g. A function to<br />
return the mass of an atom will work quite differently on a star atom than a<br />
space ship atom, while providing a consistent useful result.<br />
<br />
Here is a general depiction of the atom class hierarchy.<br />
Atom*<br />
Galaxy<br />
Sector<br />
Solar System<br />
Star<br />
Unit*<br />
Building<br />
Creature*<br />
Animal<br />
Sentient*<br />
Avatar<br />
Npc/Character<br />
Item<br />
Ship<br />
Vehicle<br />
Universe<br />
World*<br />
Globe<br />
Ringworld<br />
<br />
*Denotes atoms that cannot be instantiated. e.g. No atom is only a Unit.<br />
<br />
This means Sentient functions operate on Avatar atoms as well as Npc atoms and<br />
Atom functions operate on all atoms.<br />
<br />
==Function Argument Types==<br />
angle - Angle in degrees, in the range -360 to 360.<br />
<br />
animal - A wild animal. A creature that is not sentient.<br />
<br />
atom - A variable that references an atom. Most objects in the game universe are atoms.<br />
<br />
avatar - A variable that references an avatar atom.<br />
<br />
bool - Boolean value returned by calling one or more functions. Can use logical operators '&', '|', and '!'.<br />
<br />
bool - Boolean argument. Accepts 'true' or 'false', not case sensitive.<br />
<br />
building - Building name, not case sensitive.<br />
<br />
city - A variable that references a capitol building atom.<br />
<br />
commodity - Commodity name, not case sensitive.<br />
<br />
channel - Communication channel name. Not limited to standard channel names.<br />
<br />
character - A variable that references an npc atom who is associated with the current story. Characters disappear when their story ends. Characters are created with the npcrole of Citizen.<br />
<br />
choiceValue - A value associated with multiple choices, in the range -127 to 127.<br />
<br />
creature - A variable that references a creature atom. Animals and sentients are creature atoms.<br />
<br />
dna - DNA specification. Loaded from a file if the string ends with '.chr' or '.dna'. Can also be Avatar, Indigenous or Worker. Worker returns Indigenous result if the avatar is not in a <br />
city.<br />
<br />
empire - Empire name, case sensitive, or Empire, Vassal, Friend, Neutral, Enemy.<br />
<br />
file - A file name found in the same path as the script.<br />
<br />
gearslot - Gear slot, not case sensitive: Hand, Head, Face, Neck, Body, Wear, Limb, Digit, Waist. All creatures have at least one Hand. It is always their dominant hand. Do not expect more than that. All creatures have at least one Head. Both are treated as one when it comes to equipment. You cannot place a different hat or helmet on each head. Only one hat or helmet is needed for both heads. The same applies to faces and necks. All creatures have at least one body slot for carrying gear. Wear is specifically for things worn on the body, such as clothing and armor. Limb slots are for bracelets and anklets. A creature has one limb slot for each arm and leg on its body. Digit slots are for fingers and toes. A creature has one digit slot for each hand and foot on its body. All creatures have four waist slots; there is a size limit to items placed at the waist.<br />
<br />
gender - Gender of creature, not case sensitive: Male, Female, Asexual, Hermaphrodite.<br />
<br />
hand - Dominant hand of creature, not case sensitive: Left Handed, Right Handed<br />
<br />
int - Signed integer value. Decimals are truncated.<br />
<br />
item - A variable that references an item atom. Item are atoms that represent a commodities in the environment.<br />
<br />
ll - A variable that contains a longitude latitude coordinate on a world.<br />
<br />
npc - A variable that references an npc atom.<br />
<br />
npcrole - A role for an AI controlled sentient: Citizen, Worker, Passenger, Crew, Troop, Officer, IndigenousPerson, IndigenousElder, IndigenousHealer, IndigenousStargazer.<br />
<br />
orbit - Orbit: Inferno, Inner, Habitable, Outer or Frigid also Any, Harsh (Inferno or Frigid), Mild (Inner, Habitable, or Outer), Uninhabitable (not Habitable).<br />
<br />
quality - Quality in the range 1 to 255.<br />
<br />
range - Communication range, not case sensitive.<br />
<br />
real - Signed real value.<br />
<br />
scenario - Avatar startup scenario, not case sensitive: Reach for the Stars, Citizen of the Galaxy, The Savage State, Lost Atlantis.<br />
<br />
sector - A variable that references a sector atom.<br />
<br />
sentient - A variable that references a sentient atom. Avatars and AI controlled citizens are sentient atoms.<br />
<br />
ship - A variable that references a spacecraft atom, could be a station.<br />
<br />
stage - Growth stage of creature, not case sensitive: Mature, Juvenile.<br />
<br />
stance - Political stance, not case sensitive. Empire, Vassal, Friend, Neutral, Enemy. Often used in conjunction with a stanceCheck int value which is 0=exact match, 1=stance equal or better sought, 2=stance equal or worse sought.<br />
<br />
station - Station that can be occupied, not case sensitive: Command, Citizen, Designer, Engine, FireControl, Game, Helm, Livestock, Medic, Navigation, Patient, Power, Sensor, Shield, Transporter, Troop, Turret<br />
<br />
system - A variable that references a solar system atom.<br />
<br />
text - Text string delimited with " quotes. May be split across script lines. Can contain fields to include variable information. e.g. [A.F] where A is a valid atom variable and F is a field. Fields available depend on the atom type: all atoms have Name; ships have NameWithEmpire; people have TitleName; creatures have HerHim, herhim, HersHis, hershis, MaamSir, maamsir, MomDad, momdad, MotherFather, motherfather, MsMr, NieceNephew, niecenephew, SheHe, shehe. e.g. '[monster.HerHim]' would be substituted with 'Her' or 'Him', depending on the gender of the 'monster' atom.<br />
<br />
unit - A variable that references a unit atom. Avatars, citizens, animals, vehicles and spacecraft are unit atoms.<br />
<br />
vehicle - A variable that references a vehicle atom.<br />
<br />
void - A function return value placeholder indicating a function does not return anything.<br />
<br />
world - A variable that references a world atom.<br />
<br />
==Functions==<br />
<br />
===Miscellaneous Functions===<br />
<br />
goto blockName - Unconditional branch to a block of the story.<br />
<br />
if(bool) blockName - In the catalyst block, 'if' tests determine when the story can start for an avatar and which block will begin the story.<br />
<br />
In body blocks, 'if' tests determine when to branch to another block of the story.<br />
<br />
Each block of the story, including the catalyst, may contain more than one 'if' to test and branch based on different conditions. The story engine checks the 'if' conditions of the current block every 10 seconds. Each 'if' is tested in the order it appears in the script. The first 'if' to return true results in a branch to its block of the story.<br />
<br />
choiceValue choiceMade() - Test for selection of a specific choice that was offered using a choice command on a comm channel.<br />
<br />
bool dateIsChristmas() - Test if the current date is Christmas eve or Christmas day. Returns true on 12/24 and 12/25.<br />
<br />
int secondsElapsed() - Returns the number of seconds that have passed since the current story block was started.<br />
<br />
bool wait(int) - Returns true if 'int' seconds or more have passed since the current story block was started.<br />
<br />
===Story Functions===<br />
Story functions configure the current story. Most story functions can only be used in the catalyst block. The only exception is the 'storyDroppable' function.<br />
<br />
void storyAuthor(text) - Identifies the author of the story. Required in catalyst block.<br />
<br />
void storyAutoRepeat() - Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyAutoRepeatUntilComplete() - Enables the story to automatically start repeatedly, based on the catalyst.<br />
<br />
The story can restart within 10 seconds of being terminated if an interval is not specified.The story stops autostarting once it has been completed.<br />
<br />
A story that is dropped is not considered to be completed.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyAutoStart() - Enables the story to automatically start once, based on the catalyst.<br />
<br />
Only one auto started story can be active at a time.<br />
<br />
void storyBrief(text) - Gives a brief description of the story. Required in catalyst block.<br />
<br />
void storyDroppable(bool) - Sets the current story's droppable state. The droppable state of a story can be changed at any time in the script.<br />
<br />
A story that is not droppable cannot be canceled by the avatar using the Jobs window. The avatar gets a thought message if they try dropping an undroppable story.<br />
<br />
Usually, avatars must be able to drop a story to enable it to restart. Disable drop only when dropping would break the story in some way.<br />
<br />
void storyInterval(int) - Specifies the time interval in minutes before the story can start again.<br />
<br />
The time interval starts when the story terminates, whether by finishing or by dropping.<br />
<br />
void storyTitle(text) - Declares the title of the story. Required in catalyst block.<br />
<br />
===Avatar Functions===<br />
<br />
Avatar functions operate on the avatar atom for whom the story is running.<br />
<br />
avatar avatar() - Returns the atom id of the avatar executing the story.<br />
<br />
bool avatarConstructedBuildingHabitable(building) - Test if the person has ever constructed a particular kind of building on a habitable world. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
bool avatarConstructedBuildingHarsh(building) - Test if the person has ever constructed a particular kind of building on a world with a harsh environment. True is returned if they ever planned one, regardless of whether it was completed.<br />
<br />
void avatarCreditGovtDebt(real) - Credits the person's government debt account with a number of cronodollars.<br />
<br />
bool avatarCurrentItem(commodity) - Test if the person's current item is a commodity.<br />
<br />
atom avatarEnvironment() - Returns the environment atom that contains the person. This is usually a solar system but it can be an arena or a design studio. The environment containing the person is the only environment a story can access.<br />
<br />
int avatarEVAMinutes() - Returns the number of minutes of EVA experience.<br />
<br />
bool avatarHadItem(commodity) - Test if the person's gear has ever contained a commodity.<br />
<br />
bool avatarHasFood() - Test if the person's gear contains any food.<br />
<br />
bool avatarHasItem(commodity) - Test if the person's gear contains a commodity.<br />
<br />
bool avatarHasItemInHand(commodity) - Test if the person is holding a commodity in their hand.<br />
<br />
bool avatarHasItemInHandSpecific(commodity,quality,empire,text) - Test if the person is holding a specific commodity in their hand. 'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
bool avatarHasItemSpecific(commodity,quality,empire,text) - Test if the person's gear contains a very specific commodity. 'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
bool avatarInCity() - Test if the person is in a city. The person must be standing in a developed terrain tile.<br />
<br />
bool avatarInitScenario(scenario) - Test if the person started the game using a specified 'scenario'.<br />
<br />
bool avatarInOrbit() - Test if the person is in orbit at a planet, outside the atmosphere.<br />
<br />
bool avatarInStudio() - Test if the person is inside a design studio instance.<br />
<br />
bool avatarInVehicle(commodity) - Test if the person is inside a certain type of vehicle.<br />
<br />
bool avatarInVehicleMoving(commodity) - Test if the person is inside a certain type of vehicle that is moving.<br />
<br />
bool avatarInVehicleOnGround(commodity) - Test if the person is inside a certain type of vehicle that is touching the ground.<br />
<br />
int avatarItemCount(commodity) - Returns the amount of a commodity possessed by the avatar.<br />
<br />
void avatarItemMakePermanent(commodity,quality,empire,text) - Makes permanent a specific item in the person's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void avatarItemSetDropOnDeath(int,commodity,quality,empire,text) - Sets the 'drop' behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop. 'bool' is the new state.<br />
<br />
bool avatarLineageAvatar() - Returns true if the avatar's lineage is a regular avatar.<br />
<br />
bool avatarLineageDemiavatar() - Returns true if the avatar's lineage is demiavatar.<br />
<br />
bool avatarLineageHighborn() - Returns true if the avatar's lineage is highborn.<br />
<br />
int avatarOnLineMinutes() - Returns number of minutes the person has been on line.<br />
<br />
bool avatarStoryCompleted(int) - Test if the person has completed a particular story script id.<br />
<br />
int avatarStoryLastResult(int) - Returns a result code associated with a particular story script id. 0 is returned if the story has never been started.<br />
<br />
void avatarStoryResult(int) - Stores the result for the current story in an avatar's memory. 'int' is result, in the range 0 to 255. <br />
<br />
int avatarVehicleMinutes(commodity) - Returns number of minutes the person has experience in a vehicle.<br />
<br />
===Atom Functions===<br />
<br />
Atom functions operate on a specific atom, which is the first argument of most atom functions. When the 'atom' argument is not valid, all functions return quietly.<br />
<br />
atom atom(int) - Casts 'int' to be an atom identifier.<br />
<br />
city atomCity(atom) - Returns the city capitol building atom whose jurisdiction controls the building site that contains 'atom'.<br />
<br />
The result is 0 if the atom's current building is not part of a city.<br />
<br />
If 'atom' is on a road, the capitol building whose jurisdiction contains 'atom' is returned.<br />
<br />
The result is 0 if 'atom' is not at a building site or on a road in a city.<br />
<br />
void atomComm(atom,channel,range,text) - Atom sends a message on a comm channel.<br />
<br />
void atomCommChannelToAtom(atom,atom,channel) - Atom opens a channel to the other atom.<br />
<br />
void atomCommChoice(atom,channel,range,choiceValue,text) - Atom says a choice on a comm channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
character atomCreateCharacter(atom,angle,real,text,gender,hand,empire,dna,stage) - Creates a character near 'atom', subordinate to the same parent as 'atom'. Will not create the charater if 'atom' is in a vehicle.<br />
<br />
Arguments:<br />
<br />
'angle' is relative to the atom's facing: 0 is forward, 90 is left, -90 is right and 180 is behind.<br />
<br />
'real' is a distance in meters.<br />
<br />
The new character's location will be in the domain of 'atom's parent. i.e. on the same ship or world. The path from 'atom' to the new character's location will be unobstructed. The final starting location will be no farther than 'real' meters from 'atom', even if it means starting on top of 'atom'. It will be closer than 'real' if the path to the starting location from the 'atom' is obstructed.<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
real atomDistanceToAtom(atom,atom) - Returns the distance between two atoms, in meters.<br />
<br />
int atomEmpire(atom) - Returns id value of an atom's empire. 0 if none.<br />
<br />
atom atomFindBuilding(atom,building,int,stance,int) - Locates a building of a specific 'building' type, subordinate to 'atom'.<br />
<br />
Arguments:<br />
<br />
'int' is under construction requirement 0=yes, 1=no, 2=ok,<br />
<br />
'stance' and 'int' are used to check the atom empire's stance toward the building's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
vehicle atomFindVehicle(atom,commodity,int) - Locates a vehicle of a specific 'commodity' type, subordinate to 'atom'. 'int' is 1 if the vehicle must be new, 2 if the vehicle must not be new, and 0 if you don't care.<br />
<br />
bool atomHasAtom(atom,atom) - Searches the atom recursively for an atom. Returns true if the atom is found.<br />
<br />
bool atomHasBuilding(atom,building,int,stance,int) - Test recursively if an atom has a building type. The atom might typically be a system, world or city.<br />
<br />
Arguments:<br />
<br />
'int' is under construction requirement 0=yes, 1=no, 2=ok,<br />
<br />
'stance' and 'int' are used to check the atom empire's stance toward the building's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
bool atomInSystem(atom,system) - Returns true if atom is in a solar system.<br />
<br />
bool atomIsAtom(atom,atom) - Returns true if atom == atom and atom is valid.<br />
<br />
sector atomSector(atom) - Returns the sector atom that contains 'atom'.<br />
<br />
bool atomValid(atom) - Returns true if the atom exists and looks valid. The atom must be in the same solar system, design studio, or arena as the avatar.<br />
<br />
world atomWorld(atom) - Returns the world atom that contains 'atom'. 'atom' may be subordinate to the world at any subatom level or distance, possibly in space.<br />
<br />
Returns 'atom' if atom is a world.<br />
<br />
ll atomWorldLL(atom) - Returns the longitude latitude of an atom, if it is on a world.<br />
<br />
===Blueprint Functions===<br />
Blueprint functions operate on the designs in the blueprint library. The library can contain many blueprints. Only the blueprints in use by game objects are loaded at any given time.<br />
<br />
Atoms may reference blueprints but blueprints are not atoms by themselves. i.e. a building atom references a building blueprint to know about its geometry and other design features.<br />
<br />
bool blueprintSpacecraftLoad(int) - Test if the spacecraft design is loaded. Signals the need for it to be loaded, if it is not already loaded.<br />
<br />
===Character Functions===<br />
Character functions operate on a character atom that was created by this story.<br />
<br />
Characters are associated with a specific instance of a story when they are created. This enables multiple instances of the same story to exist in an environment simultaneously.<br />
<br />
void characterDepart(character) - Causes a character to depart the scene. The character disappears instantly with no visual effect.<br />
<br />
void characterDie(character) - Kills a character. They fall to the ground and die like other sentient creatures. Their body dies of massive internal injuries with no bleed out time.<br />
<br />
void characterEquipFromCity(character,gearslot,commodity,text) - Transfer an item to a character's gear from the inventory of the current city.<br />
<br />
Arguments:<br />
<br />
'text' is an optional inscription to place on the item.<br />
<br />
Quietly does nothing if the character already has an item in that slot.<br />
<br />
void characterSetIndestructible(character,bool) - Sets indestructible state of a character.<br />
<br />
void characterWantItem(character,commodity) - Causes the character to want a specific commodity.<br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel.<br />
<br />
void characterWantItemSpecific(character,commodity,quality,empire,text) - Causes the character to want a very specific commodity.<br />
<br />
When a character wants an item, they will make a bid if it is offered on the voice channel.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
===City Functions===<br />
City functions operate on a capitol building atom.<br />
<br />
vehicle cityFindNewVehicle(city,commodity) - Returns a new vehicle in a city, at a factory that makes them.<br />
<br />
bool cityHasBuilding(city,building,int) - Test if a city has a number of completed levels of a building type, as shown on the city report. Levels are shops, fields, generators, etc. as appropriate to the type of building.<br />
<br />
bool cityHasFood(city) - Test if a city has any food in any of its buildings.<br />
<br />
bool cityHasItem(city,commodity) - Test if a city has a commodity in any of its buildings.<br />
<br />
Vehicle commodities return true if a new vehicle is found at a factory that makes them.<br />
<br />
bool cityHasPower(city) - Test if a city has any electricity.<br />
<br />
Arguments:<br />
<br />
'city' can be any building.<br />
<br />
int cityItemCount(city,commodity) - Returns the total amount of a commodity in a city's inventory. Does not count vehicles.<br />
<br />
int cityPopulation(city) - Returns the population of a city.<br />
<br />
===Creature Functions===<br />
Creature functions operate on a specific creature, which is the first argument of all creature functions.<br />
<br />
bool creatureIsDyingOrDead(creature) - Test if the creature's body is dying or dead.<br />
<br />
void creatureSetHealth(creature,int) - Sets health level of a creature.<br />
<br />
Arguments:<br />
<br />
'int' is the health level as a percentage, 0 to 100.<br />
<br />
void creatureSetMouth(creature,visage,visage) - Sets 'visage' pose of a creature.<br />
<br />
When the first 'visage' pose is an animated pose, the second 'visage' pose is set when the animation completes.<br />
<br />
void creatureSetVisage(creature,visage) - Sets 'visage' of a creature.<br />
<br />
===Find Functions===<br />
Find functions operate in the avatar's current environment. The environment is the solar system, design studio instance, or arena instance that contains the avatar.<br />
<br />
world findGasGiant(orbit) - Locates a gas giant in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findMoon(orbit) - Locates a moon in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findPlanet(orbit,int) - Locates a planet in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
'int' is maximum hydrographics percentage in the range 0 to 100.<br />
<br />
world findRing(orbit) - Locates a ring around a world in the current environment. Avatar must not be in deep space.<br />
<br />
Arguments:<br />
<br />
'orbit' may include the also types.<br />
<br />
world findRingWorld() - Locates a ringworld arc section in the current environment.<br />
<br />
Arguments:<br />
<br />
Avatar must not be in deep space.<br />
<br />
===Henge Functions===<br />
Henge functions operate on the henges that interconnect ringworld arc sections with other worlds in the ringworld's sector.<br />
<br />
text hengeSystemName(system) - Returns the name of a solar system that is known to contain a henge, as returned by the 'sectorHengeSystem' function.<br />
<br />
worldcat hengeSystemWorld(system,int) - Returns the catalog name of a habitable world that contains a henge portal, if any. The henge portal will be more than 200m from any city.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
world hengeWorld(worldcat) - Returns the world id of a henge world, given its catalog name. Story avatar must be in the solar system with the world.<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
ll hengeWorldLL(worldcat) - Returns the longitude latitude of a henge if there is one.<br />
<br />
Arguments:<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
text hengeWorldName(worldcat) - Returns the name assigned to a henge world, given its catalog name.<br />
<br />
bool hengeWorldPortalActive(worldcat,ll) - Test if the henge portal on a world is active. An active portal is indicated when the henge fire turns blue. That is when it operates as a portal.<br />
<br />
Arguments:<br />
<br />
'worldcat' is a catalog name of a henge world.<br />
<br />
===Item Functions===<br />
Item functions operate on a specific item, which is the first argument of all item functions.<br />
<br />
An item atom represents a commodity in the environment. Once it is picked up by anybody, the item atom ceases to exist and the item's data is added to their gear. The item atom can no longer be referenced after that.<br />
<br />
A new atom is created when that item, or any item, is dropped in the environment. It will not be the same atom as it was before being picked up. The item atom identifier must be reacquired to operate on the new item atom.<br />
<br />
void itemArmWeapon(item,unit,empire) - Arms a weapon, if the item is a weapon that can be armed. e.g. Plastic Explosive.<br />
<br />
Arguments:<br />
<br />
'unit' is the unit who armed the weapon.<br />
<br />
'empire' is the empire who armed the weapon.<br />
<br />
void itemCreateContent(item,bool,int,commodity,quality,empire,text) - Creates a new item inside 'item', which is expected to be a container.<br />
<br />
Arguments:<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'int' is condition percent, 1 to 100.<br />
<br />
If 'text' is not blank, it is inscribed onto the item.<br />
<br />
void itemDetonate(item) - Detonates an armed weapon, if the item is a weapon that is armed. e.g. Plastic Explosive. Other items disappear quietly.<br />
<br />
void itemMakePermanent(item) - Changes a story item into a permanent item.<br />
<br />
Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
item itemOnGround(commodity,real) - Locates an item on the ground nearby.<br />
<br />
Arguments:<br />
<br />
'real' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
item itemOnGroundSpecific(int,commodity,quality,empire,text) - Locates a specific item on the ground nearby.<br />
<br />
Arguments:<br />
<br />
'int' is the farthest distance from the story avatar to find the item, in meters.<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void itemSetDropOnDeath(item,int) - Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop.<br />
<br />
Arguments:<br />
<br />
'int' is the new state.<br />
<br />
void itemSetMessage(item,text) - Sets the message of an item, such as a beacon. This is not the inscription.<br />
<br />
Arguments:<br />
<br />
'text' is the new message.<br />
<br />
void itemSetState(item,int) - Sets the state of an item, such as the on/off state of a light or musical instrument.<br />
<br />
Arguments:<br />
<br />
'int' is the new state.<br />
<br />
===Narrator Functions===<br />
Narrator functions provide a means for communicating with the story avatar. Narrator communications are associated with the story itself and they do not emanate from any in-game source.<br />
<br />
void narratorHint(text) - Sends a text message on the narrator comm channel when requested by the person. Hints are requested using the ? button on the Jobs window.<br />
<br />
void narratorImage(file,text,text) - Sends a picture, a title, and an optional message on the narrator comm channel. The image appears automatically in a popup window.<br />
<br />
void narratorSay(text) - Sends a text message on the narrator comm channel.<br />
<br />
void narratorSayAudio(file,text) - Sends audio and an optional text message on the narrator comm channel.<br />
<br />
void narratorSayChoice(choiceValue,text) - Say a choice on the narrator comm channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
void narratorTitle(text) - Sends a text message on the narrator comm channel formatted as a title.<br />
<br />
void narratorVideo(file,text) - Sends video and an optional text message on the narrator comm channel.<br />
<br />
===Npc Functions===<br />
Npc functions operate on a specific npc, which is the first argument of all npc functions. Npc's are AI controlled citizens not including demiavatars who are AI controlled.<br />
<br />
void npcSetRole(npcrole) - Changes the role of an npc.<br />
<br />
The role of an npc cannot be changed while they hold a berth.<br />
<br />
===Sector Functions===<br />
Sector functions operate on a specific sector, which is the first argument of all sector functions.<br />
<br />
bool sectorHasHengeSystem(sector,int) - Test if the sector contains a habitable world with a henge portal. The henge portal will be more than 200m from any city.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
system sectorHengeSystem(sector,int) - Returns a solar system that contains a habitable world with a henge portal, if any. The henge portal will be more than 200m from any city.<br />
<br />
If more than one of them exists, one is chosen randomly. Ringworld systems are not returned even though they always contain henge portals.<br />
<br />
Arguments:<br />
<br />
'int' is henge type: 0=any, 1=on globe, 2=on ringworld<br />
<br />
===Sentient Functions===<br />
Sentient functions operate on a specific sentient creature, which is the first argument of all sentient functions.<br />
<br />
void sentientAttackUnit(sentient,unit) - Order a sentient to attack a unit.<br />
<br />
void sentientCreateGear(sentient,gearslot,bool,commodity,quality,empire,text) - Create an item in a sentient's gear.<br />
<br />
Arguments:<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'text' is inscribed on the item if not blank.<br />
<br />
item sentientDropGear(sentient,gearslot) - Drops the item at a sentient's gear slot.<br />
<br />
item sentientDropGearItem(sentient,commodity) - Drops an item from a sentient's gear.<br />
<br />
void sentientFireWeapon(sentient) - Order a sentient to fire their weapon in hand at nothing in particular.<br />
<br />
void sentientFollowAvatar(sentient) - Order a sentient to follow the person.<br />
<br />
void sentientFollowSentient(sentient,sentient) - Order a sentient to follow another sentient.<br />
<br />
void sentientGetItem(sentient,item) - Order a sentient to pick an item up off the ground.<br />
<br />
void sentientGoToAvatar(sentient) - Order a sentient to go to the avatar.<br />
<br />
void sentientGoToLL(sentient,ll) - Order a sentient to go to a longitude latitude.<br />
<br />
void sentientGoToLLExactly(sentient,ll) - Order a sentient to go to a longitude latitude as precisely as possible.<br />
<br />
void sentientGoToRoom(sentient,text) - Order a sentient to go to a room, by room name. The sentient needs to be aboard a spacecraft.<br />
<br />
void sentientGoToUnit(sentient,unit) - Order a sentient to go to a unit.<br />
<br />
bool sentientHasItem(sentient,commodity) - Test if the sentient possesses a specific commodity.<br />
<br />
bool sentientHasItemSpecific(sentient,commodity,quality,empire,text) - Test if the sentient's gear contains a very specific commodity.<br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void sentientHengeCeremony(sentient,ll) - Order a sentient to perform the henge ceremony, if a henge is found near 'll'.<br />
<br />
void sentientItemMakePermanent(sentient,commodity,quality,empire,text) - Makes permanent a specific item in the sentient's gear. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends. <br />
<br />
Arguments:<br />
<br />
'text' is compared against the inscription only if 'text' is not blank.<br />
<br />
void sentientItemSetDropOnDeath(sentient,int,commodity,quality,empire,text) - Sets the drop behavior of an item: 0=default random drop on death, 1=no drop, 2=always drop.<br />
<br />
Arguments:<br />
<br />
'bool' is the new state.<br />
<br />
void sentientMoveBack(sentient,real) - Order a sentient to move backward a distance specified in meters.<br />
<br />
void sentientMoveForward(sentient,real) - Order a sentient to move forward a distance specified in meters.<br />
<br />
void sentientSay(sentient,text,visage) - Order a sentient being to say a message on the Voice channel.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayAudio(sentient,file,text,visage) - Order a sentient to say a message on the Voice channel. The audio emits from the sentient.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayChoice(sentient,choiceValue,text,visage) - Order a sentient being to say a choice on the Voice channel. A choice message appears with a bright green asterisk.<br />
<br />
Several choices may be stated if each is given a different choiceValue.<br />
<br />
Result of player's choice is tested using the choiceMade function.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayImage(sentient,file,text,text,visage) - Order a sentient to say a message on the Voice channel. The image appears automatically.<br />
<br />
Arguments:<br />
<br />
'text' args are image title and text to say.<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSayTo(sentient,atom,text,visage) - Order a sentient being to say a message on the Voice channel to someone. They will turn to face them.<br />
<br />
Arguments:<br />
<br />
'visage' is the mouth pose after speaking, may be None to leave it as is.<br />
<br />
void sentientSellGearItem(sentient,atom,commodity,int) - Offers an item from a sentient's gear on the Voice channel.<br />
<br />
Arguments:<br />
<br />
'atom' is the target of the sale, causing sentient to turn to face them; it can be null.<br />
<br />
The best Q 'commodity' possessed by 'sentient' is offered for sale.<br />
<br />
'int' is the price, which can be 0 to offer it for free.<br />
<br />
void sentientStay(sentient) - Order a sentient to stay at their current location.<br />
<br />
===Ship Functions===<br />
Ship functions operate on a specific spacecraft, which is the first argument of all ship functions.<br />
<br />
void shipChargeCapacitor(ship) - Fills the capacitor to 100% on a ship.<br />
<br />
void shipChargeShields(ship) - Fills the shields to 100% on a ship.<br />
<br />
character shipCreateCharacter(ship,int,text,gender,hand,empire,dna,stage) - Creates a character aboard 'ship'.<br />
<br />
Arguments:<br />
<br />
'int' is placement strategy: 0=transporter void location, 1=crew or troop void location, 2=colonist void location.<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
void shipCreateCrew(ship,dna) - Fills all empty crew positions on a ship.<br />
<br />
Arguments:<br />
<br />
'dna' is used to create the new crew members.<br />
<br />
void shipCreateTroops(ship,dna) - Fills all empty troop positions on a ship.<br />
<br />
Arguments:<br />
<br />
'dna' is used to create the new troops.<br />
<br />
sentient shipFindAI(ship,npcrole) - Locates an AI controlled sentient aboard a ship.<br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them.<br />
<br />
sentient shipFindAIInRoom(ship,npcrole,text) - Locates an AI controlled sentient aboard a ship, in a specific room.<br />
<br />
The returned sentient will be an NPC or a demiavatar who is offline and AI controlled. The sentient will not be at a station or post; use shipStationOccupant to find them.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
npc shipFindNpc(ship,npcrole) - Locates an npc aboard a ship.<br />
<br />
Does not find demiavatars.<br />
<br />
npc shipFindNpcInRoom(ship,npcrole,text) - Locates an npc aboard a ship, in a specific room.<br />
<br />
Does not find demiavatars.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
void shipInteriorLight(ship,int) - Sets a ship's interior light state. 0=off, 1=on, 2=dim.<br />
<br />
void shipManeuverDrive(ship,int) - Sets a ship's maneuver drive state. 0=off, 1=on, 2=hold.<br />
<br />
void shipPowerPlant(ship,int) - Sets a ship's power plant state. 0=off, 1=on.<br />
<br />
void shipRefuel(ship,int) - Fills the fuel cells to 100% on a ship with 'int' quality fuel.<br />
<br />
void shipRetreat(ship) - Ship selects a random solar system and goes directly there at maximum speed, without using wormholes. This is an exit-the-scene maneuver.<br />
<br />
void shipShields(ship,int) - Sets a ship's shield state. 0=off, 1=on.<br />
<br />
creature shipStationOccupant(ship,station) - Returns a creature who is controlling or occupying a station on the ship.<br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned.<br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled.<br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned.<br />
<br />
Designer returns an avatar in a designer instance.<br />
<br />
Livestock returns an animal.<br />
<br />
creature shipStationOccupantInRoom(ship,station,text) - Returns a creature who is controlling or occupying a station on the ship.<br />
<br />
When multiple redundant stations exist, the sentient currently controlling the underlying system is returned. e.g. when two helms exist the active pilot is returned.<br />
<br />
Unless otherwise noted here, the returned creature will be an NPC or a demiavatar who is offline and AI controlled.<br />
<br />
Command station prefers to return the AI officer with the con. If none is found, any AI officer is returned.<br />
<br />
Designer returns an avatar in a designer instance.<br />
<br />
Livestock returns an animal.<br />
<br />
Arguments:<br />
<br />
text - Room name to find station occupant, as returned by unitRoomName.<br />
<br />
===Unit Functions===<br />
Unit functions operate on a specific unit, which is the first argument of all unit functions. A unit is any creature, vehicle, or spacecraft.<br />
<br />
ship unitAboardShip(unit) - Returns the ship that the unit is aboard, could be on the hull or hanging from a ladder.<br />
<br />
bool unitAtBuilding(unit,building) - Test for presence of a unit at a particular building site. Does not have to be inside the building.<br />
<br />
world unitAtWorld(unit) - Returns the world that the unit is at. They could be inside or outside the atmosphere.<br />
<br />
bool unitInOrbit(unit) - Test if the unit is in orbit at a planet, outside the atmosphere.<br />
<br />
ship unitInsideShip(unit) - Returns the ship that the unit is inside. The unit must be in a room, not on the hull or hanging from a ladder.<br />
<br />
text unitRoomName(unit) - Returns the name of the room that the unit is inside. The room may be in a ship or in a building. Blank is returned when the unit is not inside a room.<br />
<br />
ship unitStationInTradeRange(unit,stance,int) - Returns station that is within trade range of the unit.<br />
<br />
Arguments:<br />
<br />
'stance' and 'int' are used to check the station empire's stance toward the unit's empire. 'int' 0=stance must match, 1=stance must match or be better, 2=stance must match or be worse.<br />
<br />
===Vehicle Functions===<br />
Vehicle functions operate on a specific vehicle, which is the first argument of all vehicle functions.<br />
<br />
void vehicleRefuel(vehicle) - Fills the fuel cells to 100% on a vehicle.<br />
<br />
===World Functions===<br />
World functions operate on a specific world, which is the first argument of all world functions.<br />
<br />
bool worldAtmosphereBreathable(world) - Test if the world atmosphere is breathable.<br />
<br />
bool worldClaimed(world) - Test if the world is claimed by any empire.<br />
<br />
bool worldClaimedBy(world,empire) - Test if the world is claimed by 'empire'.<br />
<br />
character worldCreateCharacter(world,ll,text,gender,hand,empire,dna,stage) - Creates a character on 'world' at 'll'.<br />
<br />
Arguments:<br />
<br />
'text' is the name of the new character.<br />
<br />
If a character with the same name and story instance exists in the environment, it is moved rather than create a new character.<br />
<br />
'dna' specifies the DNA of the character. However, if the avatar of the story has ever met a story character with the same name, in any prior encounter, then the 'dna' argument is overridden by the DNA of the original character met by the avatar.<br />
<br />
void worldCreateIndigenous(world,ll,dna) - Create an indigenous village on a world. Establishes the indigenous DNA using 'dna' if it is not already set.<br />
<br />
item worldCreateItem(world,ll,bool,commodity,quality,empire,text) - Create an item on a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the item.<br />
<br />
'bool' is true to make the item permanent. Permanent story items persist in the game after the story ends. Nonpermanent story items are removed from the game when the story ends.<br />
<br />
'empire' is the empire of origin of the item.<br />
<br />
'text' is inscribed on the item if not blank.<br />
<br />
ship worldCreateShip(world,ll,real,int,quality,empire,text) - Create a spaceship at a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the spaceship. When altitude AGL is 0, a 50m radius about ll must be clear of obstructions to succeed.<br />
<br />
'real' is the altitude in meters AGL if alt<500; alt>500 puts the ship at atmosphere radius + alt. Standard orbit is about 2000m above the atmosphere.Parking altitude is about 1500m above the atmosphere.<br />
<br />
'int' is the design id of the ship.<br />
<br />
'empire' is the empire who owns the spaceship.<br />
<br />
'text' is the name of the ship, set randomly if this is blank.<br />
<br />
vehicle worldCreateVehicle(world,ll,commodity,quality,empire) - Create a vehicle on a world.<br />
<br />
Arguments:<br />
<br />
'll' is the location to create the vehicle. A 5m radius about ll must be clear of obstructions to succeed.<br />
<br />
'empire' is the empire who owns the vehicle.<br />
<br />
bool worldHasCity(world) - Test if the world has any cities at all.<br />
<br />
void worldHengeCeremony(world,ll,int) - Sets the state of the henge ceremony, if there is a henge.<br />
<br />
Arguments:<br />
<br />
'int' is ceremony state: 1=Active, 0=inactive.<br />
<br />
int worldHydrographics(world) - Returns the world's water percentage in the range 0 to 100.<br />
<br />
bool worldIsGasGiant(world) - Test if the world is a gas giant.<br />
<br />
bool worldIsMoon(world) - Test if the world is a moon. Moons are small globe satellites with no atmosphere.<br />
<br />
bool worldIsPlanet(world) - Test if the world is a planet. Planets are the primary worlds in a solar system, apart from gas giants.<br />
<br />
bool worldIsPlanetoid(world) - Test if the world is a planetoid. Planetoid is a tiny globe in an asteroid belt, orbiting a sun.<br />
<br />
bool worldIsRing(world) - Test if the world is a ring. A ring is a band of small rocks and ice, orbiting a planet.<br />
<br />
bool worldIsRingworld(world) - Test if the world is a ringworld arc section.<br />
<br />
bool worldIsTitan(world) - Test if the world is a titan. Titans are large satellites with an atmosphere.<br />
<br />
ll worldLandLocation(world,real,real) - Returns a location that is on land.<br />
<br />
Arguments:<br />
<br />
First 'real' is minimum altitude MSL, in meters.<br />
<br />
Second 'real' is minimum radius from forbidden zones, in meters; 0 does not avoid forbidden zones.<br />
<br />
ll worldLandLocationNear(world,ll,real,real,real) - Returns a location that is on land somewhere near 'll'.<br />
<br />
Arguments:<br />
<br />
First 'real' is minimum altitude MSL, in meters.<br />
<br />
Second 'real' is minimum distance from 'll', in meters.<br />
<br />
Third 'real' is maximum distance from 'll', in meters.<br />
<br />
bool worldOrbitFrigid(world) - Test if the world is in the frigid orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitHabitable(world) - Test if the world is in the habitable orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitInferno(world) - Test if the world is in the inferno orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitInner(world) - Test if the world is in the inner orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
bool worldOrbitOuter(world) - Test if the world is in the outer orbit zone. Also true if the world is a satellite of a world in that zone.<br />
<br />
ll worldRelativeLL(world,ll,real,real) - Returns a location that is offset from another location.<br />
<br />
Arguments:<br />
<br />
'll' is the reference location.<br />
<br />
'real,real' is horizontal, vertical offset, in meters.<br />
<br />
bool worldSupportsAnimals(world) - Test if the world can support animal life. World could be in the inner, habitable or outer orbit zone to support animals.<br />
<br />
All worlds that support animals also support plants.<br />
<br />
bool worldSupportsPlants(world) - Test if the world can support plant life. World could be in the inner, habitable or outer orbit zone to support plants.<br />
<br />
Worlds that support plants do not necessarily support animals.</div>Haxus