Adding Your First Ship
From HSpace
Contents |
Building Your First Ship
This section of the document assumes you have already setup a universe to contain space objects and have setup one or more ship classes. If you have not already setup a class, you will likely want to read Ship Class Creation before proceeding. The remainder of this tutorial expects a ship class to already exist.
Activating a Ship
A ship in HSpace is an instantiation of a ship class. Upon activation, the ship is set with all the values contained in the class. However, the ship can be customized further if desired by utilizing various @space commands to modify its abilities and systems. Ships are nothing more than a simple object but with the proper setup they can contain rooms used to describe the cockpit, engineering room, or even the loading bay if the ship is a cargo hauler. Massive ships representing space stations can be constructed with many rooms allowing areas for role play. However, let’s start simply by using the simple demonstration class setup earlier.
The first thing that is needed is an object to represent the ship. So create it.
@create Demo Ship I
You may wish to jot down the DBREF of the object created as it can be used in place of the actual name of the ship for any of the following steps. Next, HSpace needs to know that this object is a ship. This is accomplished by activating the ship. Activation sets the ship with the default values from the specified class.
@space/activate Demo Ship I=<class number>
If you are reading along through this document, you likely only have a single class. If you have multiple classes, use @space/list classes to select the class and use the appropriate class number. Once the command is complete, you can type @space and see that a new ship has been added. If you have multiple universes, you will need to change the ship to the proper universe id via:
@space/set Demo Ship I/uid=<UID>
You might also want to set the ship’s name within HSpace so it can be used in relaying messages to other ships. This is done by:
@space/set Demo Ship I/name=<newname>
You may also want to set the X, Y and Z coordinates for the ship using the same command. E.g. @space/set <ship>/<X|Y|Z>=<coordinate>. @space/set demo/x=1000, @space/set demo/z=- 10000
Adding Rooms to the Ship
For our purposes, let’s assume that Demo Ship I is just a small fighter with a single area for occupants. To make the ship more pleasant, a room will be added that can be used for this purpose. Such rooms are normal MUSH rooms that have been added to the ship via the @space/addsroom command. These rooms are not linked to the normal MUSH grid and mayneed to have the floating flag or various warnings removed from them depending on the type ofserver selected. So setup the room:
@dig Demo I Cockpit
@describe Demo I Cockpit=Two seats dominate the fore of the craft used to house the pilot and one passenger. A wide assortment of lights, gauges and levers surround the front seat.
Now, add the room onto the ship object.
@space/addsroom Demo Ship I=<dbref of Demo I Cockpit>
Now our ship has a room. If you are building a larger ship with multiple rooms, you can dig and describe the entire ship setup prior to adding the rooms to the ship. Once the ship is complete, you can walk through the entire area adding each room to the ship in turn. Exits leading in between rooms do not need to be handled in anyway. They are merely normal exits just like you would have in a normal gaming area.
Setting Up Consoles
Unless you plan on typing a whole lot of @space commands, it is now time to add consoles to the ship. Consoles are MUSH objects with $commands set on them that interface to the HSpace system. They are typically configured as parent objects. You can find Example Consoles if you do not already have them.
Consoles also need to be set with the proper flags and have the proper permissions. (!no_command for Penn, Commands for Tiny and inherit or be set with Wizard permissions). Once you have a console uploaded, you can proceed with adding a console to our demo ship. I chose a single parent console that combines the majority of the @nav and @eng commands.
Setup the console within the MUSH:
- @create Console
- @parent Console=<parent console dbref>
- @set Console=!no_command (Penn) or Commands (Tiny)
- @set Console=Inherit
Add the console to our demo ship:
- @space/addconsole <ship dbref>=Console
Finally, place the console in the cockpit of the ship. You should be able to man the console and startup the ship utilizing the commands as set on the parent console. As those commands can vary based on the console parent, they are not covered here. Larger ships may have more than one console. Often, there is a console for the navigation commands, one for engineering, one or more weapons consoles and even command consoles. To HSpace, a console is just an object that is allowed to manipulate the ship. The softcoded commands on (or inherited from a parent), allow HSpace administrators to tailor console functionality to what is desired for the specific console interface.
Boarding and Disembarking
In order to board to depart your ship, HSpace needs to have a couple more things set. First, to get off the ship, you must set the SHIP attribute on the room(s) that can be used for disembarking. Since Demo Ship I only has a single room, the choice is clear.
&SHIP <cockpit room dbref>=<dbref of ship object>
Once that is set, you should be able to use the disembark command to leave the ship. However, HSpace also needs to be told where people boarding the ship end up. To specify this, set the BAY attribute on the ship object with the destination room for boarding. Again, the Demo Ship is simple as it only has one room.
&BAY <dbref of ship object>=<cockpit room dbref>
Most ships only have a single room for both of these. In fact, HSpace only handles a single location for boarding but you could have multiple locations for disembarking. It doesn’t really make sense to have a 1-way exit in a spaceship though.
That’s it. You should now be able to fly around the HSpace universe. If the ship class you used has a fuel system, you will need to fill it up using @space/sysset <dbref>:fuel system/burnable fuel=<amount> and reactable fuel as well. So if it doesn’t power up properly, make sure to check for that.
