Difference between revisions of "RubberWorm"

From Worms Knowledge Base

Jump to: navigation, search
m
m (Source code)
 
(169 intermediate revisions by 16 users not shown)
Line 1: Line 1:
{{ParentArticle|[[WormKit]]}}
+
{{ParentArticle|[[Software]], [[WormKit]]}}
 +
{{WkIncompatible|versioncheck=1|obsolete=1}}
 
{{Software_infobox
 
{{Software_infobox
 +
| icon = RubberWorm_icon.png
 
| name = RubberWorm
 
| name = RubberWorm
| developer = [[Pisto]]
+
| developer = [[People/Pisto|Pisto]], [[People/Kawoosh|Kawoosh]]
| version = 0.7.32 / 3rd August 2008
+
| version =
 +
RubberWorm3x (3.7.2.1):
 +
* 0.0.1.17 / 15 August 2013
 +
Original by Pisto (3.6.29.0):
 +
* 0.7.32 / 3 August 2008
 
| games = [[Worms Armageddon|W:A]]
 
| games = [[Worms Armageddon|W:A]]
| language = C
+
| waver = 3.7.2.1, 3.7.0.0, 3.6.31–28.0
 +
| waeditions = {{WA editions|cd|steam}}
 +
| language = C/C++
 
| license = Partially open-source
 
| license = Partially open-source
| download = [http://www.webalice.it/micioptah/RubberWorm_v0.7.32.exe 0.7.32 installer]
+
| download = '''[[RubberWorm/Download|Download]]'''
[http://worms2d.info/files/wkRubberWorm06beta2src.rar 0.6beta2 source (6kb)]
+
 
}}
 
}}
  
'''RubberWorm''' (or '''wkRubberWorm''') is a module for [[WormKit]] that can modify parts of the Worms Armageddon physics to create [[WormPot]]-like effects, and adapts some features of [[wkMagic Map Wizard|wkMagic]] to the latest version of the game (3.6.29.0). It was originally released by [[Pisto]] on 6 April 2008 [http://forum.team17.com/showthread.php?t=36016].
+
'''RubberWorm''' (also known as '''wkRubberWorm''' or simply '''RW''' in [[Terminology|worms terminology]]) was a module for [[WormKit]] that could modify parts of the ''[[Worms Armageddon]]'' physics to create [[Wormpot]]-like effects, and adapted some features of [[wkMagic Map Wizard|wkMagic]] to the 3.6.29.0, 3.6.30.0, 3.6.31.0, 3.7.0.0 and 3.7.2.1 versions. It was originally released by [[Pisto]] on 6 April 2008, and then ported by [[People/Kawoosh|Kawoosh]] to the latest W:A update with several [[RubberWorm/Download|new features]].
 +
 
 +
Starting with the [[Worms_Armageddon_ReadMe_(English)/v3.8_Update|version 3.8]] of W:A, all of RubberWorm's features have been integrated into the base game as [[Game_scheme_file#Extended_options|extended scheme options]], which makes the module obsolete.
  
 
RubberWorm's effects are applied to the game when certain scheme settings are set to certain values. These settings are normally unused, such as crate probabilities for superweapons. As such, only an external scheme editor can create schemes that will enable RubberWorm effects, though RubberWorm does also provide a chat command interface allowing a host to enable RubberWorm effects in the lobby of a WormNET game. The scheme can then be extracted from the replay afterwards.
 
RubberWorm's effects are applied to the game when certain scheme settings are set to certain values. These settings are normally unused, such as crate probabilities for superweapons. As such, only an external scheme editor can create schemes that will enable RubberWorm effects, though RubberWorm does also provide a chat command interface allowing a host to enable RubberWorm effects in the lobby of a WormNET game. The scheme can then be extracted from the replay afterwards.
  
For online play, all players must run WA through WormKit, and have the same version of the RubberWorm dll file.
+
For a complete and safe online play, all players should have the same version of the RubberWorm dll file.
  
 
== General Info ==
 
== General Info ==
  
=== Installation ===
+
=== Installation and use ===
  
As any WormKit module, it has to be placed with the WormKit files in the W:A main folder, and the game must be run through WormKit.exe instead of WA.exe. Changes are applied only when using special schemes with some altered bytes.
+
Like any WormKit module, it has to be placed in the W:A main folder (or you can use the installer), and you need to enable Loading of WormKit modules in the W:A's Advanced Settings. Changes to the game are applied only when any feature of RubberWorm is enabled.
  
=== Antivirus issue ===
+
=== Source code ===
  
Some antivirus programs may treat RubberWorm (as well as Wormkit) as a virus. It is a false alarm: it happens because RubberWorm uses some technique and Dlls abused by malware too.
+
Original wkRubberWorm is written in C, and a part of the source code, lacking addresses and structs (like [[wkMagic]]), is public for demonstrative purposes.
 +
RubberWorm3x by [[People/Kawoosh|Kawoosh]] was done by reverse-engineering the original RubberWorm, rewritten in C++.
  
=== Source code ===
+
=== Kawoosh's version of RubberWorm ===
 +
 
 +
Since 3.6.30.0, [[People/Kawoosh|Kawoosh]] had been updating RubberWorm with new features and support for newest W:A updates. It had all basic features of old RubberWorm, KaosMod, TrastulloPerAtrox and some of LaserFix and will not make desynchronizations when playing with an older WA+RubberWorm user'''<nowiki>*</nowiki>'''. The same concerns replays—you can safely view older RubberWorm replays (made before 3.6.30.0) using this version. Read more [http://forum.team17.com/showthread.php?p=734952#post734952 here]{{dead link}}.
 +
 
 +
'''<nowiki>*</nowiki>'''If none of the new features, listed [[RubberWorm/Download|here]], are enabled. Some of them were also part of the old LaserFix module, and thus they are compatible. 3.6.29.0 version users cannot play against 3.7.0.0 online, but replays files are compatible with minor issues.
  
wkRubberWorm is written in C, and a part of the source code, lacking of addresses and structs (as wkMagic), is public for demonstrative purpose.
+
Features added by Kawoosh can be seen on the [[RubberWorm/Download|download page]].
  
 
== Features ==
 
== Features ==
  
; Bouncing worms
+
=== Bouncing worms ===
: The original purpose of RubberWorm. Every time a worm hits an object or the terrain (in any direction), it bounces off of it. If it's during a rope roll, it can continue roping, and it never takes fall damage or loses the turn. The feature is always off if the worm is flying for a jump.
+
The original purpose of RubberWorm. Every time a worm hits an object or the terrain (in any direction), it bounces off of it. If it's during a rope roll, it can continue roping, and it never takes fall damage or loses the turn. The feature is always off if the worm is flying for a jump.
The worms' "boing" sound can switched on/off typing in the game chat /boing.
+
:: ''Worm bounciness (or technically, the coefficient of restitution) is determined by the quotient of the value for the Armageddon crate probability divided by 255. For example, if the value is set to 0, the coefficient of restitution is 0, resulting in no bounce. If 255, the coefficient is 1, resulting in a perfectly elastic collision (the worm bounces with the same speed with which it hit the object or terrain).''
+
  
; Gravity modifications
+
The worms' "boing" sound can switched on/off typing in the in-game chat /boing (not in RubberWorm3x).
: Gravity can be made stronger or weaker, eliminated or even reversed. When reversed, a worm can stand on its head and shoot, but walking is obviously buggy. Also, should an object encounter no obstacle and fall into the sky, it will be sent to water when it reaches a certain height, otherwise it would block the game indefinitely.
+
: ''Worm bounciness (or technically, the coefficient of restitution) is determined by the quotient of the value for the '''Armageddon''' crate probability divided by 255. For example, if the value is set to 0, the coefficient of restitution is 0, resulting in no bounce. If 255, the coefficient is 1, resulting in a perfectly elastic collision (the worm bounces with the same speed with which it hit the object or terrain).''
  
; Central gravity (black hole mode)
+
=== Gravity modifications ===
: Gravity points towards the center of the map, or away from it (anti-gravity). These modes can either be proportional, where gravity is stronger near the center of the map, or constant, where gravity is the same strength for all locations.
+
Gravity can be made stronger or weaker, eliminated or even reversed. When reversed, a worm can stand on its head and shoot, but walking is obviously buggy. Also, should an object encounter no obstacle and fall into the sky, it will be sent to water when it reaches a certain height, otherwise it would block the game indefinitely.
: In black hole mode, the object may either start a steady orbit or fall in the middle of the map and never stop flying: to avoid the first case objects that don't explode after some seconds (like worms, mines, crates and barrels) have a very small air viscosity value (see below); for the second case, objects nearer than 15 pixel to the center are sent to water.
+
: ''Activated by the crate probability of the '''Mail Strike''', if the high bit (eighth bit) is clear. The other bits control the strength of gravity, from −63 to +63 in one's complement format (the seventh bit is the sign bit); a value of 0 or 12 results in default gravity. The value is one's complement in order to make it possible to set zero gravity; to do this, you make the gravity "negative zero" (which is −1 in two's complement), ie 0x7F''
: Anti-gravity has a similar safeguard to reversed gravity (see above).
+
: The strength of the gravity can be adjusted.
+
  
; Air viscosity
+
=== Central gravity (black hole mode) ===
: Objects flying through the air lose speed up to a steady velocity, determined by gravity and wind (imagine throwing a rock in the water). Some objects, such as crates, graves, barrels, parachuting worms, and Mail Strike letters, will not experience this effect. It is adjustable: a value of 63 makes the air pasty as water.
+
Gravity points towards the center of the map, or away from it (anti-gravity). These modes can either be proportional, where gravity is stronger near the center of the map, or constant, where gravity is the same strength for all locations.
:: ''Activated by the crate probability of the Concrete Donkey. A higher value produces a stronger effect. If the value is odd, the effect will apply to worms as well as objects.''
+
  
; Wind influence
+
In black hole mode, the object may either start a steady orbit or fall in the middle of the map and never stop flying: to avoid the first case objects that don't explode after some seconds (like worms, mines, crates and barrels) have a very small air viscosity value (see below); for the second case, objects nearer than 15 pixel to the center are sent to water.
: Like air viscosity, it can be applied to only objects or worms too, but never to those objects (like bazooka) that are already influenced by wind or crates, graves, barrels. How much the wind moves the objects is adjustable.
+
:: ''Activated by the crate probability of the Suicide Bomber. A higher value produces a stronger effect, with the highest value (255) corresponding to the wind susceptibility of the Bazooka. If the value is odd, the effect will apply to worms as well as objects.''
+
  
; Anti worm sink
+
Anti-gravity has a similar safeguard to reversed gravity (see above).
: If activated, a worm that hits the water is prevented from drowning and instead teleported to the last location where it has been motionless. The turn does not end. If the teleport results in the worm falling and hitting water again (for example, if the terrain has since been destroyed by a weapon), it drowns normally.
+
:: ''This feature is activated by a non-zero value for the crate probability of the French Sheep Strike.''
+
  
; Crate finder
+
The strength of the gravity can be adjusted.
: Arrows point to crates, as they do in certain missions. This feature can give a player an advantage if other players do not have RubberWorm, so a chat message is used to alert other players to its use.
+
: ''Activated by the crate probability of the '''Mail Strike'''. The high bit (eighth bit) enables black hole mode; the seventh bit enables proportional mode; the other bits control the strength of the black hole's gravity, from −32 to +31 in two's complement format (the sixth bit is the sign bit).''
:: ''Type /arrows in the in-game chat to activate this.''
+
  
; Friction modifications
+
=== Air viscosity ===
: Currently, the velocity of a worm is slowed by 4% each frame that a worm slides along the terrain. This is given by multiplying velocity by F*0.01, where the default F value is 96. A lower value results in a higher degree of friction, with F=0 reducing velocity to zero immediately (infinite friction). Values between 96 and 100 give slippier terrains, while a value of 100 results in no friction. Values above 100 will result in the worm's velocity actually increasing as it slides.
+
Objects flying through the air lose speed up to a steady velocity, determined by gravity and wind (imagine throwing a rock in the water). Some objects, such as crates, graves, barrels, parachuting worms, and Mail Strike letters, will not experience this effect. It is adjustable: a value of 63 makes the air pasty as water.
:: ''The friction value is stored in the crate probability of the Salvation Army.''
+
: ''Activated by the crate probability of the '''Concrete Donkey'''. A higher value produces a stronger effect. If the value is odd, the effect will apply to worms as well as objects.''
  
; Jetpack fuel variability
+
=== Wind influence ===
: You can set a value different than 30 of the jetpack fuel dotation, or set it infinite.
+
Like air viscosity, it can be applied to only objects or worms too, but never to those objects (like bazooka) that are already influenced by wind or crates, graves, barrels. How much the wind moves the objects is adjustable.
:: ''This value is determined by the crate probability of the MB Bomb: if the value is 255, the fuel will be infinite.''
+
: ''Activated by the crate probability of the '''Suicide Bomber'''. A higher value produces a stronger effect, with the highest value (255) corresponding to the wind susceptibility of the Bazooka. If the value is odd, the effect will apply to worms as well as objects.''
  
; Loss of control doesn't end turn
+
=== Anti-worm sink ===
: When activated, control of the active worm will not be lost in any circumstances (fall from a great height, weapon explosion, etc) except death.
+
If activated, a worm that hits the water is prevented from drowning and instead teleported to the last location where it has been motionless. The turn does not end. If the teleport results in the worm falling and hitting water again (for example, if the terrain has since been destroyed by a weapon), it drowns normally.
:: ''Controlled by the second bit of the crate probability of Mole Squadron (1=on).''
+
: ''This feature is activated by a non-zero value for the crate probability of the '''French Sheep Strike'''.''
  
; Shot doesn't end turn
+
=== Crate finder ===
: Firing a weapon doesn't end the player's turn. There's no retreat time and you can't control any weapon (such as Sheep or Supersheep) when turn time runs out.
+
Arrows point to crates, as they do in certain missions. This feature can give a player an advantage if other players do not have RubberWorm, so a chat message is used to alert other players to its use.
:: ''Controlled by the first bit of the crate probability of Mole Squadron (1=on).''
+
: ''Type /arrows in the in-game chat to activate this.''
  
; Fire doesn't pause timer
+
=== Friction modifications ===
: The timer doesn't pause while firing any weapon. Useful with Shot doesn't turn, because one could extend his turn time for a very long time using drill or blow torch, for example.
+
Currently, the velocity of a worm is slowed by 4% each frame that a worm slides along the terrain. This is given by multiplying velocity by F*0.01, where the default F value is 96. A lower value results in a higher degree of friction, with F=0 reducing velocity to zero immediately (infinite friction). Values between 96 and 100 give slippier terrains, while a value of 100 results in no friction. Values above 100 will result in the worm's velocity actually increasing as it slides.
:: ''Controlled by the third bit of the crate probability of Mole Squadron (1=on).''
+
: ''The friction value is stored in the crate probability of the '''Salvation Army'''.''
  
; Improved rope
 
: Changes the rope physics to simulate Worms 2 (higher accelleration, 162 degrees of shooting)
 
:: ''Controlled by the fourth bit of the crate probability of Mole Squadron (1=on).''
 
  
; Version override
 
: There are many engine version that come with the last update, and some of them may be interesting for their different behaviour. For example there are teststuff3 and 4, and though the second seems equals to the public, see next paragraph for a description of the third.
 
:: ''Version is set by the crate probability of Select Worm.''
 
  
; No objects speed limit (teststuff3)
+
=== Shot doesn't end turn, Loss of control doesn't end turn, Fire doesn't pause timer, Improved rope, Continuous crate shower ===
: Teststuff3 is an old version of teststuff (already available with 3.6.26.5). It is almost the same of the public teststuff5, but it doesn't just double the speed limit, but removes it.
+
''To edit these options, start with a value of zero and add the corresponding number for each option you want to enable (listed below). Then set the crate probability of the Mole Squadron to the resulting sum.''
:: ''Activated by a value of 0x41 (65 in decimal notation) of the crate probability of Select Worm.''
+
  
; Crate rate variability
+
==== Shot doesn't end turn ====
: Controls the number of crates that appear per turn
+
Firing a weapon doesn't end the player's turn. There's no retreat time and you can't control any weapon (such as Sheep or Supersheep) when turn time runs out.
:: ''Set by the crate probability of the Indian Nuclear Test.''
+
: ''Controlled by the first bit of the crate probability of Mole Squadron (add 1 to enable).''
  
; Crate limit variability
+
==== Loss of control doesn't end turn ====
: Controls the number of crates that can exist on the map at any one time (five at default)
+
When activated, control of the active worm will not be lost in any circumstances (fall from a great height, weapon explosion, etc) except death.
:: ''Set by the crate probability of the Magic Bullet.''
+
: ''Controlled by the second bit of the crate probability of Mole Squadron (add 2 to enable).''
  
; Continuous crate shower
+
==== Fire doesn't pause timer ====
: Activates a continuous crate shower similar to the WWP WormPot mode. Unlike that mode, however, crate settings for individual weapons is ''not'' ignored
+
The timer doesn't pause while firing any weapon. Useful with Shot doesn't turn, because without it one could extend his turn time for a very long time using drill or blow torch, for example.
 +
: ''Controlled by the third bit of the crate probability of Mole Squadron (add 4 to enable).''
 +
 
 +
==== Improved rope ====
 +
Changes the rope physics to simulate ''[[Worms 2]]'' (higher accelleration, 162 degrees of shooting)
 +
: ''Controlled by the fourth bit of the crate probability of Mole Squadron (add 8 to enable).''
 +
 
 +
==== Continuous crate shower ====
 +
Normally, the game checks between turns the crate probability settings, and determines if and which crate must be spawned. With this feature, you can force the game to do this job every 5 seconds, also during turns. If you want a crate shower like ''[[Worms World Party]]'', use [[SchemeEddy]] to check that the probability of no crate falling per turn is 0%. Keep in mind that the WWP crate shower spawns a completely random crate, that is it doesn't check the probability of each single weapon (that's why you can grab even [[Surrender]]).
 +
: ''Controlled by the fifth bit of the crate probability of Mole Squadron (add 16 to enable).''
 +
 
 +
 
 +
=== Version override ===
 +
: There are many engine version that come with the last update, and some of them may be interesting for their different behaviour. You shouldn't emulate the earliest versions of the 3.x, as they may lead to crashes (like, for not supporting the new scheme format, colored/big maps).
 +
:: ''Version is set by the crate probability of '''Select Worm'''.''
 +
 
 +
For version numbers, see [[WA versions list]].
 +
 
 +
=== Crate rate variability ===
 +
Controls the number of crates that appear per turn. When a value of '''Crate Rate''' exists, the '''Crate Count''' automatically will be turned on.
 +
: ''Set by the crate probability of the '''Indian Nuclear Test'''. The value 1 only will turn on the Crate Count''
 +
 
 +
=== Crate limit variability ===
 +
Controls the number of crates that can exist on the map at any one time (five at default)
 +
: ''Set by the crate probability of the '''Magic Bullet'''.''
  
 
== Chat command interface ==
 
== Chat command interface ==
Line 111: Line 132:
  
 
{| cellpadding="5" style="float: left; font-size: 100%; text-align: left;"
 
{| cellpadding="5" style="float: left; font-size: 100%; text-align: left;"
! style="width: 12em; font-size: 120%; text-align: left" | Command
+
! style="font-size: 120%;" | Command
! style="width: 38em; font-size: 120%; text-align: left" | Effect
+
! style="font-size: 120%;" | Effect
 
|-
 
|-
 
| '''/help'''
 
| '''/help'''
Line 138: Line 159:
 
| Enables the ''improved rope'' feature.
 
| Enables the ''improved rope'' feature.
 
|-
 
|-
| valign="top" | '''/rubber###''' [0-255]
+
| valign="top" | '''/rubber###''' [0–255]
 
| Enables the ''bouncing worms'' feature.<span style="color:red; font-family:monospace;">
 
| Enables the ''bouncing worms'' feature.<span style="color:red; font-family:monospace;">
 
0 .............. no bounce<br>
 
0 .............. no bounce<br>
 
255 ............ fully elastic bounce</span>
 
255 ............ fully elastic bounce</span>
 
|-
 
|-
| '''/boing'''
+
| '''/version###''' [1–255]
| Toggles the ''boing'' sound effect that plays when worms bounce.
+
|-
+
| '''/version###''' [1-255]
+
 
| Enables the ''arbitrary version override'' feature.
 
| Enables the ''arbitrary version override'' feature.
 
|-
 
|-
Line 155: Line 173:
 
| Enables the ''antisink'' feature.
 
| Enables the ''antisink'' feature.
 
|-
 
|-
| valign="top" | '''/visc###''' [0-255]
+
| valign="top" | '''/visc###''' [0–255]
 
| Enables the ''air viscosity'' feature.<span style="color:red; font-family:monospace;">
 
| Enables the ''air viscosity'' feature.<span style="color:red; font-family:monospace;">
 
odd number ..... affects worms too</span>
 
odd number ..... affects worms too</span>
 
|-
 
|-
| valign="top" | '''/wind###''' [0-255]
+
| valign="top" | '''/wind###''' [0–255]
 
| Enables the ''wind response'' feature.<span style="color:red; font-family:monospace;">
 
| Enables the ''wind response'' feature.<span style="color:red; font-family:monospace;">
 
1 to 255 ....... low sensitivity to wind<br>
 
1 to 255 ....... low sensitivity to wind<br>
Line 165: Line 183:
 
odd number ..... affects worms too</span>
 
odd number ..... affects worms too</span>
 
|-
 
|-
| valign="top" | '''/jetpack###''' [1-255]
+
| valign="top" | '''/jetpack###''' [1–255]
 
| Sets value of jetpack fuel.<span style="color:red; font-family:monospace;">
 
| Sets value of jetpack fuel.<span style="color:red; font-family:monospace;">
255 ............ infinite fuel</span>
+
no value ............ infinite fuel</span>
 
|-
 
|-
| valign="top" | '''/friction###''' [0-100]
+
| valign="top" | '''/friction###''' [1–100]
 
| Sets terrain friction.<span style="color:red; font-family:monospace;">
 
| Sets terrain friction.<span style="color:red; font-family:monospace;">
0 .............. infinite friction<br>
 
 
1 to 95 ........ high friction<br>
 
1 to 95 ........ high friction<br>
 
96 ............. default friction<br>
 
96 ............. default friction<br>
Line 179: Line 196:
 
|-
 
|-
 
| '''/glue'''
 
| '''/glue'''
| Alias for '''friction0'''
+
| Alias for '''friction1'''
 
|-
 
|-
 
| '''/ice'''
 
| '''/ice'''
 
| Alias for '''friction99'''
 
| Alias for '''friction99'''
 
|-
 
|-
| valign="top" | '''/gravity###''' [-64 to 63]
+
| valign="top" | '''/gravity###''' [−64 to 63]
 
| Sets gravity strength.<span style="color:red; font-family:monospace;">
 
| Sets gravity strength.<span style="color:red; font-family:monospace;">
 
-64 ............ reversed gravity, strength 5.3x<br>
 
-64 ............ reversed gravity, strength 5.3x<br>
Line 195: Line 212:
 
63 ............. high gravity, strength 5.3x</span>
 
63 ............. high gravity, strength 5.3x</span>
 
|-
 
|-
| '''/pbh###''' [-32 to 31]
+
| '''/pbh###''' [−32 to 31]
| Proportional black hole (variable is distance)
+
| Proportional black hole (variable is gravitational strength)
 
|-
 
|-
| '''/cbh###''' [-32 to 31]
+
| '''/cbh###''' [−32 to 31]
| Constant black hole (variable is distance)
+
| Constant black hole (variable is gravitational strength)
 
|-
 
|-
 
| '''/defg'''
 
| '''/defg'''
 
| Disables all gravity modification features.
 
| Disables all gravity modification features.
 
|-
 
|-
| '''/cratelimit###''' [1-255]
+
| '''/cratelimit###''' [1–255]
 
| Sets maximum number of co-existing crates.
 
| Sets maximum number of co-existing crates.
 
|-
 
|-
| '''/craterate###''' [1-255]
+
| '''/craterate###''' [1–255]
 
| Sets number of crates spawned per turn and enables the crate counter.
 
| Sets number of crates spawned per turn and enables the crate counter.
 
|-
 
|-
Line 217: Line 234:
 
|}
 
|}
 
<br clear="all">
 
<br clear="all">
 +
 +
== Anti-aliased bounces ==
 +
On 26th August 2009 a test build of RubberWorm 1.0 was [http://forum.team17.com/showthread.php?t=39403 released]. The reason for sharing it is to show some of the new features, mainly anti-aliased bouncing. It allows to emulate the real behaviour of an object colliding with a slope, a missing feature of the ''Worms Armageddon'' default engine.
  
 
== Future plans ==
 
== Future plans ==
Pisto has hinted at some future possibilities for RubberWorm:
+
Pisto gave up coding RubberWorm, though version 1.0 had been developed inconstantly for over a year. He lost interest in ''Worms'', but also in programming in general.
  
{{cquote|
+
The source code of Kawoosh's RubberWorm31 0.0.1.17, RubberWorm 0.7 (a version compatible with the old 3.6.28.0 update), and of the never going to be 1.0 were given to Deadcode.
rubberworm 0.8 will be able to apply missions settings (such as events sequences different armory for each team worms' initialization data and maybe even cpu players) on netplay. the bad news is that I haven't implemented anything as of now :P|Pisto, Team17 forum}}
+
  
A future version will also make it possible for the host to determine what versions (if any) other players have.
+
RubberWorm is now part of the base game as of [[Worms_Armageddon_ReadMe_(English)/v3.8_Update|W:A version 3.8]].
  
{{todo
+
== See also ==
| Update source code download link in infobox
+
* [[Schemes#RubberWorm_schemes|RubberWorm schemes]]
| Add how-to's for gravity modifications to feature list from RW's readme (may need clarification)
+
* [[Project X]]
| Add how-to's for the crate settings to feature list
+
 
}}
+
== External links ==
 +
* [http://forum.team17.com/showthread.php?t=42745 RubberWorm3x discussion thread]
 +
* [http://forum.team17.com/showthread.php?t=36016 RubberWorm discussion thread]
 +
* [http://forum.team17.com/showthread.php?t=39403 RubberWorm 1.0 preview]

Latest revision as of 11:49, 12 May 2024

(Up to Software, WormKit)
This WormKit module is not compatible with the latest W:A update (3.8.1).

Moreover, this module has become obsolete, as several or all of its features are included in the latest update.

icon RubberWorm
Developer: Pisto, Kawoosh
Latest version: RubberWorm3x (3.7.2.1):
  • 0.0.1.17 / 15 August 2013

Original by Pisto (3.6.29.0):

  • 0.7.32 / 3 August 2008
Supported games: W:A
Supported W:A version: 3.7.2.1, 3.7.0.0, 3.6.31–28.0
Supported W:A editions: This item is compatible with the CD edition of W:A.  This item is compatible with the Steam edition of W:A.This item is not compatible with the GOG edition of W:A.
Language: C/C++
License: Partially open-source
Download: Download

RubberWorm (also known as wkRubberWorm or simply RW in worms terminology) was a module for WormKit that could modify parts of the Worms Armageddon physics to create Wormpot-like effects, and adapted some features of wkMagic to the 3.6.29.0, 3.6.30.0, 3.6.31.0, 3.7.0.0 and 3.7.2.1 versions. It was originally released by Pisto on 6 April 2008, and then ported by Kawoosh to the latest W:A update with several new features.

Starting with the version 3.8 of W:A, all of RubberWorm's features have been integrated into the base game as extended scheme options, which makes the module obsolete.

RubberWorm's effects are applied to the game when certain scheme settings are set to certain values. These settings are normally unused, such as crate probabilities for superweapons. As such, only an external scheme editor can create schemes that will enable RubberWorm effects, though RubberWorm does also provide a chat command interface allowing a host to enable RubberWorm effects in the lobby of a WormNET game. The scheme can then be extracted from the replay afterwards.

For a complete and safe online play, all players should have the same version of the RubberWorm dll file.

General Info

Installation and use

Like any WormKit module, it has to be placed in the W:A main folder (or you can use the installer), and you need to enable Loading of WormKit modules in the W:A's Advanced Settings. Changes to the game are applied only when any feature of RubberWorm is enabled.

Source code

Original wkRubberWorm is written in C, and a part of the source code, lacking addresses and structs (like wkMagic), is public for demonstrative purposes. RubberWorm3x by Kawoosh was done by reverse-engineering the original RubberWorm, rewritten in C++.

Kawoosh's version of RubberWorm

Since 3.6.30.0, Kawoosh had been updating RubberWorm with new features and support for newest W:A updates. It had all basic features of old RubberWorm, KaosMod, TrastulloPerAtrox and some of LaserFix and will not make desynchronizations when playing with an older WA+RubberWorm user*. The same concerns replays—you can safely view older RubberWorm replays (made before 3.6.30.0) using this version. Read more here[dead link].

*If none of the new features, listed here, are enabled. Some of them were also part of the old LaserFix module, and thus they are compatible. 3.6.29.0 version users cannot play against 3.7.0.0 online, but replays files are compatible with minor issues.

Features added by Kawoosh can be seen on the download page.

Features

Bouncing worms

The original purpose of RubberWorm. Every time a worm hits an object or the terrain (in any direction), it bounces off of it. If it's during a rope roll, it can continue roping, and it never takes fall damage or loses the turn. The feature is always off if the worm is flying for a jump.

The worms' "boing" sound can switched on/off typing in the in-game chat /boing (not in RubberWorm3x).

Worm bounciness (or technically, the coefficient of restitution) is determined by the quotient of the value for the Armageddon crate probability divided by 255. For example, if the value is set to 0, the coefficient of restitution is 0, resulting in no bounce. If 255, the coefficient is 1, resulting in a perfectly elastic collision (the worm bounces with the same speed with which it hit the object or terrain).

Gravity modifications

Gravity can be made stronger or weaker, eliminated or even reversed. When reversed, a worm can stand on its head and shoot, but walking is obviously buggy. Also, should an object encounter no obstacle and fall into the sky, it will be sent to water when it reaches a certain height, otherwise it would block the game indefinitely.

Activated by the crate probability of the Mail Strike, if the high bit (eighth bit) is clear. The other bits control the strength of gravity, from −63 to +63 in one's complement format (the seventh bit is the sign bit); a value of 0 or 12 results in default gravity. The value is one's complement in order to make it possible to set zero gravity; to do this, you make the gravity "negative zero" (which is −1 in two's complement), ie 0x7F

Central gravity (black hole mode)

Gravity points towards the center of the map, or away from it (anti-gravity). These modes can either be proportional, where gravity is stronger near the center of the map, or constant, where gravity is the same strength for all locations.

In black hole mode, the object may either start a steady orbit or fall in the middle of the map and never stop flying: to avoid the first case objects that don't explode after some seconds (like worms, mines, crates and barrels) have a very small air viscosity value (see below); for the second case, objects nearer than 15 pixel to the center are sent to water.

Anti-gravity has a similar safeguard to reversed gravity (see above).

The strength of the gravity can be adjusted.

Activated by the crate probability of the Mail Strike. The high bit (eighth bit) enables black hole mode; the seventh bit enables proportional mode; the other bits control the strength of the black hole's gravity, from −32 to +31 in two's complement format (the sixth bit is the sign bit).

Air viscosity

Objects flying through the air lose speed up to a steady velocity, determined by gravity and wind (imagine throwing a rock in the water). Some objects, such as crates, graves, barrels, parachuting worms, and Mail Strike letters, will not experience this effect. It is adjustable: a value of 63 makes the air pasty as water.

Activated by the crate probability of the Concrete Donkey. A higher value produces a stronger effect. If the value is odd, the effect will apply to worms as well as objects.

Wind influence

Like air viscosity, it can be applied to only objects or worms too, but never to those objects (like bazooka) that are already influenced by wind or crates, graves, barrels. How much the wind moves the objects is adjustable.

Activated by the crate probability of the Suicide Bomber. A higher value produces a stronger effect, with the highest value (255) corresponding to the wind susceptibility of the Bazooka. If the value is odd, the effect will apply to worms as well as objects.

Anti-worm sink

If activated, a worm that hits the water is prevented from drowning and instead teleported to the last location where it has been motionless. The turn does not end. If the teleport results in the worm falling and hitting water again (for example, if the terrain has since been destroyed by a weapon), it drowns normally.

This feature is activated by a non-zero value for the crate probability of the French Sheep Strike.

Crate finder

Arrows point to crates, as they do in certain missions. This feature can give a player an advantage if other players do not have RubberWorm, so a chat message is used to alert other players to its use.

Type /arrows in the in-game chat to activate this.

Friction modifications

Currently, the velocity of a worm is slowed by 4% each frame that a worm slides along the terrain. This is given by multiplying velocity by F*0.01, where the default F value is 96. A lower value results in a higher degree of friction, with F=0 reducing velocity to zero immediately (infinite friction). Values between 96 and 100 give slippier terrains, while a value of 100 results in no friction. Values above 100 will result in the worm's velocity actually increasing as it slides.

The friction value is stored in the crate probability of the Salvation Army.


Shot doesn't end turn, Loss of control doesn't end turn, Fire doesn't pause timer, Improved rope, Continuous crate shower

To edit these options, start with a value of zero and add the corresponding number for each option you want to enable (listed below). Then set the crate probability of the Mole Squadron to the resulting sum.

Shot doesn't end turn

Firing a weapon doesn't end the player's turn. There's no retreat time and you can't control any weapon (such as Sheep or Supersheep) when turn time runs out.

Controlled by the first bit of the crate probability of Mole Squadron (add 1 to enable).

Loss of control doesn't end turn

When activated, control of the active worm will not be lost in any circumstances (fall from a great height, weapon explosion, etc) except death.

Controlled by the second bit of the crate probability of Mole Squadron (add 2 to enable).

Fire doesn't pause timer

The timer doesn't pause while firing any weapon. Useful with Shot doesn't turn, because without it one could extend his turn time for a very long time using drill or blow torch, for example.

Controlled by the third bit of the crate probability of Mole Squadron (add 4 to enable).

Improved rope

Changes the rope physics to simulate Worms 2 (higher accelleration, 162 degrees of shooting)

Controlled by the fourth bit of the crate probability of Mole Squadron (add 8 to enable).

Continuous crate shower

Normally, the game checks between turns the crate probability settings, and determines if and which crate must be spawned. With this feature, you can force the game to do this job every 5 seconds, also during turns. If you want a crate shower like Worms World Party, use SchemeEddy to check that the probability of no crate falling per turn is 0%. Keep in mind that the WWP crate shower spawns a completely random crate, that is it doesn't check the probability of each single weapon (that's why you can grab even Surrender).

Controlled by the fifth bit of the crate probability of Mole Squadron (add 16 to enable).


Version override

There are many engine version that come with the last update, and some of them may be interesting for their different behaviour. You shouldn't emulate the earliest versions of the 3.x, as they may lead to crashes (like, for not supporting the new scheme format, colored/big maps).
Version is set by the crate probability of Select Worm.

For version numbers, see WA versions list.

Crate rate variability

Controls the number of crates that appear per turn. When a value of Crate Rate exists, the Crate Count automatically will be turned on.

Set by the crate probability of the Indian Nuclear Test. The value 1 only will turn on the Crate Count

Crate limit variability

Controls the number of crates that can exist on the map at any one time (five at default)

Set by the crate probability of the Magic Bullet.

Chat command interface

These commands can be used in the host/join lobby. Omitting the parameter either activates the feature with a default value, or sets it off.

Command Effect
/help Displays list of commands in the chat window.
/show Displays a list of all enabled features to all players.
/showme Displays a dialogue box with all enabled features to the host only.
/clear Disables all features.
/sdet or /multishot Enables the shot doesn't end turn feature.
/ldet or /stoicworm Enables the loss of control doesn't end turn feature.
/fdpt or /nopause Enables the timer doesn't pause while firing feature.
/ir or /rope+ Enables the improved rope feature.
/rubber### [0–255] Enables the bouncing worms feature.

0 .............. no bounce
255 ............ fully elastic bounce

/version### [1–255] Enables the arbitrary version override feature.
/version or /fr or /ts3 Enables the teststuff3 feature.
/antisink Enables the antisink feature.
/visc### [0–255] Enables the air viscosity feature.

odd number ..... affects worms too

/wind### [0–255] Enables the wind response feature.

1 to 255 ....... low sensitivity to wind
255 ............ same sensitivity to wind as Bazooka
odd number ..... affects worms too

/jetpack### [1–255] Sets value of jetpack fuel.

no value ............ infinite fuel

/friction### [1–100] Sets terrain friction.

1 to 95 ........ high friction
96 ............. default friction
97 to 99 ....... low friction
100 ............ no friction
more than 100 .. anti-friction

/glue Alias for friction1
/ice Alias for friction99
/gravity### [−64 to 63] Sets gravity strength.

-64 ............ reversed gravity, strength 5.3x
-13 ............ reversed gravity, strength 1x
-1 ............. zero gravity
0 .............. default gravity
1 to 11 ........ low gravity
12 ............. default gravity
13 to 63 ....... high gravity
63 ............. high gravity, strength 5.3x

/pbh### [−32 to 31] Proportional black hole (variable is gravitational strength)
/cbh### [−32 to 31] Constant black hole (variable is gravitational strength)
/defg Disables all gravity modification features.
/cratelimit### [1–255] Sets maximum number of co-existing crates.
/craterate### [1–255] Sets number of crates spawned per turn and enables the crate counter.
/cratecount Alias for /craterate1 (just enables the crate counter).
/crateshower Enables the continuous crate shower feature.


Anti-aliased bounces

On 26th August 2009 a test build of RubberWorm 1.0 was released. The reason for sharing it is to show some of the new features, mainly anti-aliased bouncing. It allows to emulate the real behaviour of an object colliding with a slope, a missing feature of the Worms Armageddon default engine.

Future plans

Pisto gave up coding RubberWorm, though version 1.0 had been developed inconstantly for over a year. He lost interest in Worms, but also in programming in general.

The source code of Kawoosh's RubberWorm31 0.0.1.17, RubberWorm 0.7 (a version compatible with the old 3.6.28.0 update), and of the never going to be 1.0 were given to Deadcode.

RubberWorm is now part of the base game as of W:A version 3.8.

See also

External links

Personal tools