Ok, I will explain why you'd ever want to save large amount values when there are hundreds of integer variables(unit's death counter). Most of RPG map has got only one main character. The system saves only one character's stats such as level of character, how many items he carries and so on.. You can't save two character's stats in one variable. If you want to save two character's stats then you have to use two different unit's death counter.
Now what if you want to make some map that is based on Squad-Action like Fallout Tactics? If one character has 30 values to store then the values you have to save will multiply as you increase the size of squad. For example, if there are 6 memebers in a squad then you need to save 180 values. Not only that, if 6 players are going to play then there should be 180 X 6 values in total! That's outrageous amount.
So how can we do it?
We first need to know what variables can be accessed. Ok, we know Starcraft stores unit's HP, shield amount, and other values. But these values can't be set since EUD triggers got disabled. Then what about unit's position? Unit's position can be gained without using EUD triggers, and it has two parameters, X coordinate and y coordinate. So we get one more variable for FREE!
If we want to store 10 boolean values then we would use 1 unit per 1 boolean value, so that we can represent 1 or 0 by unit's existance.
How about number between 0 to 9? In order to save value we can either use different unit to represent different value or we can make space sized 1x10 and put one unit on specific position to represent different value.
What about 0 ~ 99?
We could use same method as storing value between 0 to 9. But this time we have to make two spaces to save different position in number.
We can store first position in number to space1 and second position in number to space2.
What about 0 ~ 999?
Exactly same pattern as saving number between 0 ~ 99. Have 3 spaces and each space saves different position in number.
What about 0 ~ 9999999?
Whoops, it seems we need lots of units to save each position in number.
Following this pattern isn't a good idea. So we'd have 2 dimension rather than having one dimension.
(note: X coordinate and Y coordinate is subjective to position of space. They MAY NOT represent real coordinate in the map.)
We can get x coordinate of unit and y coordinate of unit and x coordinate would save first position in number and y coordinate would save second position in number. Space size would be 10 X 10.
But, since space size if pretty small we can only store 0 ~ 99. What if there is much bigger number than 99? Something like 999999? If we increase the size of space we have wider range of number. So, for example, if the size of space becomes 100 X 100 then we can save number between 0 ~ 9999. Eh? But this would consume too much space!.
You'd have heard about heximal number. It has 16 based digits. I don't how this method could be related to heximal, but it gave me an idea anyway. We divide the space by two and use 2 units. See what happens if we do so. We have same space as before, 100 X 100. But this time since we divided it by two, we have 2 spaces sized 50 X 100. How many possible values can two of 50 X 100 spaces make?
Uh, I need a calculator! 50 X 100 X 50 X 100. Is it? Tell me if I'm wrong.
By using extra one unit, we have increased the range of number to enormous number!
So finally what you need to know is what happens in real system.
(note: This is only simplied version.)
Request (Save 150 at address 00001)
Move the location to specified address.
Convert the 10 digit based number to 50 digits based number.
Put the unit in this address.
DONE!!
Request (Load the variable from address 00001)
Move the location to specified address.
Evaluate the X coordinate and Y coordinate of unit.
Convert the value to 10 digits based number.
DONE!!
By the way, you wouldn't be able to understand this system if you haven't understood the concept of moving location to anywhere you want.
If you have better idea then please let me know because this system consumes 1800 units to store 30 X 6 X 5 variables!
Edit: miscalculation.