The spell works well, but its not completely MUI, actually the first half ( creating the dummy units at castloc offset -- facing -- degrees ) is MUI, but the second isnt ( both instances ( even if casted some time apart ) finish in the same time ) .
[TRIGGER=text]SF
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Spell of Fire
Actions
Set SF_caster = (Triggering unit)
Set SF_counter = 30
Hashtable - Save Handle OfSF_caster as 0 of (Key (Triggering unit)) in SF_hash
Hashtable - Save SF_counter as 1 of (Key (Triggering unit)) in SF_hash
Hashtable - Save Handle OfSF_Pgroup as 3 of (Key (Triggering unit)) in SF_hash
Animation - Play SF_caster's Spell Channel animation
For each (Integer A) from 1 to 4, do (Actions)
Loop - Actions
Set SF_PLoc = ((Position of SF_caster) offset by 600.00 towards (360.00 - ((Real((Integer A))) x 90.00)) degrees)
Unit - Create 1 Burning Energy (Level 3) for (Owner of SF_caster) at SF_PLoc facing (Position of SF_caster)
Set SF_Pillar[(Integer A)] = (Last created unit)
Unit - Add a 29.00 second Generic expiration timer to SF_Pillar[(Integer A)]
Unit Group - Add SF_Pillar[(Integer A)] to SF_Pgroup
Unit Group - Add SF_caster to SF_castergroup
Trigger - Turn on SFLoop <gen>[/TRIGGER]
[TRIGGER=text]SFLoop
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in SF_castergroup and do (Actions)
Loop - Actions
Set SF_counter = (Load 1 of (Key (Picked unit)) from SF_hash)
Set SF_Pgroup = (Load 3 of (Key (Picked unit)) in SF_hash)
Unit Group - Pick every unit in SF_Pgroup and do (Actions)
Loop - Actions
Unit - Order (Picked unit) to Human Blood Mage - Flame Strike ((Position of (Picked unit)) offset by (Random real number between 100.00 and 300.00) towards (Random angle) degrees)
Hashtable - Save (SF_counter - 1) as 1 of (Key (Picked unit)) in SF_hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SF_counter Equal to 0
Then - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit)) in SF_hash
Unit Group - Remove SF_caster from SF_castergroup
Trigger - Turn off (This trigger)
Else - Actions[/TRIGGER]
[TRIGGER=text]SFDisable
Events
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Spell of Fire
Actions
Set SF_caster = (Triggering unit)
Set SF_Pgroup = (Load 3 of (Key (Triggering unit)) in SF_hash)
Unit Group - Pick every unit in SF_Pgroup and do (Actions)
Loop - Actions
Unit - Remove (Picked unit) from the game
Unit Group - Remove SF_caster from SF_castergroup
Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in SF_hash
Trigger - Turn off SFLoop <gen>[/TRIGGER]
[TRIGGER=text]SF
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Spell of Fire
Actions
Set SF_caster = (Triggering unit)
Set SF_counter = 30
Hashtable - Save Handle OfSF_caster as 0 of (Key (Triggering unit)) in SF_hash
Hashtable - Save SF_counter as 1 of (Key (Triggering unit)) in SF_hash
Hashtable - Save Handle OfSF_Pgroup as 3 of (Key (Triggering unit)) in SF_hash
Animation - Play SF_caster's Spell Channel animation
For each (Integer A) from 1 to 4, do (Actions)
Loop - Actions
Set SF_PLoc = ((Position of SF_caster) offset by 600.00 towards (360.00 - ((Real((Integer A))) x 90.00)) degrees)
Unit - Create 1 Burning Energy (Level 3) for (Owner of SF_caster) at SF_PLoc facing (Position of SF_caster)
Set SF_Pillar[(Integer A)] = (Last created unit)
Unit - Add a 29.00 second Generic expiration timer to SF_Pillar[(Integer A)]
Unit Group - Add SF_Pillar[(Integer A)] to SF_Pgroup
Unit Group - Add SF_caster to SF_castergroup
Trigger - Turn on SFLoop <gen>[/TRIGGER]
[TRIGGER=text]SFLoop
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in SF_castergroup and do (Actions)
Loop - Actions
Set SF_counter = (Load 1 of (Key (Picked unit)) from SF_hash)
Set SF_Pgroup = (Load 3 of (Key (Picked unit)) in SF_hash)
Unit Group - Pick every unit in SF_Pgroup and do (Actions)
Loop - Actions
Unit - Order (Picked unit) to Human Blood Mage - Flame Strike ((Position of (Picked unit)) offset by (Random real number between 100.00 and 300.00) towards (Random angle) degrees)
Hashtable - Save (SF_counter - 1) as 1 of (Key (Picked unit)) in SF_hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SF_counter Equal to 0
Then - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit)) in SF_hash
Unit Group - Remove SF_caster from SF_castergroup
Trigger - Turn off (This trigger)
Else - Actions[/TRIGGER]
[TRIGGER=text]SFDisable
Events
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Spell of Fire
Actions
Set SF_caster = (Triggering unit)
Set SF_Pgroup = (Load 3 of (Key (Triggering unit)) in SF_hash)
Unit Group - Pick every unit in SF_Pgroup and do (Actions)
Loop - Actions
Unit - Remove (Picked unit) from the game
Unit Group - Remove SF_caster from SF_castergroup
Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in SF_hash
Trigger - Turn off SFLoop <gen>[/TRIGGER]