Difference between revisions of "Worms Armageddon mission file"

From Worms Knowledge Base

Jump to: navigation, search
(Undo revision 28767 by SiD (talk))
Line 1: Line 1:
{{ParentArticle|[[File formats]]}}
+
{{ParentArticle|[[File formats]] or [[Missions]]}}
 +
 
 +
The Worms Armageddon mission file is the file format used to store missions. It contains many typos and spelling errors; so any typos in this page are more likely to be mistakes in the actual format than typos in the documentation.
 +
 
 +
Mission files in a disc installation of Worms Armageddon are located on the CD. Which map is used appears to be hard-coded (not usually the same one as the mission filename), as are names and descriptions. This makes making custom missions a bit of a pain. However, below is an almost-complete documentation on the file format. A few notes from Worms World Party are also mentioned due to its mission editor existing, but this documentation is NOT comprehensive for the WWP file format which has many additions and a few alterations (especially of unused or little-known options). In the future, WWP additions may be listed at the bottom of this page.
 +
 
 +
Comments in these files are initiated by a semicolon and are terminated by the line ending.
  
 
== Mission Groups ==
 
== Mission Groups ==
 
All mission settings are organized under main groups according to their type. These groups always appear in the same order in official missions. (it is uncertain if the ordering matters)
 
All mission settings are organized under main groups according to their type. These groups always appear in the same order in official missions. (it is uncertain if the ordering matters)
  
Not all the of the groups are vital for the mission to work. The '''[CPUTeam''#'']''', '''[Event''####'']''', and '''[Sequence''####'']''' may have multiple instances in the file, and the group seems to be ignored if the number is zero so make sure it's positive.
+
Not all the of the groups are vital for the mission to work. The '''[CPUTeam''#'']''', '''[Event''####'']''', and '''[Sequence''####'']''' may have multiple instances in the file, and the group seems to be ignored if the number is zero so make sure it's positive.  
  
Typos and many other errors appear to be silently ignored, which isn't great for manual debugging.
+
Typos and many other errors appear to be silently ignored, which isn't great for manual debugging, especially since the file format is filled with them in the first place.
  
 
=== 1. The [Mission] Group ===
 
=== 1. The [Mission] Group ===
 +
This contains the overview of the mission itself. Not yet particularly well-documented on the whole.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 16: Line 24:
 
| int || MissionNumber= || Corresponds to the 0-indexed mission number; probably unused in game (untested).
 
| int || MissionNumber= || Corresponds to the 0-indexed mission number; probably unused in game (untested).
 
|-
 
|-
| int || WinningCondition= || What you need to do in order to win the mission. 0: Kill all AI teams. 1: Destroy a vital crate or team. 2: Survive until mission ends. 3: Mission must be terminated (using event or sequence).
+
| int || WinningCondition= || What you need to do in order to win the mission.
 +
* 0: Kill all CPU controlled teams, you do not need to survive if the last CU controlled worm dies at the same time, it will still count as a success.
 +
* 1: Destroy a vital crate or team. Collecting the vital crate counts as a failure.
 +
* 2: Survival: A red-coloured team must be alive when the mission ends.
 +
* 3: Mission must be terminated (using event or sequence).
 
|-
 
|-
 
| int || WinningWeapon= || Unknown, unused?
 
| int || WinningWeapon= || Unknown, unused?
Line 22: Line 34:
  
 
=== 2. The [Description] Group ===
 
=== 2. The [Description] Group ===
 +
This contains details about the description of the mission. Again, not at all well-documented.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 27: Line 41:
 
!Description
 
!Description
 
|-
 
|-
| int || Name= || Index of at the very least the mission name, and very possibly the position, description, and map file too. More experimentation required.
+
| int || Name= || Index of the mission name, description, map file, and thumbnail. Position in the list of missions is hardcoded by filename it seems. For training missions, this is ONLY used for the map file; the rest of the data is hardcoded by filename.
 
|-
 
|-
 
| int || Difficulty= || Not used. Apparently the difficulty rating for the mission?
 
| int || Difficulty= || Not used. Apparently the difficulty rating for the mission?
Line 33: Line 47:
  
 
=== 3. The [Options] Group ===
 
=== 3. The [Options] Group ===
 +
This contains the bulk of the scheme options for the mission. It's pretty comprehensive, containing many features not in the normal scheme format. Many of the values work differently to in the standard scheme format, so read the value descriptions carefully. Most of these are documented well but it is unknown what the upper and lower limits are for many of them; value ranges acceptable in the WWP mission editor are included where it is not obvious.
 +
 +
Fun fact: Enabling both TurnEndFinishesGame and WeaponsDontEndTurn makes the [[Shotgun]] and [[Longbow]] only have one shot per ammo, essentially using up ammo twice as quickly.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 52: Line 70:
 
| int || TurnTime= || Turn time. Appears to be formatted like the one in the scheme file, ie signed with negative representing infinite, as it won't let me enter a value greater than 126 in the WWP mission editor.
 
| int || TurnTime= || Turn time. Appears to be formatted like the one in the scheme file, ie signed with negative representing infinite, as it won't let me enter a value greater than 126 in the WWP mission editor.
 
|-
 
|-
| int || MineFuse= || Mine fuse in seconds, -1 is random.
+
| int || MineFuse= || Mine fuse in seconds, values are 0-3 or 5-127. Negative values, values above 127, or 4, produce random fuse lengths between 0 and 3 seconds.
 
|-
 
|-
| int || ObjectType= || Always 0 in default mission files, as they place their objects manually. I don't think this option actually works, but it has not been thoroughly tested.
+
| int || ObjectType= || Always 0 in default mission files, as they place their objects manually. The same [[Hazardous Objects|as in scheme files]], even supporting specifying the number of objects in newer WA versions. Objects would be placed in the same place every time due to random seed being set.
 
|-
 
|-
 
| int || WeaponCrateDrops= || Weapon crate drop probability. Seems to work the same as in scheme files - see [[Crate probability]]
 
| int || WeaponCrateDrops= || Weapon crate drop probability. Seems to work the same as in scheme files - see [[Crate probability]]
Line 62: Line 80:
 
| int || UtilityCrateDrops= || Ditto, for utility crates.
 
| int || UtilityCrateDrops= || Ditto, for utility crates.
 
|-
 
|-
| int || HealthCrateEnergy= || Energy obtained from health crates.
+
| int || HealthCrateEnergy= || Set default value for energy obtained from health crates. Setting this to zero (or not including it) makes the default 15.  
 
|-
 
|-
 
| bool || EnableSecretWeapons= || 1 if super weapons are available from crates; 0 if not.
 
| bool || EnableSecretWeapons= || 1 if super weapons are available from crates; 0 if not.
Line 68: Line 86:
 
| int || SuddenDeathWaterRise= || Water rise rate in pixels.
 
| int || SuddenDeathWaterRise= || Water rise rate in pixels.
 
|-
 
|-
| int || SuddenDeathWormDamage= || Worm damage in sudden death per turn. Positive values are absolute health values. -1 is all but one. Either 0 is "none", WWP mission editor seems to have a bug in this respect where it will set none to 1, more testing required.
+
| int || SuddenDeathWormDamage= || Worm damage in sudden death per turn. Positive values are absolute health values. -1 is all but one. 0 is "none", WWP mission editor seems to have a bug in this respect where it will set none to 1, more testing required.
 
|-
 
|-
| int || SuddenDeathType= || 0 = end round. 1 = nuke. 2 and 3 = no nuke - water rise and worm damage honoured in both cases. More testing required.
+
| int || SuddenDeathType= || 0 = end round. 1 = nuke. 2 and 3 = no nuke - water rise and worm damage honoured in all cases except 0.
 
|-
 
|-
 
| int || PauseBetweenTurns= || Hotseat time in seconds.
 
| int || PauseBetweenTurns= || Hotseat time in seconds.
 
|-
 
|-
| int || GirderRadius= || Girder placement radius in pixels.
+
| int || GirderRadius= || Girder placement radius in pixels. 0 = infinite range.
 
|-
 
|-
| bool || WormSelect= || 0 = worms in order, 1 = user worm select.
+
| bool || WormSelect= || 0 = worms in order, 1 = user worm select, 2 = random turn order.
 
|-
 
|-
| int || JetPackTimeLimit= || The amount of fuel in the jetpack. 0 = infinite?
+
| int || JetPackTimeLimit= || The amount of fuel in the jetpack. Do not include this parameter if you wish to use the default fuel (30). Setting this value to zero will give infinite fuel, the fuel counter starts at zero and goes up as you use it.
 
|-
 
|-
 
| bool || WeaponsDontEndTurn= || 1 if weapons don't end your turn, 0 otherwise.
 
| bool || WeaponsDontEndTurn= || 1 if weapons don't end your turn, 0 otherwise.
Line 94: Line 112:
  
 
=== 4. The [Enviroment] Group ===
 
=== 4. The [Enviroment] Group ===
 +
This contains information about the environment of the landscape. Once again, reasonably documented, but value limits are not known.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 105: Line 125:
 
| int || FixedWind= || If Wind = -1, this is a value between -100 and 100 representing the fixed wind, with -100 being full left and 100 being full right.
 
| int || FixedWind= || If Wind = -1, this is a value between -100 and 100 representing the fixed wind, with -100 being full left and 100 being full right.
 
|-
 
|-
| int || Friction= || The opposite of friction. Default is 96. WWP mission editor values: ice = 99, mud = 98, stone = 96, rubber = 50, glue = 1. Maybe above 100 is anti-friction?
+
| int || Friction= || The opposite of friction. Default is 96. WWP mission editor values: ice = 99, mud = 98, stone = 96, rubber = 50, glue = 1. Values above 100 is anti-friction, meaning the objects will actually speed up as they slide. This can cause some slides to never end though, like in this [[File:Friction255.WAgame|replay (where friction is set to 255)]].
 
|-
 
|-
 
| bool || IndestructableBorder= || [sic]. 1 if indestructible border around whole level, 0 if not.
 
| bool || IndestructableBorder= || [sic]. 1 if indestructible border around whole level, 0 if not.
Line 120: Line 140:
  
 
=== 5. The [Teams] Group ===
 
=== 5. The [Teams] Group ===
 +
Very small group describing the number of teams in the mission.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 125: Line 147:
 
!Description
 
!Description
 
|-
 
|-
| int || TeamsInMission= || Simply, the number of teams in the mission.
+
| int || TeamsInMission= || Simply, the number of teams in the mission. The game does appear to use this; one mission has a fifth team defined that isn't used due to this being 4; and if this is set too high, the game spawns 1-worm CPU teams in "random" places on the map. Trying to set this value higher than 6 will cause WA to produce an error message when trying to load the mission that the number of teams is too high, then run the mission with only 6 teams. Values less than 1 will cause the mission to load with 1 team.
 
|-
 
|-
 
|}
 
|}
  
 
=== 6. The [HumanTeam] Group ===
 
=== 6. The [HumanTeam] Group ===
 +
The group describing the human team.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 135: Line 159:
 
!Description
 
!Description
 
|-
 
|-
| int || NumberOfWorms= || Simply the number of worms on the team.
+
| int || NumberOfWorms= || Simply the number of worms on the team. No out-of-bounds checking is done on this number, so a value outside of 0-8 will cause a fatal crash. A value of zero will cause the team to spawn with zero worms, causing the team bar to shrink and then drop off the bottom of the screen immediately, much like what happens when a team is wiped out normally.
 
|-
 
|-
| int || Ammo_''[[#Weapon Strings|WeaponString]]''= || The ammo of the given weapon. -1 is infinite.
+
| int || Ammo_''[[#Weapon Strings|WeaponString]]''= || The ammo of the given weapon. Any negative number or number larger then 32,767 is infinite, however you can collect more ammo from crates letting you go above 32,767, if for some reason you think you'll need more ammo.
 
|-
 
|-
| int || Delay_''[[#Weapon Strings|WeaponString]]''= || The delay of the given weapon in turns. 0 or not present for no delay.
+
| int || Delay_''[[#Weapon Strings|WeaponString]]''= || The delay of the given weapon in turns. Like ammo, this can be set to an infinite value if you want to render it unusable with a negative value or value higher than 32,767. Providing a delay to instant effect utilities will prevent them from triggering until the delay runs out.
 
|-
 
|-
| int || Worm''#''_Energy= || Energy of the worm in health points. -1 for "very high health that can't be displayed properly" (quote from WWP mission editor).
+
| int || Worm''#''_Energy= || Energy of the worm in health points. Negative values wrap around to large numbers, e.g. a setting of -1 gives a worm 65535 health, although this will display as 9999. A worm starting with 0 energy will immediately die.
 
|-
 
|-
 
| int || Worm''#''_DeseasePoints= || Number of disease [sic] points for worm. 0 for healthy worm.
 
| int || Worm''#''_DeseasePoints= || Number of disease [sic] points for worm. 0 for healthy worm.
Line 157: Line 181:
  
 
=== 7. The [CPUTeam''#''] Group ===
 
=== 7. The [CPUTeam''#''] Group ===
 +
Any number of groups describing CPU teams. Presumably limited to five of these.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 162: Line 188:
 
!Description
 
!Description
 
|-
 
|-
| int || TeamNameNumber= || The index of the team name. TODO: List these.
+
| int || TeamNameNumber= || The team name. You can choose from the following values, any value not listed will be treated as 0:
 +
* 0 = Cannon Fodder
 +
* 1 = Commandos
 +
* 2 = Elite
 +
* 3 = Enemy
 +
* 4 = Guardsmen
 +
* 5 = Gunners
 +
* 6 = Officers
 +
* 7 = Patrol
 +
* 8 = Platoon
 +
* 9 = Resistance
 +
* 10 = Special Forces
 
|-
 
|-
| int || TeamSkill= || CPU skill. WWP mission editor has this from 50 to 185 in steps of 15, but in the default WA missions it appears to be different with very few having even 100. Investigation required.
+
| int || TeamSkill= || CPU skill. Setting this value to 0 will cause the team to be player controlled, missions will end if all player controlled teams die. Setting this to 101-120 will result in what appears to be a hyper-accurate 6th skill that exhibits some peculiarities, it loves to aim for its own alliance teammates (including you), but will only actually fire the shot if it thinks it's going to miss because there is land in the way. This can result in some unintended friendly fire (for example, firing an uzi when there is a thin strip of land in the way, so later bullets hit). Other invalid values can cause strange behaviour and should not be used. The team's flag is determined by this setting:
 +
* 1-20 = CPU1
 +
* 21-40 = CPU2
 +
* 41-60 = CPU3
 +
* 61-80 = CPU4
 +
* 81-100 = CPU5
 +
* 0 or 101-120: Default flag
 +
* Other values: No flag (a big black rectangle is drawn)
 
|-
 
|-
| int || NumberOfWorms= || Simply the number of worms on the team.
+
| int || NumberOfWorms= || Simply the number of worms on the team. Invalid values causes crashes.
 
|-
 
|-
| int || SoundBank= || Soundbank ID of the team. Usually seems to be 1. Might not be used.
+
| int || SoundBank= || Supposedly sets the soundbank for the team, but is ignored. The default soundbank is always used.
 
|-
 
|-
| int || Flag= || Flag ID of the team. Usually seems to be 1. Probably not used, as all CPU teams seem to have flag 1 regardless of skill.
+
| int || Flag= || Supposedly selects the flag, but this is ignored. Flags are selected through the TeamSkill parameter.
 
|-
 
|-
| int || GraveStone= || Grave ID of the team. Usually seems to be 1.
+
| int || GraveStone= || Supposedly selects the gravestone used by the team, but this is ignored. It is not possible to change gravestones.
 
|-
 
|-
| int || AlliedGroup= || Allied group of the team. 0 is red, 1 is blue, etc.
+
| int || AlliedGroup= || Allied group of the team. 0 is red, 1 is blue, etc.  Use the values 0-5 for each of the 6 team colours. Setting a CPU team's group to 0 will result in a computer team allied to you, which follows the usual rules of alliances in matches (NOTE: You will gain access to any weapons granted to this team as you will both share an inventory). If a CPU team is allied with you, the mission will still immediately fail if the player team is wiped out. Setting the value to 6 or 7 will result in the mission immediately aborting as a failure. For some reason, starting a match with a team of alliance 8 present will set your game volume to 0. Note that other values can cause horrible sprite issues, inactive teams using large fonts for their name text, and all other manner of Lovecraftian horror.
 
|-
 
|-
| bool || MissionVital= || 1 if team is vital to a mission. When applied to a team allied to the humans, you lose if they are killed. When allied to the CPU, you win if they are killed. Vital teams don't get turns.
+
| bool || MissionVital= || Set to 1 if team is vital to a mission. This will produce a team of hat-wearing "VIP" worms that cannot act and will cause the immediate surrender of any allied teams when all of the worms in the team die. This includes making the player team surrender resulting in a mission failure if a VIP team is allied with them. Note that VIP worms will always wear a red hat, regardless of the colour team they are allied with.
 
|-
 
|-
 
| int || Ammo_''[[#Weapon Strings|WeaponString]]''= || The ammo of the given weapon. -1 is infinite.
 
| int || Ammo_''[[#Weapon Strings|WeaponString]]''= || The ammo of the given weapon. -1 is infinite.
Line 182: Line 226:
 
| int || Delay_''[[#Weapon Strings|WeaponString]]''= || The delay of the given weapon in turns. 0 or not present for no delay.
 
| int || Delay_''[[#Weapon Strings|WeaponString]]''= || The delay of the given weapon in turns. 0 or not present for no delay.
 
|-
 
|-
| int || Worm''#''_Energy= || Energy of the worm in health points. -1 for "very high health that can't be displayed properly" (quote from WWP mission editor).
+
| int || Worm''#''_Energy= || Energy of the worm in health points. Negative values wrap around to large numbers, e.g. a setting of -1 gives a worm 65535 health, although this will display as 9999. A worm starting with 0 energy will immediately die.
 
|-
 
|-
| int || Worm''#''_DeseasePoints= || Number of disease [sic] points for worm. 0 for healthy worm.
+
| int || Worm''#''_DeseasePoints= || Number of disease [sic] points for worm. 0 for healthy worm. A negative value counts as "infinite", which will take a worm to 1 hit point after the first turn, as poison/disease will not kill a worm.
 
|-
 
|-
 
| bool || Worm''#''_ArtileryMode= || 1 for artillery [sic, yet again] mode for worm, 0 for worm can move.
 
| bool || Worm''#''_ArtileryMode= || 1 for artillery [sic, yet again] mode for worm, 0 for worm can move.
 
|-
 
|-
| bool || Worm''#''_PlaceWorm= || 1 if placed as per the options below, 0 if "randomly" placed (obviously based on the same seed each game so not random at all).
+
| bool || Worm''#''_PlaceWorm= || Unlike the human team, this option is ignored for CPU teams and is always set to 1. This is due to a bug fix in the [[Worms_Armageddon_ReadMe_(English)/v3.6.26.4_Beta_Update|v3.6.26.4_Beta_Update]] for mission #26 "Mad Cows". If you want to "randomly" place CPU team worms, don't provide any X and Y co-ordinates.
 
|-
 
|-
 
| int || Worm''#''_XPosition= || X position of the worm.
 
| int || Worm''#''_XPosition= || X position of the worm.
 
|-
 
|-
| int || Worm''#''_YPosition= || Y position of the worm.
+
| int || Worm''#''_YPosition= || Y position of the worm. Worms placed in the air and will "snap to ground" when the mission is loaded. Starting a worm stuck inside the ground will cause it to default to co-ordinates that appear to be something like (0, -200), causing the worm to get trapped outside of cavern levels. There are no sensibility checks on the co-ordinates you provide.
 
|-
 
|-
| int || Worm''#''_NameNumber= || The index of the worm name. TODO: List these.
+
| int || Worm''#''_NameNumber= || The worm name. You can choose from the following values, any value not listed will be treated as 0:
 +
* 0 = Sentry
 +
* 1 = Guard
 +
* 2 = Sniper
 +
* 3 = Grenadier
 +
* 4 = Field Soldier
 +
* 5 = Artillery
 +
* 6 = Captain
 +
* 7 = Secret Agent
 +
* 8 = Major
 +
* 9 = General
 +
* 10 = Field Marshall
 +
* 11 = Assassin
 
|-
 
|-
 
| int || Worm''#''_FixedWeapon= || The weapon ID of the fixed weapon. 0 for normal free CPU choice.
 
| int || Worm''#''_FixedWeapon= || The weapon ID of the fixed weapon. 0 for normal free CPU choice.
 
|-
 
|-
| int || Worm''#''_ActionRadius= || The distance away from itself the CPU takes into account.
+
| int || Worm''#''_ActionRadius= || The distance away from itself the CPU takes into account. 0 = no range limitation?
 
|-
 
|-
 
| bool || Worm''#''_Vital= || 1 if the worm is vital to the mission, 0 otherwise. If a vital worm is killed, all allied teams surrender. Might not work with allies to the human team.
 
| bool || Worm''#''_Vital= || 1 if the worm is vital to the mission, 0 otherwise. If a vital worm is killed, all allied teams surrender. Might not work with allies to the human team.
Line 205: Line 261:
  
 
=== 8. The [Events] Group ===
 
=== 8. The [Events] Group ===
 +
Definitely not required, this group.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 210: Line 268:
 
!Description
 
!Description
 
|-
 
|-
| int || TotalNumberOfEvents= || Supposed to be the total number of events, but actually wrong in some of the few missions it even appears in, so probably ignored.
+
| int || TotalNumberOfEvents= || Supposed to be the total number of events, but actually wrong in some of the few missions it even appears in. This value is ignored anyway.
 
|-
 
|-
 
|}
 
|}
  
 
=== 9. The [Event''####''] Group ===
 
=== 9. The [Event''####''] Group ===
 +
Events happen independently of each other after a certain number of turns. If more than one event exists for a given turn, they are executed in numerical order. Note that possibly due to a bug or possibly by design, events must appear in the order in which they occur - so if a turn 0 event appears after a turn 1 event, the turn 0 event will not be executed.
 +
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
 
!Type
 
!Type
Line 220: Line 280:
 
!Description
 
!Description
 
|-
 
|-
| int || TypeOfEvent= || 10=display morse code message
+
| int || TypeOfEvent= || See [[#Event Types|Event Types]]
 
|-
 
|-
| int || Turn= || Will cause this event to activate before the nth turn.
+
| int || Turn= || Will cause this event to activate before the nth turn (starting from turn 0 being the first).
 
|-
 
|-
 
| int || Retries= || Causes the event to activate if the number of attempts is equal to or higher than this number. Allows additional events to occur in silver and bronze medal missions (bronze = 1, silver = 4).
 
| int || Retries= || Causes the event to activate if the number of attempts is equal to or higher than this number. Allows additional events to occur in silver and bronze medal missions (bronze = 1, silver = 4).
 
|-
 
|-
| int || [[#Text_String_Index|Text_String_Index]]= ||  
+
| int || [[#Text_String_Index|Text_String_Index]]= || The string index to use for event type 10.
 
|-
 
|-
| bool || EventEnd= ||  
+
| bool || EventEnd= || Used as a final dummy event to signify the end of the list of events. Not sure if the game likes this being absent or not.
 
|-
 
|-
| int || PlaceWeapon_Bonus_Points= ||  
+
| int || PlaceWeapon_Bonus_Points= || The number of points you get for collecting the weapon crate.
 
|-
 
|-
| int || PlaceWeapon_Bonus_TurnExtension= ||  
+
| int || PlaceWeapon_Bonus_TurnExtension= || The extension to your turn time for collecting the weapon crate.
 
|-
 
|-
| int || PlaceWeapon_Bonus_RoundExtention= ||  
+
| int || PlaceWeapon_Bonus_RoundExtention= || Appears in official mission files but does nothing, even if you fix the typo.
 
|-
 
|-
| int || PlaceWeapon_XPosition= ||  
+
| int || PlaceWeapon_XPosition= || X position of weapon crate.
 
|-
 
|-
| int || PlaceWeapon_YPosition= ||  
+
| int || PlaceWeapon_YPosition= || Y position of weapon crate.
 
|-
 
|-
| int || PlaceWeapon_OnGround= ||  
+
| int || PlaceWeapon_OnGround= || 1 if the weapon crate spawns on the ground beneath the coords (much faster, please do this) or 0 if it falls from the coords.
 
|-
 
|-
| int || [[#PlaceWeapon_Contents|PlaceWeapon_Contents]]= ||  
+
| int || [[#PlaceWeapon_Contents|PlaceWeapon_Contents]]= || The weapon ID that is in the crate.
 
|-
 
|-
| bool || PlaceWeapon_Marked= ||  
+
| bool || PlaceWeapon_Marked= || 1 if the weapon crate is marked - ie important for sequences.
 
|-
 
|-
| bool || PlaceWeapon_Vital= ||  
+
| bool || PlaceWeapon_Vital= || 1 if the weapon crate is vital. Destroying a vital crate ends the mission apparently.
 
|-
 
|-
| int || PlaceWeapon_Ammo= ||  
+
| int || PlaceWeapon_Ammo= || The ammunition of the weapon in the crate, -1 for infinite.
 
|-
 
|-
| int || PlaceHealth_Bonus_Points= ||  
+
| int || PlaceHealth_Bonus_Points= || The number of points you get for collecting the health crate.
 
|-
 
|-
| int || PlaceHealth_Bonus_TurnExtention= ||  
+
| int || PlaceHealth_Bonus_TurnExtention= || The extension to your turn time for collecting the health crate.
 
|-
 
|-
| int || PlaceHealth_Bonus_RoundExtention= ||  
+
| int || PlaceHealth_Bonus_RoundExtention= || Appears in official mission files but does nothing, even if you fix the typo.
 
|-
 
|-
| int || PlaceHealth_XPosition= ||  
+
| int || PlaceHealth_XPosition= || X position of health crate.
 
|-
 
|-
| int || PlaceHealth_YPosition= ||  
+
| int || PlaceHealth_YPosition= || Y position of health crate.
 
|-
 
|-
| int || PlaceHealth_OnGround= ||  
+
| int || PlaceHealth_OnGround= || 1 if the health crate spawns on the ground beneath the coords or 0 if it falls from the coords.
 
|-
 
|-
| int || PlaceHealth_Health= ||  
+
| int || PlaceHealth_Health= || Amount of health in the crate. Uses the mission default if not present. Note that setting this to zero will not use the default, but make the health crate restore 0 health.
 
|-
 
|-
| int || PlaceTarget_XPosition= ||  
+
| bool || PlaceHealth_Marked= || 1 if the health crate is marked - ie important for sequences.
 
|-
 
|-
| int || PlaceTarget_YPosition= ||  
+
| bool || PlaceHealth_Vital= || 1 if the health crate is vital. Destroying a vital crate ends the mission apparently.
 
|-
 
|-
| int || PlaceTarget_OnGround= ||  
+
| int || PlaceTarget_XPosition= || X position of target.
 
|-
 
|-
| int || PlaceTarget_FallSpeed= ||  
+
| int || PlaceTarget_YPosition= || Y position of target.
 
|-
 
|-
| bool || PlaceTarget_Marked= ||  
+
| int || PlaceTarget_OnGround= || 1 if the target spawns on the ground beneath the coords or 0 if it falls from the coords.
 
|-
 
|-
| int || PlaceMine_XPosition= ||  
+
| int || PlaceTarget_TargetType= || 0 for normal, 1 for old woman. In WWP, 2 is invisible, not sure if this is the case in WA.
 
|-
 
|-
| int || PlaceMine_YPosition= ||  
+
| int || PlaceTarget_FallSpeed= || Fall speed for the target.
 
|-
 
|-
| int || PlaceMine_OnGround= ||  
+
| int || PlaceTarget_Bonus_Points= || The number of points you get for destroying the target.
 
|-
 
|-
| int || PlaceDrum_XPosition= ||  
+
| int || PlaceTarget_Bonus_TurnExtention= || The extension to your turn time for destroying the target.
 
|-
 
|-
| int || PlaceDrum_YPosition= ||  
+
| int || PlaceTarget_Bonus_RoundExtention= || Appears in official mission files but does nothing, even if you fix the typo.
 
|-
 
|-
| int || PlaceDrum_OnGround= ||  
+
| bool || PlaceTarget_Marked= || 1 if the target is marked - ie, important for sequences.
|}
+
 
+
=== 10. The [Sequence''####''] Group ===
+
{| border="1" cellspacing="0" class="wikitable"
+
!Type
+
!Parameter String
+
!Description
+
 
|-
 
|-
| int || TypeOfEvent= ||  
+
| int || PlaceMine_XPosition= || X position of mine.
 
|-
 
|-
| int || Retries= ||  
+
| int || PlaceMine_YPosition= || Y position of mine.
 
|-
 
|-
| bool || EventEnd= ||  
+
| int || PlaceMine_OnGround= || 1 if the mine spawns on the ground beneath the coords or 0 if it falls from the coords.
 +
|-
 +
| int || PlaceDrum_XPosition= || X position of drum.
 +
|-
 +
| int || PlaceDrum_YPosition= || Y position of drum.
 +
|-
 +
| int || PlaceDrum_OnGround= || 1 if the drum spawns on the ground beneath the coords or 0 if it falls from the coords.
 +
|-
 +
| int || SetEventTurn_TurnNumber= || (Turn number to skip to + 1) for event 12.
 
|}
 
|}
  
== Event Types ==
+
=== 10. The [Sequence''####''] Group ===
 +
Sequence groups are always executed in numerical order from the start of the mission, but sequences in a given turn are always executed after events (in case the first event is "pause executing sequence"). Some event IDs cause the sequence to pause execution until some condition is fulfilled. Note that it is only possible to have one sequence running at a time, unlike WWP where you can have at least two.
 +
 
 +
All options are mostly identical to ones in Event groups; the only difference is the way in which they are executed. Despite the Turn= parameter appearing in official missions, it does not work for sequences. To get a sequence to start after a certain turn, you will need to use a Pause Sequence Event and then a Resume Sequence event on the turn you want it to start.
 +
 
 +
== Event types ==
 
Here are the possible values and their functions for the TypeOfEvent settings in events and sequences. Do bear in mind that some of them are only particularly useful in one or the other, but the types appear to be consistent between them which is nice.
 
Here are the possible values and their functions for the TypeOfEvent settings in events and sequences. Do bear in mind that some of them are only particularly useful in one or the other, but the types appear to be consistent between them which is nice.
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
Line 326: Line 392:
 
|10 || Display Morse code message.
 
|10 || Display Morse code message.
 
|-
 
|-
|11 || In WWP as "pause for (n) 10ths of a second"; doesn't appear to have effect in WA (used incorrectly in one mission as an attempt to display text). Needs investigation.
+
|11 || This has an unknown effect in WA. One mission tries to use it to display text but it doesn't appear to work. Requisitioned in WWP as "pause for (n) 10ths of a second" (this isn't implemented in WA), so if it does do something in WA, it's probably unimportant.
 
|-
 
|-
|12 || In WWP as "Set Next Turn Number"; unsure if in WA (unused in all missions), but the necessary string is in the exe. Needs investigation.
+
|12 || Set Next Turn Number. Not used in any missions, and works a little glitchily - it actually sets the turn number to one less than the value supplied. Also note that because the turn number changes instantly, remaining events for the current turn will no longer execute and instead the game will start executing events for the turn number that it changes to.
 
|-
 
|-
 
|13 || Place mine.
 
|13 || Place mine.
Line 342: Line 408:
 
|18 || Resume sequence
 
|18 || Resume sequence
 
|}
 
|}
 +
 
== Weapon Strings ==
 
== Weapon Strings ==
 
The weapon settings in a mission may be configured individually for each team through use of the '''Ammo_''' and '''Delay_''' prefixes, followed by a weapon string and settings. For example, '''Ammo_Batrope=-1''' would set a team's ninja rope supply to infinite, and '''Delay_Bazooka=2''' would apply a 2 turn bazooka delay.
 
The weapon settings in a mission may be configured individually for each team through use of the '''Ammo_''' and '''Delay_''' prefixes, followed by a weapon string and settings. For example, '''Ammo_Batrope=-1''' would set a team's ninja rope supply to infinite, and '''Delay_Bazooka=2''' would apply a 2 turn bazooka delay.
  
The following is a list of weapon strings. You always have an infinite supply of Skip go and Surrender, so supplying ammo is unnecessary. It is currently unknown if it is possible to add Aqua Sheep directly to the inventory (but they can be provided in weapon crates, which is the method used in the official missions).
+
The following is a list of weapon strings. You always have an infinite supply of Skip go and Surrender, so supplying ammo is unnecessary. It is currently unknown if it is possible to add Aqua Sheep directly to the inventory (but they can be provided in weapon crates, which is the method used in the official missions) - it appears to be implemented with the AquaSheep string, but in rudimentary tests this has not worked.
  
 
{| border="1" cellspacing="0" class="wikitable"
 
{| border="1" cellspacing="0" class="wikitable"
Line 351: Line 418:
 
!Hot Key !! Column #1 !! Column #2 !! Column #3 !! Column #4 !! Column #5
 
!Hot Key !! Column #1 !! Column #2 !! Column #3 !! Column #4 !! Column #5
 
|-
 
|-
| '''Util.''' || JetPack || LowGravity || FastWalk || LaserSight ||  
+
| '''Util.''' || JetPack || LowGravity || FastWalk || LaserSight || Invisibility
 
|-
 
|-
 
| '''F1''' || Bazooka || HomingMissile || Mortar || HomingPigeon || SheepLauncher
 
| '''F1''' || Bazooka || HomingMissile || Mortar || HomingPigeon || SheepLauncher
Line 815: Line 882:
 
| 72 and beyond || (null)
 
| 72 and beyond || (null)
 
|}
 
|}
 
TODO: Write an introduction, add information about each group, finish lists, add descriptions to lists, add information about values, and maybe organize the lists better.
 
  
 
==See also==
 
==See also==
 
* [[WA Mission Customization Guide]]
 
* [[WA Mission Customization Guide]]

Revision as of 13:01, 3 July 2021

The Worms Armageddon mission file is the file format used to store missions. It contains many typos and spelling errors; so any typos in this page are more likely to be mistakes in the actual format than typos in the documentation.

Mission files in a disc installation of Worms Armageddon are located on the CD. Which map is used appears to be hard-coded (not usually the same one as the mission filename), as are names and descriptions. This makes making custom missions a bit of a pain. However, below is an almost-complete documentation on the file format. A few notes from Worms World Party are also mentioned due to its mission editor existing, but this documentation is NOT comprehensive for the WWP file format which has many additions and a few alterations (especially of unused or little-known options). In the future, WWP additions may be listed at the bottom of this page.

Comments in these files are initiated by a semicolon and are terminated by the line ending.

Mission Groups

All mission settings are organized under main groups according to their type. These groups always appear in the same order in official missions. (it is uncertain if the ordering matters)

Not all the of the groups are vital for the mission to work. The [CPUTeam#], [Event####], and [Sequence####] may have multiple instances in the file, and the group seems to be ignored if the number is zero so make sure it's positive.

Typos and many other errors appear to be silently ignored, which isn't great for manual debugging, especially since the file format is filled with them in the first place.

1. The [Mission] Group

This contains the overview of the mission itself. Not yet particularly well-documented on the whole.

Type Parameter String Description
int MissionNumber= Corresponds to the 0-indexed mission number; probably unused in game (untested).
int WinningCondition= What you need to do in order to win the mission.
  • 0: Kill all CPU controlled teams, you do not need to survive if the last CU controlled worm dies at the same time, it will still count as a success.
  • 1: Destroy a vital crate or team. Collecting the vital crate counts as a failure.
  • 2: Survival: A red-coloured team must be alive when the mission ends.
  • 3: Mission must be terminated (using event or sequence).
int WinningWeapon= Unknown, unused?

2. The [Description] Group

This contains details about the description of the mission. Again, not at all well-documented.

Type Parameter String Description
int Name= Index of the mission name, description, map file, and thumbnail. Position in the list of missions is hardcoded by filename it seems. For training missions, this is ONLY used for the map file; the rest of the data is hardcoded by filename.
int Difficulty= Not used. Apparently the difficulty rating for the mission?

3. The [Options] Group

This contains the bulk of the scheme options for the mission. It's pretty comprehensive, containing many features not in the normal scheme format. Many of the values work differently to in the standard scheme format, so read the value descriptions carefully. Most of these are documented well but it is unknown what the upper and lower limits are for many of them; value ranges acceptable in the WWP mission editor are included where it is not obvious.

Fun fact: Enabling both TurnEndFinishesGame and WeaponsDontEndTurn makes the Shotgun and Longbow only have one shot per ammo, essentially using up ammo twice as quickly.

Type Parameter String Description
int FallDamage= Sets the Fall Damage.
bool DisplayRoundTime= Boolean. 1 to display the round time.
bool EnableActionReplay= Boolean. 1 to show action replays.
int LandRetreatTime= The retreat time in seconds for weapons fired from land.
int RopeRetreatTime= The retreat time in seconds for weapons fired from a rope.
int RoundTime= Round time. If the value is positive, it represents time in minutes; negative values represent time in seconds.
int TurnTime= Turn time. Appears to be formatted like the one in the scheme file, ie signed with negative representing infinite, as it won't let me enter a value greater than 126 in the WWP mission editor.
int MineFuse= Mine fuse in seconds, values are 0-3 or 5-127. Negative values, values above 127, or 4, produce random fuse lengths between 0 and 3 seconds.
int ObjectType= Always 0 in default mission files, as they place their objects manually. The same as in scheme files, even supporting specifying the number of objects in newer WA versions. Objects would be placed in the same place every time due to random seed being set.
int WeaponCrateDrops= Weapon crate drop probability. Seems to work the same as in scheme files - see Crate probability
int HealthCrateDrops= Ditto, for health crates.
int UtilityCrateDrops= Ditto, for utility crates.
int HealthCrateEnergy= Set default value for energy obtained from health crates. Setting this to zero (or not including it) makes the default 15.
bool EnableSecretWeapons= 1 if super weapons are available from crates; 0 if not.
int SuddenDeathWaterRise= Water rise rate in pixels.
int SuddenDeathWormDamage= Worm damage in sudden death per turn. Positive values are absolute health values. -1 is all but one. 0 is "none", WWP mission editor seems to have a bug in this respect where it will set none to 1, more testing required.
int SuddenDeathType= 0 = end round. 1 = nuke. 2 and 3 = no nuke - water rise and worm damage honoured in all cases except 0.
int PauseBetweenTurns= Hotseat time in seconds.
int GirderRadius= Girder placement radius in pixels. 0 = infinite range.
bool WormSelect= 0 = worms in order, 1 = user worm select, 2 = random turn order.
int JetPackTimeLimit= The amount of fuel in the jetpack. Do not include this parameter if you wish to use the default fuel (30). Setting this value to zero will give infinite fuel, the fuel counter starts at zero and goes up as you use it.
bool WeaponsDontEndTurn= 1 if weapons don't end your turn, 0 otherwise.
bool PauseTimerWhileFiring= 1 if timer is paused during firing, 0 otherwise.
bool TurnEndFinishesGame= 1 if ending your turn finishes the mission.
bool LossOfControlDoesntEndTurn= 1 if losing control doesn't cause the turn to end, 0 otherwise.
bool Score= 1 if score displayed ingame; 0 otherwise.
bool Sheep= Enables the "All crates contain sheep" cheat. When exploded, crates will throw out a sheep regardless of the crate contents.

4. The [Enviroment] Group

This contains information about the environment of the landscape. Once again, reasonably documented, but value limits are not known.

Type Parameter String Description
string LandFile= Seems to always be data\land.dat
int Wind= Maximum wind out of 100. If -1, fixed wind is enabled.
int FixedWind= If Wind = -1, this is a value between -100 and 100 representing the fixed wind, with -100 being full left and 100 being full right.
int Friction= The opposite of friction. Default is 96. WWP mission editor values: ice = 99, mud = 98, stone = 96, rubber = 50, glue = 1. Values above 100 is anti-friction, meaning the objects will actually speed up as they slide. This can cause some slides to never end though, like in this File:Friction255.WAgame.
bool IndestructableBorder= [sic]. 1 if indestructible border around whole level, 0 if not.
bool IndestructableLandscape= [sic]. 1 if indestructible landscape, 0 if not.
int LogicRandomSeed= The starting random seed. 12345 is used for most WA missions; 0 for WWP custom missions. Doesn't really matter.
bool AlliedGroupToGoFirst= Which allied group is first to have a turn.
int Sound= Track number on disc of ambient audio track to play during mission. Values out of range (of 1-11) appear to choose random BGM.

5. The [Teams] Group

Very small group describing the number of teams in the mission.

Type Parameter String Description
int TeamsInMission= Simply, the number of teams in the mission. The game does appear to use this; one mission has a fifth team defined that isn't used due to this being 4; and if this is set too high, the game spawns 1-worm CPU teams in "random" places on the map. Trying to set this value higher than 6 will cause WA to produce an error message when trying to load the mission that the number of teams is too high, then run the mission with only 6 teams. Values less than 1 will cause the mission to load with 1 team.

6. The [HumanTeam] Group

The group describing the human team.

Type Parameter String Description
int NumberOfWorms= Simply the number of worms on the team. No out-of-bounds checking is done on this number, so a value outside of 0-8 will cause a fatal crash. A value of zero will cause the team to spawn with zero worms, causing the team bar to shrink and then drop off the bottom of the screen immediately, much like what happens when a team is wiped out normally.
int Ammo_WeaponString= The ammo of the given weapon. Any negative number or number larger then 32,767 is infinite, however you can collect more ammo from crates letting you go above 32,767, if for some reason you think you'll need more ammo.
int Delay_WeaponString= The delay of the given weapon in turns. Like ammo, this can be set to an infinite value if you want to render it unusable with a negative value or value higher than 32,767. Providing a delay to instant effect utilities will prevent them from triggering until the delay runs out.
int Worm#_Energy= Energy of the worm in health points. Negative values wrap around to large numbers, e.g. a setting of -1 gives a worm 65535 health, although this will display as 9999. A worm starting with 0 energy will immediately die.
int Worm#_DeseasePoints= Number of disease [sic] points for worm. 0 for healthy worm.
bool Worm#_ArtileryMode= 1 for artillery [sic, yet again] mode for worm, 0 for worm can move.
bool Worm#_PlaceWorm= 1 if placed as per the options below, 0 if "randomly" placed (obviously based on the same seed each game so not random at all).
int Worm#_XPosition= X position of the worm.
int Worm#_YPosition= Y position of the worm.
bool Worm#_Vital= 1 for vital worm; 0 for not. Appears to have no effect for the human team, but some missions have it anyway. That's probably the source of the "killing your worm as well wins the mission" bug in some versions of mission 14 - this option was expected to work when it didn't.

7. The [CPUTeam#] Group

Any number of groups describing CPU teams. Presumably limited to five of these.

Type Parameter String Description
int TeamNameNumber= The team name. You can choose from the following values, any value not listed will be treated as 0:
  • 0 = Cannon Fodder
  • 1 = Commandos
  • 2 = Elite
  • 3 = Enemy
  • 4 = Guardsmen
  • 5 = Gunners
  • 6 = Officers
  • 7 = Patrol
  • 8 = Platoon
  • 9 = Resistance
  • 10 = Special Forces
int TeamSkill= CPU skill. Setting this value to 0 will cause the team to be player controlled, missions will end if all player controlled teams die. Setting this to 101-120 will result in what appears to be a hyper-accurate 6th skill that exhibits some peculiarities, it loves to aim for its own alliance teammates (including you), but will only actually fire the shot if it thinks it's going to miss because there is land in the way. This can result in some unintended friendly fire (for example, firing an uzi when there is a thin strip of land in the way, so later bullets hit). Other invalid values can cause strange behaviour and should not be used. The team's flag is determined by this setting:
  • 1-20 = CPU1
  • 21-40 = CPU2
  • 41-60 = CPU3
  • 61-80 = CPU4
  • 81-100 = CPU5
  • 0 or 101-120: Default flag
  • Other values: No flag (a big black rectangle is drawn)
int NumberOfWorms= Simply the number of worms on the team. Invalid values causes crashes.
int SoundBank= Supposedly sets the soundbank for the team, but is ignored. The default soundbank is always used.
int Flag= Supposedly selects the flag, but this is ignored. Flags are selected through the TeamSkill parameter.
int GraveStone= Supposedly selects the gravestone used by the team, but this is ignored. It is not possible to change gravestones.
int AlliedGroup= Allied group of the team. 0 is red, 1 is blue, etc. Use the values 0-5 for each of the 6 team colours. Setting a CPU team's group to 0 will result in a computer team allied to you, which follows the usual rules of alliances in matches (NOTE: You will gain access to any weapons granted to this team as you will both share an inventory). If a CPU team is allied with you, the mission will still immediately fail if the player team is wiped out. Setting the value to 6 or 7 will result in the mission immediately aborting as a failure. For some reason, starting a match with a team of alliance 8 present will set your game volume to 0. Note that other values can cause horrible sprite issues, inactive teams using large fonts for their name text, and all other manner of Lovecraftian horror.
bool MissionVital= Set to 1 if team is vital to a mission. This will produce a team of hat-wearing "VIP" worms that cannot act and will cause the immediate surrender of any allied teams when all of the worms in the team die. This includes making the player team surrender resulting in a mission failure if a VIP team is allied with them. Note that VIP worms will always wear a red hat, regardless of the colour team they are allied with.
int Ammo_WeaponString= The ammo of the given weapon. -1 is infinite.
int Delay_WeaponString= The delay of the given weapon in turns. 0 or not present for no delay.
int Worm#_Energy= Energy of the worm in health points. Negative values wrap around to large numbers, e.g. a setting of -1 gives a worm 65535 health, although this will display as 9999. A worm starting with 0 energy will immediately die.
int Worm#_DeseasePoints= Number of disease [sic] points for worm. 0 for healthy worm. A negative value counts as "infinite", which will take a worm to 1 hit point after the first turn, as poison/disease will not kill a worm.
bool Worm#_ArtileryMode= 1 for artillery [sic, yet again] mode for worm, 0 for worm can move.
bool Worm#_PlaceWorm= Unlike the human team, this option is ignored for CPU teams and is always set to 1. This is due to a bug fix in the v3.6.26.4_Beta_Update for mission #26 "Mad Cows". If you want to "randomly" place CPU team worms, don't provide any X and Y co-ordinates.
int Worm#_XPosition= X position of the worm.
int Worm#_YPosition= Y position of the worm. Worms placed in the air and will "snap to ground" when the mission is loaded. Starting a worm stuck inside the ground will cause it to default to co-ordinates that appear to be something like (0, -200), causing the worm to get trapped outside of cavern levels. There are no sensibility checks on the co-ordinates you provide.
int Worm#_NameNumber= The worm name. You can choose from the following values, any value not listed will be treated as 0:
  • 0 = Sentry
  • 1 = Guard
  • 2 = Sniper
  • 3 = Grenadier
  • 4 = Field Soldier
  • 5 = Artillery
  • 6 = Captain
  • 7 = Secret Agent
  • 8 = Major
  • 9 = General
  • 10 = Field Marshall
  • 11 = Assassin
int Worm#_FixedWeapon= The weapon ID of the fixed weapon. 0 for normal free CPU choice.
int Worm#_ActionRadius= The distance away from itself the CPU takes into account. 0 = no range limitation?
bool Worm#_Vital= 1 if the worm is vital to the mission, 0 otherwise. If a vital worm is killed, all allied teams surrender. Might not work with allies to the human team.

8. The [Events] Group

Definitely not required, this group.

Type Parameter String Description
int TotalNumberOfEvents= Supposed to be the total number of events, but actually wrong in some of the few missions it even appears in. This value is ignored anyway.

9. The [Event####] Group

Events happen independently of each other after a certain number of turns. If more than one event exists for a given turn, they are executed in numerical order. Note that possibly due to a bug or possibly by design, events must appear in the order in which they occur - so if a turn 0 event appears after a turn 1 event, the turn 0 event will not be executed.

Type Parameter String Description
int TypeOfEvent= See Event Types
int Turn= Will cause this event to activate before the nth turn (starting from turn 0 being the first).
int Retries= Causes the event to activate if the number of attempts is equal to or higher than this number. Allows additional events to occur in silver and bronze medal missions (bronze = 1, silver = 4).
int Text_String_Index= The string index to use for event type 10.
bool EventEnd= Used as a final dummy event to signify the end of the list of events. Not sure if the game likes this being absent or not.
int PlaceWeapon_Bonus_Points= The number of points you get for collecting the weapon crate.
int PlaceWeapon_Bonus_TurnExtension= The extension to your turn time for collecting the weapon crate.
int PlaceWeapon_Bonus_RoundExtention= Appears in official mission files but does nothing, even if you fix the typo.
int PlaceWeapon_XPosition= X position of weapon crate.
int PlaceWeapon_YPosition= Y position of weapon crate.
int PlaceWeapon_OnGround= 1 if the weapon crate spawns on the ground beneath the coords (much faster, please do this) or 0 if it falls from the coords.
int PlaceWeapon_Contents= The weapon ID that is in the crate.
bool PlaceWeapon_Marked= 1 if the weapon crate is marked - ie important for sequences.
bool PlaceWeapon_Vital= 1 if the weapon crate is vital. Destroying a vital crate ends the mission apparently.
int PlaceWeapon_Ammo= The ammunition of the weapon in the crate, -1 for infinite.
int PlaceHealth_Bonus_Points= The number of points you get for collecting the health crate.
int PlaceHealth_Bonus_TurnExtention= The extension to your turn time for collecting the health crate.
int PlaceHealth_Bonus_RoundExtention= Appears in official mission files but does nothing, even if you fix the typo.
int PlaceHealth_XPosition= X position of health crate.
int PlaceHealth_YPosition= Y position of health crate.
int PlaceHealth_OnGround= 1 if the health crate spawns on the ground beneath the coords or 0 if it falls from the coords.
int PlaceHealth_Health= Amount of health in the crate. Uses the mission default if not present. Note that setting this to zero will not use the default, but make the health crate restore 0 health.
bool PlaceHealth_Marked= 1 if the health crate is marked - ie important for sequences.
bool PlaceHealth_Vital= 1 if the health crate is vital. Destroying a vital crate ends the mission apparently.
int PlaceTarget_XPosition= X position of target.
int PlaceTarget_YPosition= Y position of target.
int PlaceTarget_OnGround= 1 if the target spawns on the ground beneath the coords or 0 if it falls from the coords.
int PlaceTarget_TargetType= 0 for normal, 1 for old woman. In WWP, 2 is invisible, not sure if this is the case in WA.
int PlaceTarget_FallSpeed= Fall speed for the target.
int PlaceTarget_Bonus_Points= The number of points you get for destroying the target.
int PlaceTarget_Bonus_TurnExtention= The extension to your turn time for destroying the target.
int PlaceTarget_Bonus_RoundExtention= Appears in official mission files but does nothing, even if you fix the typo.
bool PlaceTarget_Marked= 1 if the target is marked - ie, important for sequences.
int PlaceMine_XPosition= X position of mine.
int PlaceMine_YPosition= Y position of mine.
int PlaceMine_OnGround= 1 if the mine spawns on the ground beneath the coords or 0 if it falls from the coords.
int PlaceDrum_XPosition= X position of drum.
int PlaceDrum_YPosition= Y position of drum.
int PlaceDrum_OnGround= 1 if the drum spawns on the ground beneath the coords or 0 if it falls from the coords.
int SetEventTurn_TurnNumber= (Turn number to skip to + 1) for event 12.

10. The [Sequence####] Group

Sequence groups are always executed in numerical order from the start of the mission, but sequences in a given turn are always executed after events (in case the first event is "pause executing sequence"). Some event IDs cause the sequence to pause execution until some condition is fulfilled. Note that it is only possible to have one sequence running at a time, unlike WWP where you can have at least two.

All options are mostly identical to ones in Event groups; the only difference is the way in which they are executed. Despite the Turn= parameter appearing in official missions, it does not work for sequences. To get a sequence to start after a certain turn, you will need to use a Pause Sequence Event and then a Resume Sequence event on the turn you want it to start.

Event types

Here are the possible values and their functions for the TypeOfEvent settings in events and sequences. Do bear in mind that some of them are only particularly useful in one or the other, but the types appear to be consistent between them which is nice.

ID Function
1 Place weapon crate.
2 Place health crate.
3 Place target.
4 Trigger nuke.
5 Trigger Earthquake.
6 Trigger Armageddon.
7 Trigger sudden death.
8 Wait until no more "marked" crates (for sequences).
9 Wait until no more "marked" targets (for sequences).
10 Display Morse code message.
11 This has an unknown effect in WA. One mission tries to use it to display text but it doesn't appear to work. Requisitioned in WWP as "pause for (n) 10ths of a second" (this isn't implemented in WA), so if it does do something in WA, it's probably unimportant.
12 Set Next Turn Number. Not used in any missions, and works a little glitchily - it actually sets the turn number to one less than the value supplied. Also note that because the turn number changes instantly, remaining events for the current turn will no longer execute and instead the game will start executing events for the turn number that it changes to.
13 Place mine.
14 Place oil barrel.
15 Restart sequence.
16 Terminate mission (= win if WinningCondition=3 and possibly others).
17 Pause sequence
18 Resume sequence

Weapon Strings

The weapon settings in a mission may be configured individually for each team through use of the Ammo_ and Delay_ prefixes, followed by a weapon string and settings. For example, Ammo_Batrope=-1 would set a team's ninja rope supply to infinite, and Delay_Bazooka=2 would apply a 2 turn bazooka delay.

The following is a list of weapon strings. You always have an infinite supply of Skip go and Surrender, so supplying ammo is unnecessary. It is currently unknown if it is possible to add Aqua Sheep directly to the inventory (but they can be provided in weapon crates, which is the method used in the official missions) - it appears to be implemented with the AquaSheep string, but in rudimentary tests this has not worked.

Hot Key Column #1 Column #2 Column #3 Column #4 Column #5
Util. JetPack LowGravity FastWalk LaserSight Invisibility
F1 Bazooka HomingMissile Mortar HomingPigeon SheepLauncher
F2 Grenade ClusterBomb BananaBomb Axe Earthquake
F3 Shotgun Handgun Uzi Minigun Longbow
F4 FirePunch DragonBall Kamikaze SuicideBomber Prod
F5 Dynamite Mine Sheep SuperSheep MoleBomb
F6 AirStrike NapalmStrike PostalStrike MineStrike MoleSquadron
F7 BlowTorch PneumaticDrill Girder BaseballBat BridgeKit
F8 Batrope Bungee Parachute Teleport Scales
F9 SuperBananaBomb HolyHandGrenade FlameThrower SallyArmy MBBomb
F10 PetrolBomb Skunk MingVase SheepStrike CarpetBomb
F11 MadCow OldWoman Donkey NuclearBomb Armageddon
F12 SelectWorm Freeze MagicBullet

You can also add the instant effect utilities to your inventory with the following weapon strings, which will correctly take effect for the opening turn only, regardless of how many ammo you give. The exception is Crate Spy, which will last for the entire mission, as expected.

  • Damagex2
  • CrateSpy
  • DoubleTime
  • CrateShower

Text_String_Index

The transition messages you get during missions are hardcoded into the game and are referred to via a number. The following table summarises which numbers refer to which messages (in English).

Notes:

  • There is a typo in-game for messages number 22 and 42, they contain a carriage return arrow at the end.
  • Strings 120 - 130 are the names of the CPU teams usable in missions.
  • There may be other non-empty strings beyond 130, but they are unlikely to be useful for the purpose of being used during a mission.
ID Message
0 Weapons drop!
1 Supplies imminent.
2 Secure the drop zones!
3 Delivery successful, over and out.
4 The iron eagle is on the way, over.
5 Package delivered, over and out.
6 That's it we're clean out, you're on your own!
7 The crates are your only hope...
8 Enemy air transport en route.
9 Enemy transport closing.
10 Almost here!
11 It's arrived, now get the crate and get the hell out!
12 No ammo? Try this for size!
13 Mind your head!
14 A first class delivery!
15 Weapons drop successful!
16 Don't let this equipment fall into the wrong hands...
17 Express Delivery!
18 Death by mail order.
19 A little bit of healing goes a long way...
20 Something to perk you up, sir.
21 A blessed relief.
22 Some timely assistance?↵
23 Medical supplies dispatched.
24 Another helping hand.
25 A little assistance for you.
26 Every little bit helps.
27 A little light relief.
28 Anybody require medical assistance?
29 Is this your blood group?
30 Live damn you, Live!
31 Medic!
32 Nuke en-route.
33 Time is against us sir, we need to deal with this quickly!
34 Smoke'em out if you can...
35 Meteor strike imminent, dig in!
36 It's on its way, ETA 5 minutes!
37 Time is short, get a move on!
38 Tactical nuclear missile launch detected.
39 Warning! Strike imminent!
40 A tremor has been detected at the north end of the island!
41 Global warming! Watch the water level!
42 Try not to get wet!↵
43 Hurry, don't let them dig in!
44 The General is escaping!
45 Radiation will be the death of you!
46 Reach for the skies!
47 Climb a mountain not a molehill.
48 Keep away from the edge, earthquake imminent!
49 Where's Noah when you need him?
50 It's time to build those shelters.
51 Hope you've got protection.
52 WARNING! Seismic activity, 7.2 on the Richter scale!
53 What happened to the five minute warning?
54 Global extermination!
55 WARNING! Destabilising fault-line...
56 Caution, tectonic movement!
57 The end of the world is nigh!
58 Judgement Day.
59 Enemy forces mobilising!
60 Strike imminent!
61 Next turn the enemy gets serious.
62 The enemy is armed to the teeth!
63 They've seen you, RUN!
64 Enemy weapons embargo has been lifted.
65 There may be trouble ahead...
66 This conflict is escalating.
67 Ride those thermals, trooper!
68 War is hell.
69 Better dig deep...
70 There IS honour in death.
71 Use the darkside!
72 Secure the area!
73 Dig down and dig deep.
74 That fruits just about ripe and for the picking.
75 Remember to get the crates to add armoury.
76 A utility would be useful...
77 You could do with some 1st aid.
78 You'll need to use the rope...
79 Think about using some girders as cover.
80 You need to draw fire.
81 Remember that you can drop items while on a rope!
82 Learn to use the repeat swing of the rope!
83 Learn all the jumping techniques.
84 A back jump gets you up even higher.
85 Make a note of the enemy units and their skills.
86 Act quickly, think sooner.
87 Skunks can reach places that other weapons cannot reach!
88 Guns can be strafed up and down when fired.
89 Crates can sometimes offer a solution to a mission.
90 Girders can still be placed even whilst swinging on your rope.
91 Need a leg up? Try an arrow or two...
92 A girder could be your last line of defence...
93 Animals and old women can go shopping you know...
94 Parachutes don't slow your fall but can be controlled...
95 A parachute! Ride those thermals, trooper!
96 Crates and explosions don't mix.
97 Air strikes are more effective from the correct direction!
98 Moles love to dig down and they tend to explode too.
99 A well-placed stick of dynamite will dislodge any stubborn Worm.
100 Wind can have an effect on fire, be careful not to stand downwind
101 Measure the wind and send a bazooka curling!
102 Extra Worms make great decoys.
103 Roll out the barrels, they can be deadly too...
104 This crate could be vital!
105 Girders can help grenades reach their targets...
106 Aqua Sheep by name, aquatic by nature.
107 Come on soldier, get a move on!
108 You'd better hurry, there's not much time left!
109 Quick! The water is rising!
110 Here's something to help this time.
111 If you're having trouble, use this.
112 We thought you would appreciate this!
113 Looks like you need help, rookie.
114 This will come in handy...
115 You need help...
116 Try this.
117 (empty string)
118 (empty string)
119 (empty string)
120 Cannon Fodder
121 Commandos
122 Elite
123 Enemy
124 Guardsmen
125 Gunners
126 Officers
127 Patrol
128 Platoon
129 Resistance
130 Special Forces

PlaceWeapon_Contents

When placing a weapon or utility crate you need to refer to its contents by a number rather than a name. The following list indicates which number refers to which crate contents:

ID Contents
0 None (This is a specially defined "empty" crate)
1 Bazooka
2 Homing Missile
3 Mortar
4 Homing Pigeon
5 Sheep Launcher
6 Grenade
7 Cluster Bomb
8 Banana Bomb
9 Mole Bomb
10 Shotgun
11 Handgun
12 Uzi
13 Minigun
14 Longbow
15 Fire Punch
16 Dragonball
17 Kamikaze
18 Prod
19 Battle Axe
20 Dynamite
21 Mine
22 Sheep
23 Super Sheep
24 Aqua Sheep
25 Earth Quake
26 Air Strike
27 Napalm Strike
28 Mail Strike
29 Mine Strike
30 Armageddon
31 Blow torch
32 Pneumatic Drill
33 Girder
34 Baseball Bat
35 Girder Starter-Pack
36 Ninja Rope
37 Bungee
38 Parachute
39 Teleport
40 Scales of Justice
41 Super Banana Bomb
42 Holy Hand-Grenade
43 Salvation Army
44 MB Bomb
45 Flamethrower
46 Petrol Bomb
47 Skunk
48 Priceless Ming Vase
49 French Sheep Strike
50 Mike's Carpet Bomb
51 Mad cow
52 Old woman
53 Mole Squadron
54 Concrete Donkey
55 Indian nuclear Test
56 Select worm
57 Freeze
58 Patsy's Magic Bullet
59 Fast Walk
60 Laser sight
61 Double Damage
62 Invisibility (Usable even in single player!)
63 Low Gravity
64 Crashes the game with a fatal error
65 Suicide Bomber
66 Jetpack
67 Double Turn Time
68 Crate Shower
69 Crashes the game with a fatal error
70 (null)
71 Crashes the game with a fatal error
72 and beyond (null)

See also

Personal tools