-
Notifications
You must be signed in to change notification settings - Fork 25
Game Modifications
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
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
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 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) )