Basically, this discussion is about how the conditions Bring and Command detect units, as in many cases you have problems where a unit being created or removed is not immediately updated in the game, and so the two conditions may still detect it, or may not detect it, when it seems that logically they should.
Discussion solved, here's the description that DoA gave:
Quote from DiscipleofAdun
First thing to remember is that SC is old, and therefore doesn't have a large amount of memory to use. Both previous models use a lot more memory than needed. Here's what it actually does.
There is a single block of data set aside for searching for how many units are at a certain location. When the trigger cycle begins, this block of memory is marked as invalid. When SC comes across a trigger that requires a number of units, it determines if it needs to repopulate that block of data. SC treats the entire map different from a location. If the block was previously filled with the entire map data and the current condition also applies to the entire map, it skips refilling the block. With locations, it does the same thing, except it checks that the block has the same location.
Repopulating the block begins with copying the counts that SC keeps of all units on the map. If it is a location search, it narrows the data down to the units that are in the location.
There are several trigger actions that can invalidate the block. They are:
Kill Unit
Kill Unit at Location
Remove Unit
Remove Unit At Location
Move Location
Move Unit
Creating a unit does not tell SC that it needs to refresh the data. Therefore, if the next condition needs the 'same' type of data as the last one, it won't refresh.
There is a single block of data set aside for searching for how many units are at a certain location. When the trigger cycle begins, this block of memory is marked as invalid. When SC comes across a trigger that requires a number of units, it determines if it needs to repopulate that block of data. SC treats the entire map different from a location. If the block was previously filled with the entire map data and the current condition also applies to the entire map, it skips refilling the block. With locations, it does the same thing, except it checks that the block has the same location.
Repopulating the block begins with copying the counts that SC keeps of all units on the map. If it is a location search, it narrows the data down to the units that are in the location.
There are several trigger actions that can invalidate the block. They are:
Kill Unit
Kill Unit at Location
Remove Unit
Remove Unit At Location
Move Location
Move Unit
Creating a unit does not tell SC that it needs to refresh the data. Therefore, if the next condition needs the 'same' type of data as the last one, it won't refresh.
The topic was originally discussed in the first pages of this topic. Most of the need-to-know information is found above though.
Post has been edited 4 time(s), last time on May 1 2008, 10:06 pm by Falkoner.
None.