Skip to content
Moburma edited this page Dec 20, 2023 · 9 revisions

The fan port now exposes many of the previously hardcoded variables used by the game to user-editable text .ini files found in the config directory. Advanced users wanting to modify the game can use these to rebalance aspects of the game to their liking.

The following files can be edited:

Cities.ini - A list of all cities defined in the game for use on the map screen.

Cybmods.ini - The attributes of all Cybernetic Modifications available in-game, including their time and cost to research, etc

Missxxx.ini - Definitions for Syndicate Wars campaigns. Miss000.ini and Miss001 are the definitions of the Eurocorp and Church of the New Epoch campaigns. These files allow the path through each campaign to be altered, including which missions are unlocked when and how, and which rewards the player gets for doing so.

People.ini - The baseline attributes for the in-game characters. Note most of these are overridden on a per-level basis.

Weapons.ini - The attributes of all weapons available in-game, including their time and cost to research, etc

Cities.ini

A list of all cities defined in the game for use on the world map screen. Note many cities are listed that are not used for any missions.

Variables:

Name - The name of the city as displayed on the world map

Coord - X and Y coordinates to place the city on the world map

MapsNo - The unique number for this map so the game knows to show the marker there when a mission takes place on this map

Flag - Unknown

Missxxx.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

Header/common values

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)

Mission Definitions

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 third mission listed if first two have been beaten

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

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) )

Clone this wiki locally