Not totally true, but it helps.
The UnitIndexer assigns each unit on the map an index between 1 and 8190

That way, you could use the index for arrays ^_^
Arrays in Warcraft III have a maximum index of 8191 unfortunately :/
The index is stored via the custom value of a unit.
If you want a unit to have a value stored only for it:
Set MyValue[(Custom value of (Triggering unit))] = 1
You could use something like this in your timed spells
Oh and here's a tip:
Only use the event "A unit starts the effect of an ability" because "A unit begins casting an ability" can be exploited (If you press "S" fast enough, the spell will run but the cooldown won't change)