Difference between revisions of "Worms Armageddon mission file"
From Worms Knowledge Base
(fixed all tables. pls learn to construct them properly) |
m |
||
(58 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | {{ParentArticle|[[File formats]]}} | + | {{ParentArticle|[[File formats]] or [[Missions]]}} |
+ | |||
+ | The '''Worms Armageddon mission file''' (''.wam'') is the file format used to store [[Missions#Worms_Armageddon|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. | + | 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 === | === 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 12: | Line 22: | ||
!Description | !Description | ||
|- | |- | ||
− | | int || MissionNumber= || | + | | int || MissionNumber= || Corresponds to the 0-indexed mission number; probably unused in game (untested). |
|- | |- | ||
− | | int || WinningCondition= || | + | | 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= || | + | | int || WinningWeapon= || Unknown, unused? |
|} | |} | ||
=== 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 25: | Line 41: | ||
!Description | !Description | ||
|- | |- | ||
− | | int || Name= || | + | | 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 31: | 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 36: | Line 56: | ||
!Description | !Description | ||
|- | |- | ||
− | | int || FallDamage= || | + | | int || FallDamage= || Sets the [[Fall Damage]]. |
|- | |- | ||
− | | bool || DisplayRoundTime= || | + | | bool || DisplayRoundTime= || Boolean. 1 to display the round time. |
|- | |- | ||
− | | bool || EnableActionReplay= || | + | | bool || EnableActionReplay= || Boolean. 1 to show action replays. |
|- | |- | ||
− | | int || LandRetreatTime= || | + | | int || LandRetreatTime= || The retreat time in seconds for weapons fired from land. |
|- | |- | ||
− | | int || RopeRetreatTime= || | + | | int || RopeRetreatTime= || The retreat time in seconds for weapons fired from a rope. |
|- | |- | ||
− | | int || RoundTime= || | + | | int || RoundTime= || Round time. If the value is positive, it represents time in minutes; negative values represent time in seconds. |
|- | |- | ||
− | | int || TurnTime= || | + | | 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= || | + | | 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= || | + | | 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= || | + | | int || WeaponCrateDrops= || Weapon crate drop probability. Seems to work the same as in scheme files - see [[Crate probability]] |
|- | |- | ||
− | | int || HealthCrateDrops= || | + | | int || HealthCrateDrops= || Ditto, for health crates. |
|- | |- | ||
− | | int || UtilityCrateDrops= || | + | | int || UtilityCrateDrops= || Ditto, for utility crates. |
|- | |- | ||
− | | int || HealthCrateEnergy= || | + | | 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= || | + | | bool || EnableSecretWeapons= || 1 if super weapons are available from crates; 0 if not. |
|- | |- | ||
− | | int || SuddenDeathWaterRise= || | + | | int || SuddenDeathWaterRise= || Water rise rate in pixels. |
|- | |- | ||
− | | int || SuddenDeathWormDamage= || | + | | 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= || | + | | 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= || | + | | int || PauseBetweenTurns= || Hotseat time in seconds. |
|- | |- | ||
− | | int || GirderRadius= || | + | | int || GirderRadius= || Girder placement radius in pixels. 0 = infinite range. |
|- | |- | ||
− | | bool || WormSelect= || | + | | bool || WormSelect= || 0 = worms in order, 1 = user worm select, 2 = random turn order. |
|- | |- | ||
− | | int || JetPackTimeLimit= || | + | | 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= || | + | | bool || WeaponsDontEndTurn= || 1 if weapons don't end your turn, 0 otherwise. |
|- | |- | ||
− | | bool || PauseTimerWhileFiring= || | + | | bool || PauseTimerWhileFiring= || 1 if timer is paused during firing, 0 otherwise. |
|- | |- | ||
− | | bool || TurnEndFinishesGame= || | + | | bool || TurnEndFinishesGame= || 1 if ending your turn finishes the mission. |
|- | |- | ||
− | | bool || LossOfControlDoesntEndTurn= || | + | | bool || LossOfControlDoesntEndTurn= || 1 if losing control doesn't cause the turn to end, 0 otherwise. |
|- | |- | ||
− | | bool || Score= || | + | | 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. | | bool || Sheep= || Enables the "All crates contain sheep" cheat. When exploded, crates will throw out a sheep regardless of the crate contents. | ||
Line 92: | 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 97: | Line 119: | ||
!Description | !Description | ||
|- | |- | ||
− | | string || LandFile= || | + | | string || LandFile= || Seems to always be data\land.dat |
|- | |- | ||
− | | int || Wind= || | + | | int || Wind= || Maximum wind out of 100. If -1, fixed wind is enabled. |
|- | |- | ||
− | | int || FixedWind= || | + | | 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= || | + | | 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= || | + | | bool || IndestructableBorder= || [sic]. 1 if indestructible border around whole level, 0 if not. |
|- | |- | ||
− | | bool || IndestructableLandscape= || | + | | bool || IndestructableLandscape= || [sic]. 1 if indestructible landscape, 0 if not. |
|- | |- | ||
− | | int || LogicRandomSeed= || | + | | int || LogicRandomSeed= || The starting random seed. 12345 is used for most WA missions; 0 for WWP custom missions. Doesn't really matter. |
|- | |- | ||
− | | | + | | int || AlliedGroupToGoFirst= || Which allied group is first to have a turn. |
|- | |- | ||
− | | int || Sound= || | + | | 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 === | === 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 123: | Line 147: | ||
!Description | !Description | ||
|- | |- | ||
− | | int || TeamsInMission= | + | | 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 134: | Line 159: | ||
!Description | !Description | ||
|- | |- | ||
− | | int || NumberOfWorms= || | + | | 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]]''= || | + | | 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]]''= || | + | | 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= || | + | | 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= || | + | | int || Worm''#''_DeseasePoints= || Number of disease [sic] points for worm. 0 for healthy worm. |
|- | |- | ||
− | | bool || Worm''#''_ArtileryMode= || | + | | bool || Worm''#''_ArtileryMode= || 1 for artillery [sic, yet again] mode for worm, 0 for worm can move. |
|- | |- | ||
− | | bool || Worm''#''_PlaceWorm= || | + | | 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= || | + | | int || Worm''#''_XPosition= || X position of the worm. |
|- | |- | ||
− | | int || Worm''#''_YPosition= || | + | | 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 === | === 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 159: | Line 188: | ||
!Description | !Description | ||
|- | |- | ||
− | | int || TeamNameNumber= || | + | | 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= || | + | | 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= || | + | | int || NumberOfWorms= || Simply the number of worms on the team. Invalid values causes crashes. |
|- | |- | ||
− | | int || SoundBank= || | + | | int || SoundBank= || Supposedly sets the soundbank for the team, but is ignored. The default soundbank is always used. |
|- | |- | ||
− | | int || Flag= || | + | | int || Flag= || Supposedly selects the flag, but this is ignored. Flags are selected through the TeamSkill parameter. |
|- | |- | ||
− | | int || GraveStone= || | + | | int || GraveStone= || Supposedly selects the gravestone used by the team, but this is ignored. It is not possible to change gravestones. |
|- | |- | ||
− | | int || AlliedGroup= || | + | | 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 || | + | | 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]]''= || | + | | int || Ammo_''[[#Weapon Strings|WeaponString]]''= || The ammo of the given weapon. -1 is infinite. |
|- | |- | ||
− | | int || Delay_''[[#Weapon Strings|WeaponString]]''= || | + | | int || Delay_''[[#Weapon Strings|WeaponString]]''= || The delay of the given weapon in turns. 0 or not present for no delay. |
|- | |- | ||
− | | int || Worm''#''_Energy= || | + | | 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= || | + | | 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= || | + | | bool || Worm''#''_ArtileryMode= || 1 for artillery [sic, yet again] mode for worm, 0 for worm can move. |
|- | |- | ||
− | | bool || Worm''#''_PlaceWorm= || | + | | 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= || | + | | int || Worm''#''_XPosition= || X position of the worm. |
|- | |- | ||
− | | int || Worm''#''_YPosition= || | + | | 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= || | + | | 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= || | + | | int || Worm''#''_FixedWeapon= || The weapon ID of the fixed weapon. 0 for normal free CPU choice. |
|- | |- | ||
− | | int || Worm''#''_ActionRadius= || | + | | int || Worm''#''_ActionRadius= || The distance away from itself the CPU takes into account. 0 = no range limitation? |
|- | |- | ||
− | | bool || Worm''#''_Vital= || | + | | 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 === | === 8. The [Events] Group === | ||
+ | Definitely not required, this group. | ||
+ | |||
{| border="1" cellspacing="0" class="wikitable" | {| border="1" cellspacing="0" class="wikitable" | ||
!Type | !Type | ||
Line 207: | Line 268: | ||
!Description | !Description | ||
|- | |- | ||
− | | int || TotalNumberOfEvents= || | + | | 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 217: | Line 280: | ||
!Description | !Description | ||
|- | |- | ||
− | | int || TypeOfEvent= || | + | | 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. |
|- | |- | ||
− | | | + | | 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 || | + | | int || PlaceTarget_XPosition= || X position of target. |
|- | |- | ||
− | | int || | + | | 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 || | + | | 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 || | + | | int || PlaceTarget_FallSpeed= || Fall speed for the target. |
|- | |- | ||
− | | int || | + | | int || PlaceTarget_Bonus_Points= || The number of points you get for destroying the target. |
|- | |- | ||
− | | int || | + | | int || PlaceTarget_Bonus_TurnExtention= || The extension to your turn time for destroying the target. |
|- | |- | ||
− | | int || | + | | 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. |
+ | |- | ||
+ | | bool || PlaceTarget_Vital= || 1 if the target is vital - Destroying a vital target does ''not'' end the mission, it only changes the sprite (flashing hat for old woman) | ||
+ | |- | ||
+ | | 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 === | === 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. | ||
{| border="1" cellspacing="0" class="wikitable" | {| border="1" cellspacing="0" class="wikitable" | ||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | !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 |
|} | |} | ||
Line 300: | Line 414: | ||
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 306: | Line 420: | ||
!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 770: | Line 884: | ||
| 72 and beyond || (null) | | 72 and beyond || (null) | ||
|} | |} | ||
− | |||
− | |||
==See also== | ==See also== | ||
* [[WA Mission Customization Guide]] | * [[WA Mission Customization Guide]] | ||
+ | * [[wkTerrainSync]] (missions can be played with this module) | ||
+ | * [[WWP Mission Editor]] | ||
+ | * [[WA Mission Editor]] |
Latest revision as of 23:31, 31 July 2024
The Worms Armageddon mission file (.wam) 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.
Contents
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.
|
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. |
int | 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:
|
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:
|
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:
|
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. |
bool | PlaceTarget_Vital= | 1 if the target is vital - Destroying a vital target does not end the mission, it only changes the sprite (flashing hat for old woman) |
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
- WA Mission Customization Guide
- wkTerrainSync (missions can be played with this module)
- WWP Mission Editor
- WA Mission Editor