So you’ve built your level, but you want to make it playable through Darkloader? You’ll need a copy of missflag.str. This is a string file, which is just a text file saved with the .str extension. You can find the original in your strings.crf file. Crf files are simply renamed zip files and can be opened with Winzip or WinRar. You need to save a copy of this file in your strings folder (C:/Thief 2/strings/ - or wherever your install directory is). If you open the file in Notepad, this is what you’ll see:
Valid mission flags
skip This mission doesn’t exist; it should be skipped.
no_briefing Skip the briefing movie
no_loadout Skip the loadout
cutscene Play a cutscene immediately afterward
end End the game when this mission is completed
miss_1: “no_loadout”
miss_2:
miss_3: “skip”
miss_4:
miss_5: “no_loadout,cutscene”
miss_6:
miss_7:
miss_8:
miss_9:
miss_10: “no_loadout”
miss_11:
miss_12:
miss_13:
miss_14:
miss_15: “no_loadout”
miss_16: “cutscene,end”
Bank→Blackmail
miss_7_next: “9”
Blackmail→Courier
miss_9_next: “8”
Courier→Viki’s Realm
miss_8_next: “10”
Unwelcome Guest → Precious Cargo
miss_11_next: “14”
Kidnap→Casing
miss_15_next: “12”
Masks→Endgame
miss_13_next: “16”
we will want something like this
(see drkmislp.c)
please remove this comment when you actually put it in.
miss_10_endmovie: “cs10”
miss_1: “skip”
There are a number of optional flags that we’ll cover in a minute. But first of all, you’ll want to change missflag.str to contain info about your mission. Assuming you don’t want to include any of the original missions in your campaign, you should change the text in the inverted commas after each official mission to read “skip”:
etc. Once this is done, you can add the info about your own mission. You should have saved your .mis file as “missXX.mis” where XX is a number above 16. Be warned that high numbers can cause unexpected problems up to and including sudden game crashes. You shouldn’t go much higher than miss30.mis unless you can’t avoid it!
So if you have a miss17.mis, you should add the following line to your missflag.str file:
miss_17: ” ”
Now you can add several different tags to the inverted commas of your mission. These are written in comments in the file, but I have explained them fully here:
skip - if you add this to the mission flags, the mission will be skipped by Thief when the game is loaded. This mission essentially doesn’t exist as far as the game is concerned.
no_briefing - if you have not made a briefing .avi movie for your mission, you should add this. If you have, the game will look for a briefing movie with the same number as your mission. In our example, we would need to make
B17.avi (B for briefing!) and put it in the Movies folder.
no_loadout - If you have not set up a pre-mission store, you should add this. This will skip the interface screen that allows you to shop for items before the start of the mission.
cutscene - this should be added if you have a movie file that you want to play after the mission is complete. Cutscene file format is
CSXX.avi - where XX is the mission number. Cutscenes need to go in the Movies folder, the same as Briefings.
end - if you put this in your mission flags, the game will end as soon as this mission is complete. Typically you want to put this in your mission flags unless you are making a campaign with multiple missions.
So, if you had a simple mission with no movies and no in-game store, you would put:
miss_17: “no_briefing,no_loadout,end”
Note that multiple tags are separated by commas. Remember also that you must set the mission number in Dromed. Go to Editors > Mission Parameters and open Dark Mission Description. Type the mission number into the Mission Number box (e.g. 17), and in the Mission Pathname box, type missXX (where XX is the mission number, so for example miss17).
==== Setting up a multiple mission campaign ====
OK, that’s fine for one fan mission, but what if you’ve made two, three or even more missions, and you want to be able to play them in sequence? One way is to release each mission separately and label them as Part one, two, three etc. This may be the best solution in many cases, especially if you want to leave your players on a cliffhanger until you’ve finished the next part! But if you want to release the missions all at the same time, you’ll need to set up missflag.str accordingly.
Let’s say we’ve made three missions, miss17.mis, miss18.mis and miss19.mis. We could set up our missflag.str as follows:
1. Set all the official missions to “skip” as described above.
2. Add the following lines:
miss_17: ” “
miss_18: ” “
miss_19: “end”
Of course, you will probably want to also add no_briefing or other tags as appropriate! When Thief reads missflag.str, it’ll play all the missions it finds in numerical order. So it’ll read through, skip missions 1-16, play mission 17, then move to mission 18, and then to mission 19, where it encounters an
end tag, thereby finishing the campaign and taking the player back to the main menu.
But what if you decide to change the plot of your mission halfway through, and suddenly it makes more sense for mission 19 to come before mission 18? You could renumber the missions, but this would require renaming all the intrface and other folders with that mission number. Instead, there’s a simple way of changing the play order of the missions within missflag.str. Simply add the following syntax:
miss_XX_next: “YY”
This tells the game to move to the specified mission instead of the next one numerically. So in our example we would put:
miss_17: ” “
miss_18: “end”
miss_19: ” “
miss_17_next: “19”
miss_19_next: “18”’‘
So Thief will read through missflag.str, find mission 17 and play it, but then it’ll read the later line, and instead of moving to the next mission in numerical order, it hops to mission 19. After mission 19 is finished, normally it would look for an “end” tag, or miss20. Instead, it reads the last line, which tells it to go to mission 18. Once mission 18 is finished, it then encounters the end tag and heads back to the main menu. In this way, it’s possible to get a very confusing missflag.str, so use this technique sparingly!
==== Carrying Over an Automap ====
If you’ve got a campaign with two missions based on the same location, with the same brushwork in Dromed and the same map (like Casing the Joint and Masks), it makes sense for Garrett to remember where he has visited. In fact, both missions should really use the exact same map, including the same automap locations. There’s a solution to this, which you can set up very easily. Let’s take an example - we’ve got a campaign where Garrett has to break into a prison to free someone in Mission 17, and then later, he gets captured and has to break out of the same prison in mission 20. It makes sense to give Garrett an advantage if he’s been here before.
So open the second mission in Dromed (miss20 in our example), and go to Editors > Mission Parameters. Double click Automap Info. Simply put the number of the first mission into the “Source mission” box, in this case 17. Now Dromed will look for the map for mission 17 when it loads mission 20. Assuming you’ve set up an automap, anywhere that Garrett visited in mission 17 will be highlighted in blue in mission 20.