Game scheme file
From Worms Knowledge Base
- "WSC" redirects here. For the scheme contest, see Worms Scheme Contest.
The W:A scheme file format contains game settings, which define which weapons will be available, various game options such as turn time and weapon strength, as well as many other settings.
Contents
Versioning
The basic W:A scheme format currently has three versions:
- Version 1 is the original scheme format that came with the game. It is 221 bytes in size, and contains only the basic game options and settings for the standard weapons. Much of the information on this version was initially extracted from The Fiddler.
- Version 2 was introduced in the 3.5 Beta 1 update. It is 297 bytes in size, and contains the above plus settings for super weapons.
- Version 3 will be introduced in the 3.8 update. It is of variable size, depending on how many extended options are set — in 3.8 it can reach up to 407 bytes, though this may be extended in the future without necessarily incrementing the scheme format version. It contains the new Extended Scheme Options introduced in this version of the game. Default values are specified for each of the Extended Scheme Options which are used by the game when the file is not long enough to contain the option in question.
File format
A scheme is organized into the following sections, which are explained in more detail below. Depending on the scheme version, specific sections may not be available.
Offset | Size | Version | Section | Description |
---|---|---|---|---|
00 | 5 | 1 | Header | Signature ("magic bytes") and version of scheme. |
05 | 35 | 1 | Options | Game options like number of rounds, mines, worm energy, etc. |
29 | 180 | 1 | Weapons | Normal weapon and utility table. |
DD | 76 | 2 | Super weapons | Super weapon and utility table. |
129 | 0-110 | 3 | Extended options | Detailed physics / emulation / RubberWorm settings. |
The following data types are used:
- Integers are little endian.
- Fixed-point values are split into two halves; the most significant two bytes are the whole part, and the least significant two bytes are the fractional part, measuring 65536ths. For instance, 0x00020001 (which due to little-endian would be written to the file in the order 01 00 02 00) would equal 2 + 1/65536.
- Bools, unless otherwise specified, use 0 for false and 1 for true.
- Tri-state values have the following possible values: 0 for false, 1 for true, 128 (0x80) for the default behaviour as determined by game engine version or other external factors.
Header
Offset | Size | Type | Name | Description |
---|---|---|---|---|
00 | 4 | char[4] | Signature | The magic number used to identify the WSC file. Hex: 0x5343484D, ASCII: "SCHM" |
04 | 1 | uint8 | Version | Represents the WSC file version.
|
Options
Offset | Size | Type | Name | Description |
---|---|---|---|---|
05 | 1 | uint8 | Hot-Seat Delay | The extra time added between turns, used to switch seats and/or plan your turn. Values represent seconds. |
06 | 1 | int8 | Retreat Time | The time available after using a weapon while grounded, used to move to a better place before your turn ends. Values represent seconds. |
07 | 1 | int8 | Rope Retreat Time | The time available after using a weapon while roping, used to move to a better place before your turn ends. Values represent seconds. |
08 | 1 | bool | Display Total Round Time | If true, the total round time is displayed along with the turn time. |
09 | 1 | bool | Automatic Replays | If true, the game will automatically replay the ending of a significant turn. Does not apply to online games. |
0A | 1 | int8 | Fall Damage | The amount of damage caused to a worm for hitting the ground at a critical velocity. |
0B | 1 | bool | Artillery Mode | If true, worms are unable to move around by means of walking or jumping. Also known as "anchored worms". |
0C | 1 | bool | Bounty Mode | This setting presumably was for a planned feature that never got implemented. The byte is unused by the game. A suggested use for this byte is for scheme editors to save a selected Magic Number to distinguish which scheme editor was used to encode a scheme.
|
0D | 1 | enum | Stockpiling Mode | Determines what happens to unused weapons between rounds. This setting only matters in matches where more than 1 round is meant to be played.
|
0E | 1 | enum | Worm Select | The method for choosing which worm on the team plays the turn.
|
0F | 1 | enum | Sudden Death Event | An event that gets triggered after the remaining round time reaches zero.
|
10 | 1 | sint8 | Water Rise Rate | The rate that the water rises after each turn during sudden death. |
11 | 1 | sint8 | Weapon Crate Probability | The relative chance that a crate drop will contain weapons. |
12 | 1 | bool | Donor Cards | If true, teams will drop a collectible donor card at their defeat. |
13 | 1 | sint8 | Health Crate Probability | The relative chance that crate drop will contain energy. |
14 | 1 | uint8 | Health Crate Energy | The amount of energy gained for collecting a health crate drop. Values represent energy amount. |
15 | 1 | sint8 | Utility Crate Probability | The relative chance that a crate drop will contain a utility. |
16 | 1 | uint8 | Hazardous Object Types | Sets what hazards should appear on the landscape (and how many since W:A 3.6.28.0). |
17 | 1 | sint8 | Mine Delay | The amount of time between activating a mine and it exploding.
|
18 | 1 | bool | Dud Mines | If true, some landscape mines will be triggered as duds. |
19 | 1 | bool | Manual Worm Placement | If true, worms are placed by the players onto the landscape at the beginning of the round. |
1A | 1 | uint8 | Initial Worm Energy | The amount of energy a worm begins a round with.
|
1B | 1 | sint8 | Turn Time | The amount of time you get to make your move.
|
1C | 1 | sint8 | Round Time | The amount of time before sudden death is triggered.
|
1D | 1 | int8 | Number of Rounds | The number of round wins required to win the match. If 0, W:A (since 3.6.29.0) plays 1 round even if drawn, WWP plays for 1 win. |
1E | 1 | bool | Blood | If true, damaging a worm causes red particles to be drawn instead of pink. |
1F | 1 | bool | Aqua Sheep | If true, super sheep are converted to aqua sheep, which can swim under the water. |
20 | 1 | bool | Sheep Heaven | If true, exploding sheep will jump out of destroyed weapon crates. |
21 | 1 | bool | God Worms | If true, all worms have infinite health and can only be destroyed by drowning them. |
22 | 1 | bool | Indestructible Land | If true, the landscape can not be destroyed, except by rising water. |
23 | 1 | bool | Upgraded Grenade | If true, grenades are more powerful. |
24 | 1 | bool | Upgraded Shotgun | If true, the shotgun shoots 2 consecutive shots, giving it 4 shots total. |
25 | 1 | bool | Upgraded Clusters | If true, cluster weapons contain even more clusters. |
26 | 1 | bool | Upgraded Longbow | If true, longbows are more powerful. |
27 | 1 | bool | Team Weapons | If true, teams will start the match with their preselected team weapon. The team weapon setting will override the Ammo, Power, Delay, and Crate settings for the 8 team weapons in the scheme (see Team weapons). |
28 | 1 | bool | Super Weapons | If true, super weapons may appear in weapon crate drops (see Crate probability). |
Weapons
The following weapon settings follow for each individual weapon. Version 1 of the scheme format stores only the 45 regular weapons. Version 2 of the format and later have added support for super weapon settings, totalling to 64 weapon records.
Offset | Size | Type | Name | Description |
---|---|---|---|---|
00 | 1 | uint8 | Ammunition | A value of 10 or between 0x80 and 0xFF will give unlimited ammunition. |
01 | 1 | uint8 | Power | Effect varies depending on weapon. Jet Pack power will set the fuel. |
02 | 1 | uint8 | Delay | A value between 0x80 and 0xFF will give the weapon an unlimited delay, "blocking" it. This is useful if one doesn't want a specific super weapon that has 0 ammunition to appear in crates. |
03 | 1 | uint8 | Probability | Chance of the weapon appearing in a crate. |
The list of weapons, as they appear in the scheme files and in the game memory, is as follows. If the given weapon's power is exceeded, the game warns about "non-standard" power levels, which are only defined for normal weapons, neither utilities nor super weapons.
Offset | Index | Weapon Name | Max. Power |
---|---|---|---|
29 | 0 | Bazooka | 20 |
2D | 1 | Homing Missile | 20 |
31 | 2 | Mortar | 15 |
35 | 3 | Grenade | 20 |
39 | 4 | Cluster Bomb | 15 |
3D | 5 | Skunk | 10 |
41 | 6 | Petrol Bomb | 20 |
45 | 7 | Banana Bomb | 15 |
49 | 8 | Handgun | 20 |
4D | 9 | Shotgun | 20 |
51 | 10 | Uzi | 20 |
55 | 11 | Minigun | 20 |
59 | 12 | Longbow | 10 |
5D | 13 | Airstrike | 15 |
61 | 14 | Napalm Strike | 15 |
65 | 15 | Mine | 20 |
69 | 16 | Fire Punch | 20 |
6D | 17 | Dragon Ball | 20 |
71 | 18 | Kamikaze | 20 |
75 | 19 | Prod | 20 |
79 | 20 | Battle Axe | 5 |
7D | 21 | Blowtorch | 20 |
81 | 22 | Pneumatic Drill | 20 |
85 | 23 | Girder | none |
89 | 24 | Ninja Rope | none |
8D | 25 | Parachute | none |
91 | 26 | Bungee | none |
95 | 27 | Teleport | 20 |
99 | 28 | Dynamite | 20 |
9D | 29 | Sheep | 20 |
A1 | 30 | Baseball Bat | 20 |
A5 | 31 | Flame Thrower | 20 |
A9 | 32 | Homing Pigeon | 20 |
AD | 33 | Mad Cow | 20 |
B1 | 34 | Holy Hand Grenade | 20 |
B5 | 35 | Old Woman | 20 |
B9 | 36 | Sheep Launcher | 20 |
BD | 37 | Super Sheep | 20 |
C1 | 38 | Mole Bomb | 20 |
C5 | 39 | Jet Pack | - |
C9 | 40 | Low Gravity | - |
CD | 41 | Laser Sight | - |
D1 | 42 | Fast Walk | - |
D5 | 43 | Invisibility | - |
D9 | 44 | Damage x2 | - |
Super weapons, which are not available in Version 1 scheme files:
Offset | Index | Weapon Name |
---|---|---|
DD | 45 | Freeze |
E1 | 46 | Super Banana Bomb |
E5 | 47 | Mine Strike |
E9 | 48 | Girder Starter Pack |
ED | 49 | Earthquake |
F1 | 50 | Scales Of Justice |
F5 | 51 | Ming Vase |
F9 | 52 | Mike's Carpet Bomb |
9D | 53 | Patsy's Magic Bullet |
101 | 54 | Indian Nuclear Test |
105 | 55 | Select Worm |
109 | 56 | Salvation Army |
10D | 57 | Mole Squadron |
111 | 58 | MB Bomb |
115 | 59 | Concrete Donkey |
119 | 60 | Suicide Bomber |
11D | 61 | Sheep Strike |
121 | 62 | Mail Strike |
125 | 63 | Armageddon |
Extended options
The following options are found only in Version 3 schemes. This section of the scheme file may be extended further in future versions of the game without the scheme version being incremented. For the options which follow, the game will detect invalid values when a scheme is loaded, and reset them to the defaults.
Offset | Size | Type | Default | Name | Description |
---|---|---|---|---|---|
129 | 4 | 0 | Data Version | Currently 0x00000000. This may be changed by future versions of the game if interpretations of existing settings, for instance superweapon power/crate probability, change. | |
12D | 1 | bool | false | Constant Wind | True if the wind field that follows should be interpreted as the constant value of the wind. |
12E | 2 | sint16 | 100 | Wind | The strength and direction of the wind if Constant Wind is true (positive being rightwards wind, negative being leftwards wind), else the maximum strength of the random wind (negative values inverting the wind bias). |
130 | 1 | uint8 | 15 | Wind Bias | The higher the value, the more likely worms on the right side of the map will get leftwards wind, and vice versa. |
131 | 4 | fixed-point | 15728/65536 0x00003D70 |
Gravity | Acceleration due to gravity in pixels per frame per frame.
|
135 | 4 | fixed-point | 62914/65536 0x0000F5C2 |
Terrain Friction | The proportion of velocity retained during collisions with terrain (0 is instant stop, 1 is no friction). Known as "Friction" in RubberWorm.
|
139 | 1 | uint8 | 255 | Rope Knocking | Rope knocking force in percentage of the ordinary rope knocking force, or 255 to use the value from the channel scheme (online) or registry (offline). Known as "Knock" in RubberWorm. |
13A | 1 | uint8 | 255 | Blood Level | Amount of blood emitted from worms, or 255 to use the value from the channel scheme (online) or the default (offline, 25). Does not affect the blood's colour. |
13B | 1 | bool | false | Unrestrict Rope | If true, the rope may be fired 54 degrees below the horizontal, and has reduced friction. Known as "IR" in RubberWorm. |
13C | 1 | bool | false | Auto-Place Worms by Ally | If true, the game will attempt to group worms by their allied colour when automatic worm placement is enabled (or is forced by the presence of CPU teams). |
13D | 1 | uint8 | 255 | No-Crate Probability | If set to a value other than 255, specifies the probability of no crate falling at the start of a given turn; the maximum allowed to be set ingame being 100 (0x64). If the value is set to 255, this field is ignored and the usual logic for determining the no-crate probability applies (see Crate probability). |
13E | 2 | uint16 | 5 | Maximum Crate Count on Map at Once | Specifies the maximum number of crates which can appear on the map at once before the game will stop spawning new ones. Known as "Cratelimit" in RubberWorm. Setting this too high can cause strange graphical effects. |
140 | 1 | bool | true | Sudden Death Disables Worm Select | If true, Worm Select is disabled when Sudden Death starts. |
141 | 1 | uint8 | 5 | Sudden Death Worm Damage Per Turn | If the sudden death type is set to nuke, the number of health points that will be lost per turn. |
142 | 1 | enum | 0 | Phased Worms (Allied) | Controls how allied worms move through and otherwise affect each other.
|
143 | 1 | enum | 0 | Phased Worms (Enemy) | As above, but for enemy worms. |
144 | 1 | bool | false | Circular Aim | If true, the crosshair will continue moving past the top or bottom of its limits instead of stopping, to make aiming at specific angles more challenging. Known as "CIRA" in RubberWorm. |
145 | 1 | bool | false | Anti-Lock Aim | If true, aim is reset between turns, to make repeat shots more challenging. |
146 | 1 | bool | false | Anti-Lock Power | If true, power will start to decrease once it reaches the maximum, instead of the weapon being fired. Intended to make full-power shots more challenging. Known as "ALP" in RubberWorm. |
147 | 1 | bool | false | Worm Selection Doesn't End Hot Seat | If true, selecting worms at the start of a turn will not cause the Hot Seat timer to end and the turn timer to start. |
148 | 1 | bool | false | Worm Selection is Never Cancelled | If true, Worm Selection won't be cancelled by movement, etc.; that is, if Worm Select is enabled in the scheme, you can always press tab during a turn to change worms; or if not, use of the Select Worm weapon will cause Worm Selection to be enabled until the end of the turn. Know as "SWAT" in RubberWorm. |
149 | 1 | bool | false | Batty Rope | If true, worms will keep their ninja rope, bungee, or jetpack even when a turn ends. |
14A | 1 | enum | 0 | Rope-Roll Drops | Determines which, if any, weapons can be dropped while in a rope roll (after detaching the Ninja Rope or Bungee while control is still retained).
|
14B | 1 | boolean-like | 0 | X-Impact Loss of Control | If set to 0, horizontal collisions at a high enough speed will cause a loss of control. If set to 0xFF, they will not. |
14C | 1 | bool | false | Keep Control After Bumping Head | If true, control of the worm is retained even after an upwards vertical collision with terrain during a rope/bungee roll. |
14D | 1 | enum | 0 | Keep Control After Skimming | Determines what happens to control after skimming on water.
|
14E | 1 | bool | false | Fall Damage is Triggered by Explosions | If true, worms will suffer fall damage in addition to the usual explosion damage when they are thrown by explosions. |
14F | 1 | tri-state | default | Explosions Push All Objects | If true, explosions push all objects; for instance a mad cow exploding will push the other cows. Known as "OPE" in RubberWorm. |
150 | 1 | tri-state | default | Undetermined Crates | If true, crate contents are not determined until the crate is picked up, or someone collects a Crate Spy; instead of when the crate is spawned. |
151 | 1 | tri-state | default | Undetermined Fuses | If true, the fuses of random mines are not determined until the mine is triggered, instead of when the mine is created. |
152 | 1 | bool | true | Pause Timer While Firing | If true, the turn timer will be paused while a weapon is being fired. Known as "FDPT" in RubberWorm. |
153 | 1 | bool | false | Loss of Control Doesn't End Turn | If true, losing control of your worm will not cause your turn to end. Known as "LDET" in RubberWorm. |
154 | 1 | bool | false | Weapon Use Doesn't End Turn | If true, using a weapon will not cause your turn to end. Known as "SDET" in RubberWorm. |
155 | 1 | bool | false | Above option doesn't block any weapons | If true, enabling the above option won't cause the Earthquake, Armageddon, and Indian Nuclear Test to be disabled. Known as "USW" in RubberWorm. |
156 | 1 | tri-state | default | Pneumatic Drill Imparts Velocity | If true, hitting a worm with a pneumatic drill will cause that worm to move horizontally proportionally to how fast the drilling worm is moving. |
157 | 1 | bool | false | Girder Radius Assist | If true, the mouse cursor is prevented from moving outside the radius in which a girder can successfully be placed. |
158 | 2 | fixed-point fractional part | 13106/65536 0x3332 |
Petrol Turn Decay | To what extent flames from a Petrol Bomb decay per turn. A value of 0xFFFF (65535/65536) causes the flames to be removed completely after one turn. |
15A | 1 | uint8 | 30 | Petrol Touch Decay | To what extent flames from a Petrol Bomb decay when touched by a worm. Larger values will result in the petrol disappearing faster and thus imparting less total damage.
|
15B | 2 | uint16 | 200 | Maximum Flamelet Count | The maximum number of fire objects that can exist at once. Creation of new flamelets beyond this limit will erase older ones. Setting this too high can cause strange graphical effects. Known as "Flames" in RubberWorm.
|
15D | 4 | fixed-point | 32.0 0x00200000 |
Maximum Projectile Speed | The maximum speed in pixels per frame at which an object following projectile physics can move (the limit is applied separately for vertical and horizontal velocity). A value of 0 disables the limit.
|
161 | 4 | fixed-point | 16.0 (0x00100000 |
Maximum Rope Speed | The maximum speed in pixels per frame at which a worm with an attached Ninja Rope or Bungee can move. A value of 0 disables the limit. Known as "Speed" in RubberWorm.
|
165 | 4 | fixed-point | 5.0 0x00050000 |
Maximum Jet Pack Speed | The maximum speed in pixels per frame at which a worm with an equipped Jet Pack can move. A value of 0 disables the limit.
|
169 | 4 | fixed-point | 1.0 0x00010000 |
Game Engine Speed | The speed at which physics and sound effects occur, where the normal speed is 1.0.
|
16D | 1 | tri-state | default | Indian Rope Glitch | If true, selecting and firing the ninja rope while moving will bypass the angle limit of the Ninja Rope and allow it to be shot vertically downwards. |
16E | 1 | tri-state | default | Herd-Doubling Glitch | If true, jumping at the right moment makes it possible to release twice the number of Mad Cows as the selected herd count. |
16F | 1 | bool | true | Jet Pack Bungee Glitch | If true, Bungee may be triggered from a Jet Pack. |
170 | 1 | bool | true | Angle Cheat Glitch | If true, selecting and firing the baseball bat and longbow while moving makes it possible to bypass the angle restrictions on these weapons. |
171 | 1 | bool | true | Glide Glitch | If true, a certain type of leftward collision by a jumping, post-drilling, or post-retreat worm can cause the worm to continue moving with reduced speed rather than landing. |
172 | 1 | enum | 0 | Skipwalking |
|
173 | 1 | enum | 0 | Block Roofing |
|
174 | 1 | bool | true | Floating Weapon Glitch | If true, a weapon which would normally explode on impact can be dropped onto a surface and sit until its fuse expires, if done in precisely the right way. |
175 | 4 | fixed-point | 0.0 | RubberWorm Bounciness | Makes worms spring back like a banana on collision, and sets the strength (coefficient of restitution) of said bounciness. Known as "Rubber" in RubberWorm.
|
179 | 4 | fixed-point | 0.0 | RubberWorm Air Viscosity | Makes objects such as projectiles experience "friction" while flying through the air, and sets the strength of said friction. Known as "Visc" in RubberWorm.
|
17D | 1 | bool | false | RubberWorm Air Viscosity Applies to Worms | If true, the above value affects worms too. |
17E | 4 | fixed-point | 0.0 | RubberWorm Wind Influence | Extends the set of objects influenced by wind and sets the strength of said influence. Known as "Wind" in RubberWorm.
|
182 | 1 | bool | false | RubberWorm Wind Influence Applies to Worms | If true, the above value affects worms too. |
183 | 1 | enum | 0 | RubberWorm Gravity Type |
|
184 | 4 | fixed-point | 1.0 0x00010000 |
RubberWorm Gravity Strength | Sets the strength of the RubberWorm gravity, in terms of a multiplier of ordinary gravity for Standard or Black Hole (constant), or representing the distance in pixels from the centre of the map at which gravity will be the normal strength for Black Hole (linear).
|
188 | 1 | uint8 | 0 | RubberWorm Crate Rate | Sets the number of crates that can potentially spawn simultaneously at the start of the turn. With crate drop probabilities set to 100% and when the maximum crate count would not be reached, this is equal to the number of crates which spawn. A crate counter will also be enabled if this is nonzero. Known as "Craterate" in RubberWorm. |
189 | 1 | bool | false | RubberWorm Crate Shower | If true, crates will drop continuously during turns. Known as "Crateshower" in RubberWorm. |
18A | 1 | bool | false | RubberWorm Anti-Sink | If true, worms will be teleported back to the last piece of land they were standing on if they touch the sea. If they touch the sea twice in a row they will drown as normal. Known as "Antisink" in RubberWorm. |
18B | 1 | bool | false | RubberWorm Remember Weapons | If true, it prevents the weapon selection from resetting to a common weapon after using rarer weapons. Known as "WDCA" in RubberWorm. |
18C | 1 | bool | false | RubberWorm Extended Fuses/Herds | If true, the numeric keys from 0-9 can all be used in selecting weapon fuses and herd sizes (0 corresponds to 10). Known as "Fuseex" in RubberWorm. |
18D | 1 | bool | false | RubberWorm Anti-Lock Aim | If true, aiming angle is reset to zero degrees after each shot (the standard anti-lock aim resets to a random value). Known as "Reaim" in RubberWorm. |
18E | 1 | tri-state | default | Terrain Overlap Phasing Glitch | If true, objects with collision masks intersecting with the land will pass through said land until reaching space free of any land. |
18F | 1 | bool | false | Fractional Round Timer | If true, the sudden death round timer counts down in fractions of seconds, instead of only in whole seconds. In schemes with one second turn time this allows sudden death to approach even if no players fail to finish their turn before the time runs out. |
190 | 1 | bool | false | Automatic End-of-Turn Retreat | If true, retreat time will be triggered when turn time expires. Useful in "weapon use doesn't end turn" mode. |
191 | 1 | enum | 1 | Health Crates Cure Poison | Determines which worms, if any, are cured of poison when a health crate is collected.
|
192 | 1 | enum | 0 | RubberWorm Kaos Mod | Changes the utility crate probabilities (Fast Walk, Laser Sight, Damage*2, Invisibility, Low Gravity, Crate Spy, Jet Pack, Double Time, Crate Shower) between 6 presets. Known in RubberWorm as "Kaosmod".
|
193 | 1 | bitmask | 7 | Sheep Heaven's Gate | Controls what the Sheep Heaven scheme option enables. Since this is a bitmask, these values can be added together to determine which of these options are enabled. This must not be 0.
|
194 | 1 | bool | false | Conserve Instant Utilities | If true, instant utilities are consumed one at a time, and the remainder conserved, staying in the teams' inventories for later automatic use. Among other effects, this causes Damage*2 ammo to behave like Worms World Party's Double Damage ammo setting. |
195 | 1 | bool | false | Expedite Instant Utilities | If true, instant utilities are always consumed as soon as they are collected, even in circumstances (such as after the end of a team's turn) when they would normally be conserved for later use. |
196 | 1 | uint8 | 1 | Double Time Stack Limit | The number of times a Double Time instant utility can be activated in a single turn. 0 represents unlimited activations. Stacking occurs with multipliers 2*, 3/2*, 4/3*, 5/4*, etc. |
Differences in Worms World Party
Worms World Party schemes are based on Worms Armageddon version 1 schemes. After the weapon settings (which don't include super weapons), Worms World Party schemes contain three bytes of unknown purpose (appear to usually be null), followed by five bytes composed of a repeat of the signature followed by the version one more time. In addition, the Worms World Party schemes use version number 1, and they interpret Double Damage ammo as the number of turns for which double damage will take effect.