| 02-17-2005, 02:10 AM | #1 |
Bonus Mod claims that its ability set is the bare minimal required to achieve the range requested it be [0,2^n) or [-2^(n-1),2^(n-1)) Since Abilities can not be stacked you are limited to a boolean (0 or 1) multiple. The abilities themselves are themselves viewed as booleans on the order of 2^i where i is the index of the ability (1..N) Therefore, the linear combination of these booleans you can achieve any number in the range of 2^N. If the abilities were able to stack then it would not be required at all and you could just avoid using bonusmod completely and just keep adding one ability a bajillion times or what not. While it's obvious to anyone who knows how integers are done in C languages lets just go through an empirical proof. Suppose we want to create a range of 32 numbers. Using the identity matrix I [sub]5[/sub] we can view it as a set of 5 base vectors b[sub]0[/sub] through b[sub]4[/sub] Code:
| 1 0 0 0 0 | | 0 1 0 0 0 | | 0 0 1 0 0 | | 0 0 0 1 0 | | 0 0 0 0 1 | = [ 1 0 0 0 0 ] [ 0 1 0 0 0 ] [ 0 0 1 0 0 ] [ 0 0 0 1 0 ] [ 0 0 0 0 1 ] In pure abstraction we can extrapolate that we have up to 2^N possible with N abilities. Now we are limited though because War3 integer support probably will not handle values that are equal to or larger than 2^31 well. And you probably shouldn't really need such a dumbly large range of values. DBmod functions on a simmilar principle but combines it all into one ability. |
