-
Notifications
You must be signed in to change notification settings - Fork 25
Game Modifications ‐ Missxx.ini
The missxxx.ini files are how the fan port stores Syndicate Wars campaigns and mission objectives of every level in the game. In the original DOS release of the game, there were multiple files called ALLXXX.MIS that contained this data. However the game only supported using one of them, and they were in a complex proprietry structure that was difficult to edit (as the intention was players should never touch it). With the fan port this data is now presented as a text based .ini file that can be edited in any text editor, and without complex knowledge of the data structure. By editing these files it's now possible to change the properties of the campaign and the objectives the player must achieve to complete the missions that make up the campaign.
miss000.ini - original Eurocorp campaign
miss001.ini - original Church of the New Epoch campaign
miss002.ini - Recreation of the unfinished cut Unguided campaign
miss003.ini - a bonus campaign of the large number of leftover cut levels included with the game arranged to make them playable
miss099.ini - multiplayer levels list
These are defined at the top of the file.
TextName - The name of the campaign
TextId - The text ID in text.dat containing this campaign name
Type - Type of campaign, single player (SP) or multiplayer (MP)
Selectable - Whether this campaign is selectable when starting new game
MissionsCount - Total number of missions in the file
FirstTrigger - The first mission index triggered for play at the start of the campaign
NetscanTextId - Text ID in (text.dat) containing string for "Netscan" button for this start mission
WeaponsTextIdShift - TextID shift added to weapon TextID to get weapon name string
StandardWeapons - Which weapons the player starts with already researched and available for purchase at the start of the campaign
ResearchWeapons - Weapons available to research at the start of the campaign
StandardMods - Cyborg mods the player starts with already researched and available for purchase at the start of the campaign
ResearchMods - Cyborg mods available to research at the start of the campaign
TextFnMk - Single character prefix used in file names for text translations. s = Syndicate (Eurocorp), z = zealot (Church of the New Epoch)
ProjectorFnMk - Single character prefix used for file names for menu background and animations. s = Syndicate (Eurocorp), z = zealot (Church of the New Epoch)
OutroFMV - Outro Full Motion video file name (data/outro-s.smk for Eurocorp, data/outro-z.smk for Church of the New Epoch)
OutroBkFn - Outro background file name (data/outro-s.raw for Eurocorp, data/outro-z.raw for Church of the New Epoch)
To understand how the file works and the order of missions, the user must be aware of the following:
Mission Index Every level has an abitrary "index" number assigned to them, between 0 and 119. A mission is comprised of two things - an actual game level file (e.g. C060L015.DAT), and the mission objectives for the level, defined in the entry in the missxxx.ini campaign file. Without a mission index entry, a level cannot be played, and does not have any objective data. Mission index numbers for a file are used when starting a level from the command line (e.g. swars.exe -m 0,55 would start the seventh mission "Body Matters" from the Eurocorp campaign), and to link together missions in the campaign using the SuccessTrigger/SpecialTrigger commands. Note, in the original DOS game, as all campaigns were contained in the single .MIS file, every level needed a unique index number. In this fan port, they now only need to be unique within their own .ini file/campaign.
The [missionX] entry defines the mission index number, and the start of the data for that mission.
Missions have 3 main components - the main mission values (defined in e.g. [mission2]), the mission success objective values (e.g. [missuccess2]), the mission failure objective values (e.g [misfail2]) and the mission's Netscan values (e.g. [missnetscan2]). The latter two are optional if the mission is to have no specific failure criteria (i.e. the player only fails if all their units die) or no Netscan data.
Mission Definition
An actual mission index entry is defined as follows. Note a minimum of Name, SourceID, MapNo, and LevelNo are needed
Name - The internal name and details of the mission. The player cannot see this text, this is only used to store the name and any details for other developers to see
SourceID - Index of the "missN.txt" message that contains the mission briefing
MapNo - The map number (see cities.ini) the level takes place on, also used to identify the filename
LevelNo - The level file number for this map TODO - expand on naming convention
ReLevelNo - Retry/Restart level number. Because cut scenes in Syndicate Wars use the actual characters carrying out actions, they cannot be skipped. To work around this levels with intro sequence have a second level file starting at the point after the intro is finished. This variable defines the level file to load to skip the intro on retries
SuccessID - Index of the "mailN.txt" message to be opened on mission complete - Not used
FailID - Index of the "mailN.txt" message to be opened on mission fail - not used
SpecialTrigger - Activates a special set of up to three missions that will share the briefing of the first listed mission. These use the pink mission tab in the menus.
SuccessTrigger - Up to 3 mission numbers separated by spaces that are unlocked by completing this mission
FailTrigger - Up to 3 mission numbers separated by spaces that are unlocked by failing this mission - unused
ResearchWeapons - New weapons available for research after completing this mission
ExtraReward - Extra reward after mission, requires type and amount or item, e.g. Scientists 2, or WeaponResearched PERSUADER2
MissionCond - List of up to 5 missions which need to be completed as a condition to unlock the success etc triggers of this mission. Only makes sense if the other missions also have the same conditions etc. Used for e.g. not allowing the player to progress until all 3 branches of a mission tree are complete
CashReward - Number of credits awarded on completion of mission
WaitToFade - After objectives are complete, do not wait for user to press space and instead fade the screen to black and finish the mission. Number determines the speed of fade, e.g. WaitToFade - 30
ImmediateNextOnSuccess - After the mission is complete, immediatelly start the next one without returning to menu. Used for the final levels in the game's campaigns
RemainUntilSuccess - If True, the level can be failed infinitely and won't disappear from the map until the player beats it.
IsFinalMission - Set to True to define the final mission of the campaign, causes outro to be played on completion
PreProcess - After starting the level, quickly simulate that many game turns before starting at normal simulation speed
Atmosphere - Sets the mission weather and any special atmospheric settings. Two variables must be set. The first is the level location, used for special effects. This variable can be EARTH, SPACE, or MOON. EARTH and MOON determine which background ambience loops will play, whereas SPACE will also make the background a starfield (as seen in the Orbital Station level). The second variable is the weather. This can be SUNNY (no weather effect), RAINY, or SNOWY. An example would be EARTH RAINY to set a level with the standard earthbound city ambience and rain.
Netscan Entries
These determine the entries available in the "Netscan" ("inquisitor" for the zealots) information box in mission briefings. Each entry must begin from the first entry N00.
Valid types are:
NETSCAN_OBJ_TARGET( Coord(7296,0,4352) ) - Add a point on the briefing map at this coordinate. Multiple points can be added by separating with commas, e.g. NETSCAN_OBJ_TARGET( Coord(14976,0,1664), Coord(30464,0,21504)
NETSCAN_OBJ_INFORM( Cost(500), Reward(200000) ) - A hidden piece of information the player can unlock for the price listed in Cost
NETSCAN_OBJ_VIDEO( Coord(8960,0,21248), Anim(1) ) - Playback an .fli video from the path data\EQUIP\NETxx.fli. The Anim number is the number in the filename to play (less than ten does not need to be padded with a 0)
e.g.
N00 - NETSCAN_OBJ_TARGET( Coord(6528,0,20480) )
N01 - NETSCAN_OBJ_VIDEO( Coord(8960,0,21248), Anim(1) )