Hazardous Objects
From Worms Knowledge Base
The Hazardous Objects are the Mines and the Oil Drums (or Barrels).
Contents
Object Types
There can be four values : no objects, mines only, oil drums only, or both objects.
Object Count
This value only exists in W:A. You can set how many objects can appear, from 1 to 250. For having zero objects, simply set "no objects" as the type.
Not all values from 1 to 250 are represented. The following is a breakdown of possible values: 1-30 (1 by 1), 35-100 (5 by 5), 100-250 (10 by 10).
How is this setting saved in a WSC file?
Old schemes
In WWP and W:A v1 schemes (and probably W:A v2 old schemes), only the hazardous object types value is saved.
The values are: 0x00=No objects, 0x01=Mines, 0x02=Oil Drums, 0x05=Both.
New schemes
In new W:A schemes, there is the setting Object Count. So both Oject Types and Count values are stored in the same byte.
Object Types
You have to modulo (%) the value by 4.
- If you get 0, there are no objects.
- If you get 1, there are only mines.
- If you get 2, there are only oil drums.
- If you get 3, there are both objects.
For example :
You have the value "79".
79 % 4 = 3 (because 79 / 4 = 19 and the remainder is 3)
So there will be both mines and oil drums in the scheme.
Another example
You have the value "254".
254 % 4 = 2 (because 254 / 4 = 63 and the remainder is 2)
Object Count
First, you will have to re-use the modulo's result as M.
Then, considering V as the byte's value, do :
N = V - (8 + M)
Then finally, divide N by 4 for getting the array's entry (E).
E = N / 4.
Adjust the E value with your array. Meaning for example:
- You can make an array with a NULL entry as the entry number 0, and you keep the same values for the entries.
- You can make an array normally, meaning you will have to remove 1 to E.
- You can make an array with values from 35 to 250 only. If E < 31, E already equals to the value (if E = 5 for example, then C = 5 - considering C is the object count). If E >= 31, then remove 31 to get your array entry and select this entry (for example, 32 - 31 = 1, and 1 is the second value of the array, 1 => 40 so C = 40).
The array's values are, as we said above, every number from 1 to 30, then 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250.
For example
We have again the value "79". V = 79.
M = 3 as we saw above.
So:
N = 79 - (8 + 3)
N = 79 - 11
N = 68.
Then let's calculate E:
E = 68 / 4
E = 17.
Then let's see with the 3 methods we suggested for the array:
- Get the 17th entry of the array. Value of it is 17. C = 17.
- 17 - 1 = 16. Get the entry number 16 of the array. It contains 17. C = 17.
- 17 < 31, so simply C = E = 17.