My question is:
Can't there be arrays in a hashtable or two different integers for the same key handle?
I think you misunderstood the way hashtables work.
You don't "put an array" in the keys of the hashtable, they are just indices.
A hashtable is nothing else but a two dimensional array.
The parent is the first dimension, the child key the second dimension.
That's why I asked about those arrays and the integer you used.
Basicly, all you need is replace those arrays and the Counter variable by constant integers.
You could just use "0" for the counter variable and "1" to "4" for the timer values.
This way, you store the values for each unit like this:
table[Key of Unit][0] = counter
table[Key of Unit][1] = timer 1
table[Key of Unit][2] = timer 2
...
As the Key of a unit is a unique value that will only be assigned once at the same time, there is no way the values can actually collide.
However, you need to make sure you don't assign the childkeys based on the Key of Unit parent for other spells aswell.
Make sure that every spell uses different child keys.
So for example, if your first spell takes up the first 5 indices, make sure the second one starts from index 6, etc. - or just create another hashtable for it.
You can use constant integers defined on map init to make those indices configurable. Like for example:
"Spell_Heal_counter" = 0
"Spell_Heal_timer" = 1
...
"Spell_Buttkicker_counter" = 5
"Spell_Buttkicker_timer" = 6
...
etc.