Hashtable

Events


Time - Elapsed game time is 0.01 seconds

Conditions

Actions


Hashtable - Create a hashtable


Set Firetable = (Last created hashtable)


Set ExplodeRange = 50.00


Set SpawnRange = 53.00
Split Fireball Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to Split Fireball

Actions


Trigger - Turn on Split Fireball Move <gen>


Set FirePoint = (Position of (Triggering unit))


Set FireMovePoint = (Target point of ability being cast)


Unit - Create 1 Fireball for (Owner of (Triggering unit)) at FirePoint facing (Angle from FirePoint to FireMovePoint) degrees


Unit - Set level of Fireball Death for (Last created unit) to (Level of Split Fireball for (Triggering unit))


Hashtable - Save (Level of Split Fireball for (Triggering unit)) as (Key FireHits) of (Key (Last created unit)) in Firetable


Hashtable - Save ((Real((Level of Split Fireball for (Triggering unit)))) x 5.00) as (Key FireSpeed) of (Key (Last created unit)) in Firetable


Unit - Add a ((Real((Level of Split Fireball for (Triggering unit)))) x 2.00) second Generic expiration timer to (Last created unit)


Hashtable - Save (Angle from FirePoint to FireMovePoint) as (Key FireFacing) of (Key (Last created unit)) in Firetable


Unit Group - Add (Last created unit) to Fireballs


Custom script: call RemoveLocation ( udg_FirePoint )


Custom script: call RemoveLocation ( udg_FireMovePoint )
Split Fireball Move

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


Unit Group - Pick every unit in Fireballs and do (Actions)



Loop - Actions




Set FirePoint = (Position of (Picked unit))




Set FireMovePoint = (FirePoint offset by (Load (Key FireSpeed) of (Key (Picked unit)) from Firetable) towards (Load (Key FireFacing) of (Key (Picked unit)) from Firetable) degrees)




Unit - Move (Picked unit) instantly to FireMovePoint




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






(Terrain pathing at FireMovePoint of type Walkability is off) Equal to True





Then - Actions






Unit - Kill (Picked unit)






Hashtable - Clear all child hashtables of child (Key (Picked unit)) in Firetable





Else - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






(Number of units in (Units within ExplodeRange of FireMovePoint matching (((Owner of (Matching unit)) Not equal to (Owner of (Picked unit))) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is A structure) Equal to False))))) Greater than 0





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








(Load (Key FireHits) of (Key (Picked unit)) from Firetable) Greater than 0







Then - Actions








Unit - Create 1 Fireball for (Owner of (Picked unit)) at (FireMovePoint offset by SpawnRange towards ((Load (Key FireFacing) of (Key (Picked unit)) from Firetable) + 90.00) degrees) facing ((Load (Key FireFacing) of (Key (Picked unit)) from Firetable) + 90.00) degrees








Hashtable - Save ((Load (Key FireFacing) of (Key (Picked unit)) from Firetable) + 90.00) as (Key FireFacing) of (Key (Last created unit)) in Firetable








Hashtable - Save (Load (Key FireSpeed) of (Key (Picked unit)) from Firetable) as (Key FireSpeed) of (Key (Last created unit)) in Firetable








Hashtable - Save ((Load (Key FireHits) of (Key (Picked unit)) from Firetable) - 1) as (Key FireHits) of (Key (Last created unit)) in Firetable








Unit - Set level of Fireball Death for (Last created unit) to (Level of Fireball Death for (Picked unit))








Unit - Add a 3.00 second Generic expiration timer to (Last created unit)








Unit Group - Add (Last created unit) to Fireballs








Unit - Create 1 Fireball for (Owner of (Picked unit)) at (FireMovePoint offset by SpawnRange towards ((Load (Key FireFacing) of (Key (Picked unit)) from Firetable) - 90.00) degrees) facing ((Load (Key FireFacing) of (Key (Picked unit)) from Firetable) - 90.00) degrees








Hashtable - Save ((Load (Key FireFacing) of (Key (Picked unit)) from Firetable) - 90.00) as (Key FireFacing) of (Key (Last created unit)) in Firetable








Hashtable - Save (Load (Key FireSpeed) of (Key (Picked unit)) from Firetable) as (Key FireSpeed) of (Key (Last created unit)) in Firetable








Hashtable - Save ((Load (Key FireHits) of (Key (Picked unit)) from Firetable) - 1) as (Key FireHits) of (Key (Last created unit)) in Firetable








Unit - Set level of Fireball Death for (Last created unit) to (Level of Fireball Death for (Picked unit))








Unit - Add a 3.00 second Generic expiration timer to (Last created unit)








Unit Group - Add (Last created unit) to Fireballs








Hashtable - Clear all child hashtables of child (Key (Picked unit)) in Firetable








Unit - Kill (Picked unit)







Else - Actions








Hashtable - Clear all child hashtables of child (Key (Picked unit)) in Firetable








Unit - Kill (Picked unit)





Else - Actions




Custom script: call RemoveLocation ( udg_FirePoint )




Custom script: call RemoveLocation ( udg_FireMovePoint )
Fireball Death

Events


Unit - A unit Dies

Conditions


(Unit-type of (Dying unit)) Equal to Fireball

Actions


Unit Group - Remove (Dying unit) from Fireballs


Hashtable - Clear all child hashtables of child (Key (Picked unit)) in Firetable


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




(Number of units in Fireballs) Equal to 0



Then - Actions




Trigger - Turn off Split Fireball Move <gen>



Else - Actions