Plug-In Design:How do I make a mission?

Ingredients:

- a plan for the mission
- the availability
- the travel destinations
- any cargo involved
- any ships, aux ships involved
- result if successful
- result if unsuccessful
- other aspects, time limit, can abort, etc.
- text written for the mission
- all relative resources prepared (wëap, shďp, përs, etc.)

Uses:

Missions are the heart of Escape Velocity. It is through missions that the player progresses through your story. You may wish set up missions for a player to get started, as well as more advanced missions that are not available until the player reaches a certain combat rating or legal status, or completes a certain set of missions.

It is a good idea to be very organized when building missions. In fact, it may be best to wait until everything else is complete before you start work on the mission. Missions can have many aspects, and rely on systems, planets, ships, people and/or cargo to be present in order for them to work properly.

One special aspect of Escape Velocity is that you can set up to 256 mission bits. Not all missions need to use mission bits, but missions that rely on other missions to be completed will need to utilize this feature. It is important that you keep track of your mission bits, and that they are working properly. This will allow you to create branching missions or campaigns, or even deny other missions as a result of a failure. See the mission bits section below.

Construction:

The construction of a mission is nothing more than entering text and numbers into fields in the mďsn and dësc resources. However, it is very important to understand how each field works. Review the mďsn resource section in the EV Bible extensively, since it describes many features in detail.

The dësc resource is used to hold the text for your missions. The intro text is linked to the mďsn resource ID. Place the intro text in dëscID 4000 + (mďsnID - 128). Other text, such as the BriefText, QuickBrief, CompText, etc., can be stored in dësc ID's above 5000.

Many of the fields in the mďsn resource are self explanatory, however, there are some tricky points. The CargoType field, for example. In the STR# resource "All Cargo" are a number of different types of cargo. The type of cargo you want to put into the CargoType field will be the number you see in "All Cargo" minus one. For example, in the "Ferry Passengers" mission, the cargo is Passengers. In "All Cargo" this is number 7; in the mďsn resource, it's 6.

The mďsn resource offers 256 mission bits that can be used in a variety of different ways. Mission bits are like switches; they can be either on or off. These bits are used to control the flow of missions. Generally, you will want to turn ON a mission bit when the player COMPLETES a certain mission. Sometimes, you will want to turn on another mission bit when the player FAILS a mission. And in some cases, you'll want to turn on a third mission bit. With all these cases, you can also CLEAR mission bits, turning them OFF. To turn a bit on, you simply enter its number (0-255) into the appropriate Mission Bit field. To turn it off, you would add 1000 to the bit number (so, to turn bit 10 off, you'd put 1010 into the bit field).

You can choose any number between 0 and 255 for your bit, but the convention for selecting the number is to take the ID number of your mission and subtract 128 from it. So, if your mission is 128, its bit would be 0. If your mission is 300, its bit would be 172.

There are several options when working with multiple mission bits within one mission (say, a completion bit and a fail bit). You could use the formula above for the comp bit, then add one to that for the fail bit and SKIP the next ID (because you'd be using its bit number in this mission already). Or, you could pick an arbitrarily high number that you don't think you'll reach (like 200) and use that as the first fail bit you use, then 201 for the next mission that has a fail bit, and so on.

When working with a single mission, you'd use mission bits to make sure the mission shows up only once if it's completed (unless you want a mission like "Rush Delivery," where you would want it to be available many times).

There are several other ways that missions can be offered, or not offered, to the player. Missions can have a minimum combat rating requirement, or a minimum record (good or bad) requirement in order for the mission to be available. Missions also have a random factor, causing the mission only to be present a certain percentage of times the player lands on the planet that is offering the mission.

Onto the bits:

CompBitSet: this is the most common field to be entering bits into. This field, as the name implies, sets, or "turns on," the bit entered into it. This can be used for a single mission you only want to run once, or to link a series of missions together.

FailBitSet: this field is only used when you want to have branching mission series (missions that can go one way or another depending upon whether the player completes or fails it). As in CompBitSet, it will turn on the bit you specify. REMEMBER: there are no "compbits" or "failbits" -- just bits that are either ON or OFF. So YOU have to keep track of which are for completions and which are for failures.

CompBitSet2: does exactly the same thing as CompBitSet. You may ask, then, why is it there? It's there because you sometimes need to turn on a second bit when a mission is completed. This is usually done for branching missions and/or VisBit missions (see "How do I make a system").

AvailBitClr: used in conjunction with CompBitSet for a single mission, this allows the mission to run only if the specified bit is CLEAR (or OFF). So, if your mission has CompBitSet 230 and the player successfully completes it, bit 230 is now ON. You would also have put 230 into the AvailBitClr field (assuming you want it to be offered only once), so the player cannot get this mission again, unless bit 230 becomes cleared somehow.

AvailBitSet: this is used ONLY when you want your missions linked to one another (as in a series of missions, like "Rebel Pursuit" parts 1-4, or in missions dependent upon previous missions, even if they don't come right after one another). Basically, this is another factor that determines if a mission can be offered. If a bit number is placed in AvailBitSet, that mission can ONLY be offered if that bit is set (ON). If you put 1000 + the bit number, the mission can only be offered if that bit is OFF.

For example, say you've got three missions that make one contiguous series, MyMission1, MyMission2, and MyMission3. Their IDs are 128, 129, and 130, respectively (usually you won't use these IDs in a normal plug-in because they'll replace missions from EV itself). When the player completes MyMission1, you want to offer MyMission2 (either right away or at some later point). So, MyMission1's CompBitSet will be 0 (128-128), and its AvailBitClr will also be 0 (so it can't be offered again and EV will look for other missions to offer, presumably MyMission2). Now, MyMission2 will have AvailBitSet 0, meaning it will only be offered when Bit 0 is ON. Completing MyMission1 turned Bit 0 on, so MyMission2 can be offered at this point. Now, MyMission2 will have CompBitSet 1 (129-128) and AvailBitClr 1 as well. If the player completes MyMission2, he should be able to go onto MyMission3. So MyMission3 will have 1 in its AvailBitSet field. That's all there is to it, really. It sounds more complicated than it is, but you'll find that creating strings of missions without complicated branching or visbits is very easy.

For EV Nova the principle is the same, but you use NCBs rather than Mission Bits. NCBs are much more powerful and you need to read the first section of the EV Nova Bible CAREFULLY to understand them.

Nova also introduces REQUIRE and CONTRIBUTE, which can add to you mission writing pleasure. Furthermore, you can trigger bits when a special ship event occurs, as well as introducing text at that point.

Another refinement is that missions can now appear in the Outfitters, the Shipyard and the Commodity centre, as well as in the Bar, the Mission Computer and from PERS ships. NCBs allow buying or selling an outfit or a ship to start or abort missions automatically.

(This message has been edited by Martin Turner (edited 11-03-2003).)