We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch
Yeah basically hyper triggers are one huge wait block. Even though they consist of only
3 * 63 wait(0)'s which would add up to 189 * 84ms = 15.875s
it takes like 6 hours (exactly (
x + 1)^
n *
ht)
With x = number of waits =
62, n = number of hypers =
3, ht = time until the next trigger check loop =
0.084s63 ^ 3 * 0.084s = 21004s = 5h 50m 4s
until all waits have been gone through.
So your hyper triggers are blocking each other *1), but since they serve no other function than to increase the trigger checking speed *2) there's no action you're missing / waiting for.
*1) They are not blocked completely, but they are calling each other in a huge cascade, so that even these wait(0)'s add up. Basically every wait is calling every other wait. Check
this tutorial for deeper understanding of hyper trigger theory.
Summary of how they work:
- Thou Shall not run thyself again untill thou is done (any trigger acts like this)
- Thou Shall cause the running of triggers above and bellow thee when thou is waited (why hyper triggers work)
- Thou Shall run the next waited trigger only after thou is done (limits the 2st rule) <-- reason for wait blocks
This is roughly what happens:
1st run:
- check all triggers (t)
- hit wait of 1. hyper trigger (ht)
- run all t's above the ht's again (rule 2)
- then hit the wait of 2. ht
- wait is is blocked, because another wait is still active (rule 3)
- same for 3. ht.
2nd run:
- after 1/8 game second has passed sc checks if any waits are done waiting. The first wait(0) is done, so the trigger is continued.
Now I'm not sure of what happens next but it's probably one of these 2:
- Either the 2. wait of the 1. ht is executeed - t's are all checked again and the 1. waits of the other 2 ht's are again blocked.
- Or before the t (1. ht) is allowed to continue the 1. blocked wait is processed and the waits of 1. ht and 3. ht are blocked again.
Whatever happens you should see that the more waits run, the more waits get blocked and the waits are always calling each other, adding up to the "blocked list" recursively.
*2) If you checked the link / read the collapse box you already realized that: Hyper triggers increase the trigger checking speed because whenever StarCraft hits a wait it is checking all other triggers and then waits the time specified until it continues the trigger. At which point it hits another wait which again causes the triggers to be checked.