Moderator
M
Moderator
09:20, 3rd Mar 2010
TriggerHappy:
Very cool and original spell. I didn't see any leaks.
TriggerHappy:
Very cool and original spell. I didn't see any leaks.
HS1

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to Hoist of the Seven Conundrums

Actions


-------- The first If/Then/Else will help us understand whether the spell has already been casted by this unit or not. --------


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



If - Conditions




((Key dummyunit) is stored as a Handle of (Key (Triggering unit)) in HS_Hashtable) Equal to False



Then - Actions




Set HS_Points[1] = (Target point of ability being cast)




Unit - Create 1 Dummy (Hoist of the Seven Conundrums) for (Owner of (Triggering unit)) at HS_Points[1] facing Default building facing degrees




Set HS_MaxHeight = 620.00




Animation - Change (Last created unit)'s animation speed to 0.00% of its original speed




Animation - Change (Last created unit)'s size to (200.00%, 200.00%, 200.00%) of its original size




Animation - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency




-------- We save the last created unit to the triggering and back forth, because we are going to use both of the values. --------




Hashtable - Save Handle Of(Last created unit) as (Key dummyunit) of (Key (Triggering unit)) in HS_Hashtable




Hashtable - Save Handle Of(Triggering unit) as (Key caster) of (Key (Last created unit)) in HS_Hashtable




-------- Defines the duration of the spell --------




Unit - Add a ((Real((Level of (Ability being cast) for (Triggering unit)))) x 20.00) second Generic expiration timer to (Last created unit)




Sound - Play DeathAndDecayLoop1 <gen> at 100.00% volume, attached to (Last created unit)




-------- We save the looping sound, so as to stop it, once the spell's duration is up. --------




Hashtable - Save Handle Of(Last played sound) as (Key sound) of (Key (Last created unit)) in HS_Hashtable




-------- We create the two locations, on which the dummy wisps (that create the actual rotating effect) will be spawned. --------




For each (Integer HS_TempLoop) from 1 to 2, do (Actions)





Loop - Actions






Set HS_Points[2] = (HS_Points[1] offset by 100.00 towards (360.00 / (Real(HS_TempLoop))) degrees)






-------- We save the X & Y of the locations in Hashtable, so that there are no leaks. --------






Hashtable - Save (X of HS_Points[2]) as (Key (x + (String(HS_TempLoop)))) of (Key (Last created unit)) in HS_Hashtable






Hashtable - Save (Y of HS_Points[2]) as (Key (y + (String(HS_TempLoop)))) of (Key (Last created unit)) in HS_Hashtable






Hashtable - Save HS_TempLoop as (Key int) of (Key (Last created unit)) in HS_Hashtable






Custom script: call RemoveLocation (udg_HS_Points[2])




-------- We create the ubersplat on the ground, an additional effect of the spell. --------




Ubersplat - Create ubersplat at HS_Points[1] of type Undead Uber Splat with color (80.00%, 0.00%, 80.00%) and 0.00% transparency (Enable paused state, Disable skipping birth time)




Ubersplat - Change (Last created ubersplat): Enable render always state




Hashtable - Save Handle Of(Last created ubersplat) as (Key splat) of (Key (Last created unit)) in HS_Hashtable




-------- The main dummy unit (of which we will obtain the rotating effect) is added in a Unit Group variable. --------




Unit Group - Add (Last created unit) to HS_DummyGroup




-------- We attach two Unit Groups on the Triggering unit, for further use. --------




-------- HS_TrappedGroup will be hosting the dummy wisps for the rotation effect. --------




Hashtable - Save Handle OfHS_TrappedGroup as (Key deadcounter) of (Key (Triggering unit)) in HS_Hashtable




-------- HS_NewGroup will be hosting the dummy wisps, and kill them on time, once the spell effect ends. --------




Hashtable - Save Handle OfHS_NewGroup as (Key newgroup) of (Key (Last created unit)) in HS_Hashtable




-------- A special effect will be added on the main dummy and afterwards gets attached to the unit. --------




Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\NightElf\Starfall\StarfallCaster.mdl




Hashtable - Save Handle Of(Last created special effect) as (Key mainsfx) of (Key (Last created unit)) in HS_Hashtable




Custom script: call RemoveLocation (udg_HS_Points[1])




-------- Turn on the HS2 <gen> for the creation of the dummy wisps. --------




Trigger - Turn on HS2 <gen>



Else - Actions




-------- In case the spell is already cast, a warning shall prevent a double cast of it. --------




Game - Display to (All players) the text: |c00ffcc00You have ...
HS2

Events


Time - Every 0.50 seconds of game time

Conditions

Actions


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



If - Conditions




(HS_DummyGroup is empty) Equal to True



Then - Actions




Trigger - Turn off (This trigger)



Else - Actions




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





Loop - Actions






-------- We use additional loop for restoring the point values (X&Y) from the hashtable. --------






For each (Integer HS_Loops[1]) from 1 to (Load (Key int) of (Key (Picked unit)) from HS_Hashtable), do (Actions)







Loop - Actions








Set HS_Points[3] = (Point((Load (Key (x + (String(HS_Loops[1])))) of (Key (Picked unit)) from HS_Hashtable), (Load (Key (y + (String(HS_Loops[1])))) of (Key (Picked unit)) from HS_Hashtable)))








Set HS_Points[4] = (Position of (Picked unit))








Unit - Create 1 Dummy (Hoist of the Seven Conundrums) for (Owner of (Picked unit)) at HS_Points[3] facing (360.00 / (Real(HS_Loops[1]))) degrees








Hashtable - Save Handle Of(Picked unit) as (Key mainroad) of (Key (Last created unit)) in HS_Hashtable








Hashtable - Save HS_Loops[1] as (Key int) of (Key (Last created unit)) in HS_Hashtable








Special Effect - Create a special effect attached to the origin of (Last created unit) using units\nightelf\Wisp\Wisp.mdl








Hashtable - Save Handle Of(Last created special effect) as (Key sfx) of (Key (Last created unit)) in HS_Hashtable








Unit - Change color of (Last created unit) to HS_Colors[(Random integer number between 1 and 7)]








Custom script: call RemoveLocation (udg_HS_Points[3])








Custom script: call RemoveLocation (udg_HS_Points[4])








-------- HS_ConunGroup is the rotation group. --------








Unit Group - Add (Last created unit) to HS_ConunGroup








-------- This group has been mentioned before; it will store the same Last created unit, so as to kill it afterwards and prevent its stay in the game. --------








Unit Group - Add (Last created unit) to (Load (Key newgroup) of (Key (Picked unit)) in HS_Hashtable)








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









If - Conditions










(HS3 <gen> is on) Equal to False









Then - Actions










-------- Turn on HS3 <gen> for the actual rotation effect to take place. --------










Trigger - Turn on HS3 <gen>









Else - Actions
HS3

Events


Time - Every 0.05 seconds of game time

Conditions

Actions


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



If - Conditions




(HS_ConunGroup is empty) Equal to True



Then - Actions




Trigger - Turn off (This trigger)



Else - Actions




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





Loop - Actions






-------- HS_Offset is a real value, that relates to how fast the Picked unit will move. --------






Set HS_Offset = (Load (Key off) of (Key (Picked unit)) from HS_Hashtable)






Hashtable - Save (HS_Offset + 3.00) as (Key off) of (Key (Picked unit)) in HS_Hashtable






Set HS_Points[5] = (Position of (Picked unit))






Set HS_Points[6] = (Position of (Load (Key mainroad) of (Key (Picked unit)) in HS_Hashtable))






-------- The actual rotation --------






For each (Integer HS_Loops[2]) from 1 to (Load (Key int) of (Key (Picked unit)) from HS_Hashtable), do (Actions)







Loop - Actions








Set HS_Points[7] = (HS_Points[6] offset by 100.00 towards ((Facing of (Picked unit)) + HS_Offset) degrees)








Unit - Move (Picked unit) instantly to HS_Points[7]








Custom script: call RemoveLocation (udg_HS_Points[7])






Custom script: call RemoveLocation (udg_HS_Points[5])






Custom script: call RemoveLocation (udg_HS_Points[6])






-------- The flying height change for the rotation effect --------






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







If - Conditions








(Current flying height of (Picked unit)) Less than or equal to 620.00







Then - Actions








-------- You can change the "3.00" to any number you want, it's how high the unit will get per .05 seconds. --------








Animation - Change (Picked unit) flying height to ((Current flying height of (Picked unit)) + 3.00) at 0.00







Else - Actions








Special Effect - Destroy (Load (Key sfx) of (Key (Picked unit)) in HS_Hashtable)








-------- I prefer Generic Expiration timer than Kill unit, but you can use any of them. --------








Unit - Add a 0.01 second Generic expiration timer to (Picked unit)








Unit Group - Remove (Picked unit) from HS_ConunGroup






Custom script: call RemoveLocation (udg_HS_Points[4])
HS4

Events


Time - Every 0.05 seconds of game time

Conditions

Actions


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



If - Conditions




(HS_DummyGroup is empty) Equal to True



Then - Actions




Trigger - Turn off (This trigger)



Else - Actions




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





Loop - Actions






Set HS_DummyUnit = (Picked unit)






Set HS_DummyUnitUnit = (Picked unit)






Set HS_Points[9] = (Position of (Picked unit))






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







If - Conditions








(HS_DummyUnitUnit is alive) Equal to True







Then - Actions








-------- The units that are killed by the caster of the spell will be slowly moved towards the Main dummy unit (the actual column you see in-game) --------








Unit Group - Pick every unit in (Load (Key deadcounter) of (Key (Load (Key caster) of (Key HS_DummyUnit) in HS_Hashtable)) in HS_Hashtable) and do (Actions)









Loop - Actions










Set HS_Points[10] = (Position of (Picked unit))










Set HS_Points[11] = (HS_Points[10] offset by 15.00 towards (Angle from HS_Points[10] to HS_Points[9]) degrees)










Special Effect - Create a special effect at HS_Points[11] using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl










Special Effect - Destroy (Last created special effect)










Unit - Move (Picked unit) instantly to HS_Points[11], facing 270.00 degrees










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











If - Conditions












(Distance between HS_Points[9] and HS_Points[10]) Less than or equal to 15.00











Then - Actions












Unit Group - Remove (Picked unit) from (Load (Key deadcounter) of (Key (Load (Key caster) of (Key HS_DummyUnit) in HS_Hashtable)) in HS_Hashtable)












-------- We now add them into a new group, because they will be slowly dragged in the mid-air. --------












Unit Group - Add (Picked unit) to HS_HeightGroup












-------- We save an initial "0.00" value, which will be used by the Picked unit in the HS5 <gen> trigger and it has to do with its transparency --------












Hashtable - Save 0.00 as (Key trans) of (Key (Picked unit)) in HS_Hashtable












-------- Since the Picked unit will be flying in the HS5 <gen> trigger, it will get the Crow Form ability, that enables flying. --------












Unit - Add Crow Form to (Picked unit)












Unit - Remove Crow Form from (Picked unit)












-------- HS5 <gen> is the trigger where the units, killed by the caster of this spell will slowly be dragged in the mid-air. --------












Trigger - Turn on HS5 <gen>











Else - Actions










Custom script: call RemoveLocation (udg_HS_Points[10])










Custom script: call RemoveLocation (udg_HS_Points[11])







Else - Actions






Custom script: call RemoveLocation (udg_HS_Points[9])
HS5

Events


Time - Every 0.08 seconds of game time

Conditions

Actions


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



If - Conditions




(HS_HeightGroup is empty) Equal to True



Then - Actions




Trigger - Turn off (This trigger)



Else - Actions




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





Loop - Actions






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







If - Conditions








(Current flying height of (Picked unit)) Less than or equal to 620.00







Then - Actions








Set HS_Transparency = (Load (Key trans) of (Key (Picked unit)) from HS_Hashtable)








Hashtable - Save (HS_Transparency + 2.00) as (Key trans) of (Key (Picked unit)) in HS_Hashtable








Animation - Change (Picked unit) flying height to ((Current flying height of (Picked unit)) + 10.00) at 0.00








Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with HS_Transparency% transparency







Else - Actions








Unit - Add a 0.01 second Generic expiration timer to (Picked unit)
HS6

Events


Unit - A unit Dies

Conditions

Actions


-------- This is a death-trigger, as I call it. Every death-related events we need to calculate and consider are held in this trigger. --------


-------- The first one checks if the dying unit is in HeightGroup, which means if the dying unit is a unit killed by the caster of the spell --------


-------- It takes place, after the unit has been sent in the mid-air and has vanished. --------


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



If - Conditions




((Triggering unit) is in HS_HeightGroup) Equal to True



Then - Actions




Set HS_Points[13] = (Position of (Triggering unit))




For each (Integer HS_Loops[3]) from 1 to 7, do (Actions)





Loop - Actions






Set HS_Points[14] = (HS_Points[13] offset by 180.00 towards ((Real(HS_Loops[3])) x 51.40) degrees)






Unit - Create 1 Dummy (Hoist of the Seven Conundrums) for (Owner of (Load (Key killer) of (Key (Triggering unit)) in HS_Hashtable)) at HS_Points[14] facing Default building facing degrees






Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl






Hashtable - Save Handle Of(Last created special effect) as (Key healsfx) of (Key (Last created unit)) in HS_Hashtable






Animation - Change (Last created unit) flying height to 620.00 at 0.00






Animation - Change (Last created unit)'s size to (200.00%, 200.00%, 200.00%) of its original size






Unit Group - Add (Last created unit) to HS_HealGroup






Set HS_Points[15] = (HS_Points[13] offset by 700.00 towards ((Real(HS_Loops[3])) x 51.40) degrees)






Hashtable - Save (Distance between HS_Points[14] and HS_Points[15]) as (Key dist) of (Key (Last created unit)) in HS_Hashtable






Hashtable - Save (X of HS_Points[15]) as (Key (x + (String(HS_Loops[3])))) of (Key (Last created unit)) in HS_Hashtable






Hashtable - Save (Y of HS_Points[15]) as (Key (y + (String(HS_Loops[3])))) of (Key (Last created unit)) in HS_Hashtable






Hashtable - Save ((Load (Key dist) of (Key (Last created unit)) from HS_Hashtable) / (Real((Integer(2.50))))) as (Key newd) of (Key (Last created unit)) in HS_Hashtable






Hashtable - Save 0.00 as (Key par) of (Key (Last created unit)) in HS_Hashtable






Custom script: call RemoveLocation (udg_HS_Points[14])






Custom script: call RemoveLocation (udg_HS_Points[15])




Custom script: call RemoveLocation (udg_HS_Points[13])




Unit Group - Remove (Triggering unit) from HS_HeightGroup




Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in HS_Hashtable




Unit - Remove (Triggering unit) from the game




Trigger - Turn on HS8 <gen>



Else - Actions




-------- If it's not a unit, killed by the caster of this spell, it checks whether it's a dummy-type unit --------




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





If - Conditions






(Unit-type of (Triggering unit)) Equal to Dummy (Hoist of the Seven Conundrums)





Then - Actions






-------- It initially tries to check if it's the main dummy unit, the one that holds every effect of the spell. --------






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







If - Conditions








((Key caster) is stored as a Handle of (Key (Triggering unit)) in HS_Hashtable) Equal to True







Then - Actions








Set HS_Points[12] = (Position of (Triggering unit))








Hashtable - Save Handle OfHS_DetectTimer as (Key dtimer) of (Key (Triggering unit)) in HS_Hashtable








Countdown Timer - Start (Load (Key dtimer) of (Key (Triggering unit)) in HS_Hashtable) as a One-shot timer that will expire in 2.00 seconds








Hashtable - Save Handle Of(Triggering unit) as (Key unit1) of (Key (Last started timer)) in HS_Hashtable








Special Effect - Create a special effect at HS_Points[12] using Objects\Spawnmodels\Undead\UDeathSmall\UDeathSmall.mdl








Special Effect - Destroy (Last created special effect)








Ubersplat - Destroy (Load (Key splat) of (Key (Triggering unit)) in HS_Hashtable)








Unit Group - Remove (Triggering unit) from HS_DummyGroup








Sound - Stop (Load (Key sound) of (Key (Triggering unit)) in HS_Hashtable) Immediately








Custom script: call RemoveLocation (udg_HS_Points[12])







Else - Actions








-------- If it's not the Main dummy unit, it checks whether it's the final dummy that is destinated to heal the units nearby. --------








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









If - Conditions










((Key healsfx) is stored as a Handle of (Key (Triggering unit)) in HS_Hashtable) Equal to True









Then - Actions










Special Effect - Destroy (Load (Key healsfx) of (Key (Triggering unit)) in HS_Hashtable)










Set HS_Points[19] = (Position of (Triggering unit))










Set HS_ActualHealGroup = (Units within 150.00 of HS_Points[19] matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) belongs to an ally of (Owner of (Triggering unit))) Equal to True)) and (((Matching unit) is alive) Equal to True)))










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











Loop - Actions












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













If - Conditions














(Life of (Picked unit)) Not equal to (Max life of (Picked unit))













Then - Actions














Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + 20.00)














Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Items\AIlm\AIlmTarget.mdl














Special Effect - Destroy (Last created special effect)













Else - Actions












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













If - Conditions














(Mana of (Picked unit)) Not equal to (Max mana of (Picked unit))













Then - Actions














Unit - Set mana of (Picked unit) to ((Mana of (Picked unit)) + 15.00)














Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Items\AIma\AImaTarget.mdl














Special Effect - Destroy (Last created special effect)













Else - Actions










Custom script: call DestroyGroup (udg_HS_ActualHealGroup)










Custom script: call RemoveLocation (udg_HS_Points[19])










Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in HS_Hashtable










Unit - Remove (Triggering unit) from the game









Else - Actions










-------- If nothing from the above is happening, but the dying unit is still a dummy-type (which means it's a rotating wisp), it gets its data removed. --------










Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in HS_Hashtable










Unit - Remove (Triggering unit) from the game





Else - Actions






-------- This will check whether the dying unit has been killed by the actual caster of the spell. --------






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







If - Conditions








((Key deadcounter) is stored as a Handle of (Key (Killing unit)) in HS_Hashtable) Equal to True








((Triggering unit) is A Hero) Equal to False







Then - Actions








-------- If yes, it will create the same unit-type of the dying unit, change its ownership to Neutral Passive to avoid aggression --------








-------- Given a locust ability, so that it can't be selected, gets the dying animation normally as the original dying unit --------








-------- and given a scale of 70% to actually "fit" in the main column of the wisps. --------








Set HS_Points[14] = (Position of (Triggering unit))








Unit - Create 1 (Unit-type of (Triggering unit)) for Neutral Passive at HS_Points[14] facing Default building facing degrees








Animation - Change (Last created unit)'s size to (70.00%, 70.00%, 70.00%) of its original size








Unit Group - Add (Last created unit) to (Load (Key deadcounter) of (Key (Killing unit)) in HS_Hashtable)








Custom script: call SetUnitAnimation (GetLastCreatedUnit(), "death")








Custom script: call UnitAddAbility (GetLastCreatedUnit(), 'Aloc')








Custom script: call RemoveLocation (udg_HS_Points[14])








-------- We save the killing unit, so as to pick the right owner for the healing effect (since the unit is created for Neutral Passive, --------








-------- the unit has no enemy, so saving the Killing unit will help us restore the owner we want) --------








Hashtable - Save Handle Of(Killing unit) as (Key killer) of (Key (Last created unit)) in HS_Hashtable








-------- HS4 <gen> controls the move of this pseudo-unit, that is slowly dragged in the wisps' column, to finally heal ally units of the caster's. --------








Trigger - Turn on HS4 <gen>








Unit - Remove (Triggering unit) from the game







Else - Actions
HS7

Events


Time - HS_DetectTimer expires

Conditions

Actions


-------- This timer detects the death of the Main dummy unit. If we didn't have it, the units that were dragged to the wisps' column would not disappear --------


-------- The timer is given a duration of 2 seconds, which relates to the Gameplay Constants "Death time" time. --------


Unit Group - Pick every unit in (Load (Key deadcounter) of (Key (Load (Key caster) of (Key (Load (Key unit1) of (Key (Expiring timer)) in HS_Hashtable)) in HS_Hashtable)) in HS_Hashtable) and do (Actions)



Loop - Actions




Unit - Add a 0.01 second Generic expiration timer to (Picked unit)




Unit Group - Remove (Picked unit) from (Load (Key deadcounter) of (Key (Load (Key caster) of (Key (Load (Key unit1) of (Key (Expiring timer)) in HS_Hashtable)) in HS_Hashtable)) in HS_Hashtable)


Unit Group - Pick every unit in (Load (Key newgroup) of (Key (Load (Key unit1) of (Key (Expiring timer)) in HS_Hashtable)) in HS_Hashtable) and do (Actions)



Loop - Actions




Unit - Add a 0.01 second Generic expiration timer to (Picked unit)


Special Effect - Destroy (Load (Key mainsfx) of (Key (Load (Key unit1) of (Key (Expiring timer)) in HS_Hashtable)) in HS_Hashtable)


Hashtable - Clear all child hashtables of child (Key (Load (Key caster) of (Key (Load (Key unit1) of (Key (Expiring timer)) in HS_Hashtable)) in HS_Hashtable)) in HS_Hashtable


Hashtable - Clear all child hashtables of child (Key (Load (Key unit1) of (Key (Expiring timer)) in HS_Hashtable)) in HS_Hashtable


Unit - Remove (Load (Key unit1) of (Key (Expiring timer)) in HS_Hashtable) from the game


Hashtable - Clear all child hashtables of child (Key (Expiring timer)) in HS_Hashtable
HS8

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


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



If - Conditions




(HS_HealGroup is empty) Equal to True



Then - Actions




Trigger - Turn off (This trigger)



Else - Actions




-------- This trigger will pick the dummy units, that are created when a dying unit, killed by the caster of the spell, are vanished in the mid-air. --------




-------- It makes them move forward and change their flying height to fit a parabola-shaped one. --------




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





Loop - Actions






Set HS_Points[16] = (Point((Load (Key (x + (String(HS_Loops[4])))) of (Key (Picked unit)) from HS_Hashtable), (Load (Key (y + (String(HS_Loops[4])))) of (Key (Picked unit)) from HS_Hashtable)))






Set HS_Points[17] = (Position of (Picked unit))






Set HS_Points[18] = (HS_Points[17] offset by 10.00 towards (Angle from HS_Points[16] to HS_Points[17]) degrees)






Hashtable - Save ((Load (Key par) of (Key (Picked unit)) from HS_Hashtable) + 10.00) as (Key par) of (Key (Picked unit)) in HS_Hashtable






Hashtable - Save ((((4.00 x (Load (Key newd) of (Key (Picked unit)) from HS_Hashtable)) / (Load (Key dist) of (Key (Picked unit)) from HS_Hashtable)) x ((Load (Key dist) of (Key (Picked unit)) from HS_Hashtable) - (Load (Key par) of (Key (Picked unit)) from HS_Hashtable))) x as (Key newheight) of (Key (Picked unit)) in HS_Hashtable






Animation - Change (Picked unit) flying height to (Load (Key newheight) of (Key (Picked unit)) from HS_Hashtable) at 0.00






Unit - Move (Picked unit) instantly to HS_Points[18]






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







If - Conditions








(Load (Key newheight) of (Key (Picked unit)) from HS_Hashtable) Less than or equal to -1.00







Then - Actions








Unit Group - Remove (Picked unit) from HS_HealGroup








Unit - Add a 0.01 second Generic expiration timer to (Picked unit)







Else - Actions






Custom script: call RemoveLocation (udg_HS_Points[16])






Custom script: call RemoveLocation (udg_HS_Points[17])






Custom script: call RemoveLocation (udg_HS_Points[18])