Hashtable

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


-------- This is one trigger, you Just Dont mess with. --------


-------- * --------


Hashtable - Create a hashtable


-------- * --------


Set Oblivion_Hashtable = (Last created hashtable)


-------- * --------


Countdown Timer - Start Intervals as a Repeating timer that will expire in 0.03 seconds
Init

Events


Unit - A unit Starts the effect of an ability

Conditions

Actions


-------- Set this condition to your spell --------


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



If - Conditions




(Ability being cast) Equal to Oblivion



Then - Actions




-------- * --------




Set Temp_Point = (Target point of ability being cast)




-------- * --------




Set Run_check = (Run_check + 1)




-------- * --------




Trigger - Turn on Loop <gen>




-------- Change this to your dummy --------




Unit - Create 1 Invisible Centre for (Owner of (Triggering unit)) at Temp_Point facing 0.00 degrees




-------- These values all do differant things --------




-------- * --------




Hashtable - Save (Level of Oblivion for (Triggering unit)) as 1 of (Key (Last created unit)) in Oblivion_Hashtable




-------- Knockback distance --------




Hashtable - Save ((Level of Oblivion for (Triggering unit)) x 55) as 2 of (Key (Last created unit)) in Oblivion_Hashtable




-------- Initial Damage --------




Hashtable - Save ((Level of Oblivion for (Triggering unit)) x 75) as 3 of (Key (Last created unit)) in Oblivion_Hashtable




-------- Damage on landing --------




Hashtable - Save ((Level of Oblivion for (Triggering unit)) x 50) as 4 of (Key (Last created unit)) in Oblivion_Hashtable




-------- * --------




Hashtable - Save 0 as 30 of (Key (Last created unit)) in Oblivion_Hashtable




-------- Sets the caster --------




Hashtable - Save Handle Of(Triggering unit) as 50 of (Key (Last created unit)) in Oblivion_Hashtable




-------- Set this to the duration of your spell --------




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




-------- Set this to your Sfx at the centre of the spell --------




Unit - Create 1 Centre SFX for Neutral Passive at Temp_Point facing 0.00 degrees




-------- Set this to the duration of your spell --------




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




-------- Set this to your spawning Sfx (the thing you see when the spell initiates) --------




Unit - Create 1 Spawn SFX for Neutral Passive at Temp_Point facing 0.00 degrees




-------- This just needs to be a short time --------




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




-------- Set this to the amount of 'points' of your circle --------




-------- The points being were the surrounding Sfx is created --------




Set Real = 0.00




For each (Integer Debug) from 1 to 15, do (Actions)





Loop - Actions






-------- To create a differant shape, you only need to change this to make it, for exmaple to create a cylindrical shape on all layers this should be the same --------






-------- For and hour glass, It should start hiegh, get smaller, then larger again. --------






-------- Experiment and see what shapes you can make --------






-------- Set this the distance you wish this layer to be away from you centre --------






-------- as this is the lowest layer it should have the lowest distance --------






Set Temp_Point_2 = (Temp_Point offset by 400.00 towards Real degrees)






-------- Change the sfx to your surrounding sfx dummy --------






Unit - Create 1 SemiCircle SFX for (Owner of (Triggering unit)) at Temp_Point_2 facing (Angle from Temp_Point_2 to Temp_Point) degrees






-------- Set this to the duration of your spell --------






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






-------- Set this layers fly height --------






-------- again as this is the lowest layer it should be the smallest --------






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






-------- Set this to 360/your points on your sphere --------






-------- I used 15 points so I did this --------






-------- 360/15 --------






Set Real = (Real + (360.00 / 15.00))






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_2)






-------- As standard the Fly height increase by 100 per layer --------






-------- And the distance from the centre decreases by 50 --------




Set Real = 0.00




For each (Integer Debug) from 1 to 15, do (Actions)





Loop - Actions






-------- To create a differant shape, you only need to change this to make it, for exmaple to create a cylindrical shape on all layers this should be the same --------






-------- For and hour glass, It should start hiegh, get smaller, then larger again. --------






-------- Experiment and see what shapes you can make --------






-------- Set this the distance you wish this layer to be away from you centre --------






-------- as this is the lowest layer it should have the lowest distance --------






Set Temp_Point_2 = (Temp_Point offset by 350.00 towards Real degrees)






-------- Change the sfx to your surrounding sfx dummy --------






Unit - Create 1 SemiCircle SFX for (Owner of (Triggering unit)) at Temp_Point_2 facing (Angle from Temp_Point_2 to Temp_Point) degrees






-------- Set this to the duration of your spell --------






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






-------- Set this layers fly height --------






-------- again as this is the lowest layer it should be the smallest --------






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






-------- Set this to 360/your points on your sphere --------






-------- I used 15 points so I did this --------






-------- 360/15 --------






Set Real = (Real + (360.00 / 15.00))






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_2)






-------- As standard the Fly height increase by 100 per layer --------






-------- And the distance from the centre by 50 --------




Set Real = 0.00




For each (Integer Debug) from 1 to 15, do (Actions)





Loop - Actions






-------- To create a differant shape, you only need to change this to make it, for exmaple to create a cylindrical shape on all layers this should be the same --------






-------- For and hour glass, It should start hiegh, get smaller, then larger again. --------






-------- Experiment and see what shapes you can make --------






-------- Set this the distance you wish this layer to be away from you centre --------






-------- as this is the lowest layer it should have the lowest distance --------






Set Temp_Point_2 = (Temp_Point offset by 300.00 towards Real degrees)






-------- Change the sfx to your surrounding sfx dummy --------






Unit - Create 1 SemiCircle SFX for (Owner of (Triggering unit)) at Temp_Point_2 facing (Angle from Temp_Point_2 to Temp_Point) degrees






-------- Set this to the duration of your spell --------






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






-------- Set this layers fly height --------






-------- again as this is the lowest layer it should be the smallest --------






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






-------- Set this to 360/your points on your sphere --------






-------- I used 15 points so I did this --------






-------- 360/15 --------






Set Real = (Real + (360.00 / 15.00))






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_2)






-------- As standard the Fly height increase by 100 per layer --------






-------- And the distance from the centre by 50 --------




Set Real = 0.00




For each (Integer Debug) from 1 to 15, do (Actions)





Loop - Actions






-------- To create a differant shape, you only need to change this to make it, for exmaple to create a cylindrical shape on all layers this should be the same --------






-------- For and hour glass, It should start hiegh, get smaller, then larger again. --------






-------- Experiment and see what shapes you can make --------






-------- Set this the distance you wish this layer to be away from you centre --------






-------- as this is the lowest layer it should have the lowest distance --------






Set Temp_Point_2 = (Temp_Point offset by 250.00 towards Real degrees)






-------- Change the sfx to your surrounding sfx dummy --------






Unit - Create 1 SemiCircle SFX for (Owner of (Triggering unit)) at Temp_Point_2 facing (Angle from Temp_Point_2 to Temp_Point) degrees






-------- Set this to the duration of your spell --------






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






-------- Set this layers fly height --------






-------- again as this is the lowest layer it should be the smallest --------






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






-------- Set this to 360/your points on your sphere --------






-------- I used 15 points so I did this --------






-------- 360/15 --------






Set Real = (Real + (360.00 / 15.00))






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_2)






-------- As standard the Fly height increase by 100 per layer --------






-------- And the distance from the centre by 50 --------




Set Real = 0.00




For each (Integer Debug) from 1 to 15, do (Actions)





Loop - Actions






-------- To create a differant shape, you only need to change this to make it, for exmaple to create a cylindrical shape on all layers this should be the same --------






-------- For and hour glass, It should start hiegh, get smaller, then larger again. --------






-------- Experiment and see what shapes you can make --------






-------- Set this the distance you wish this layer to be away from you centre --------






-------- as this is the lowest layer it should have the lowest distance --------






Set Temp_Point_2 = (Temp_Point offset by 200.00 towards Real degrees)






-------- Change the sfx to your surrounding sfx dummy --------






Unit - Create 1 SemiCircle SFX for (Owner of (Triggering unit)) at Temp_Point_2 facing (Angle from Temp_Point_2 to Temp_Point) degrees






-------- Set this to the duration of your spell --------






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






-------- Set this layers fly height --------






-------- again as this is the lowest layer it should be the smallest --------






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






-------- Set this to 360/your points on your sphere --------






-------- I used 15 points so I did this --------






-------- 360/15 --------






Set Real = (Real + (360.00 / 15.00))






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_2)






-------- As standard the Fly height increase by 100 per layer --------






-------- And the distance from the centre by 50 --------




Custom script: call RemoveLocation (udg_Temp_Point)




Set Temp_Group = (Units in (Playable map area) matching ((Unit-type of (Matching unit)) Equal to Invisible Centre))




-------- Dont change what unit group this picks --------




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





Loop - Actions






Set Centre_Unit = (Picked unit)






-------- * --------






Set Temp_Point = (Position of (Picked unit))






-------- * --------






Set Oblivion_Centre_ID = (Picked unit)






-------- * --------






Hashtable - Save Handle OfTemp_Point as 5 of (Key Oblivion_Centre_ID) in Oblivion_Hashtable






-------- Set this to your spells Aoe --------






-------- * --------






Set Temp_Group_2 = (Units within 400.00 of (Load 5 of (Key Oblivion_Centre_ID) in Oblivion_Hashtable) matching ((((Owner of (Matching unit)) is an ally of (Owner of Centre_Unit)) Equal to False) and (((((Matching unit) is alive) Equal to True) and (((Matching unit) is A ground






Custom script: call RemoveLocation (udg_Temp_Point)






-------- Dont change what unit group this picks --------






Set Array = 0






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







Loop - Actions








-------- * --------








Set Temp_Point = (Position of (Picked unit))








-------- * --------








Unit - Turn collision for (Picked unit) Off








-------- Your 'soul grabbing' sfx goes here --------








Unit - Create 1 Hands for Neutral Passive at Temp_Point facing Default building facing degrees








-------- This time should be equal to the time it takes for your 'soul grab' to complete --------








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








-------- * --------








Hashtable - Save Handle Of(Picked unit) as Array of (Key Oblivion_Centre_ID) in Oblivion_Hashtable








-------- * --------








Hashtable - Save Handle Of(Load 50 of (Key Oblivion_Centre_ID) in Oblivion_Hashtable) as 15 of (Key (Picked unit)) in Oblivion_Hashtable








-------- * --------








Hashtable - Save ((Load 30 of (Key Oblivion_Centre_ID) from Oblivion_Hashtable) + 1) as 30 of (Key Oblivion_Centre_ID) in Oblivion_Hashtable








-------- * --------








Hashtable - Save ((Key (Load 1 of (Key (Triggering unit)) in Oblivion_Hashtable)) + 20) as 3 of (Key (Load 1 of (Key (Triggering unit)) in Oblivion_Hashtable)) in Oblivion_Hashtable








-------- * --------








Unit - Hide (Picked unit)








-------- * --------








Unit - Pause (Picked unit)








-------- * --------








Set Array = (Array + 1)








-------- * --------








Custom script: call RemoveLocation (udg_Temp_Point)








-------- * --------






-------- * --------






Custom script: call DestroyGroup (udg_Temp_Group_2)




-------- * --------




Custom script: call DestroyGroup (udg_Temp_Group)



Else - Actions
Loop

Events


Time - Intervals expires

Conditions

Actions


Set Temp_Group = (Units in (Playable map area) matching (((Matching unit) is in Returning_to_normal_fly_height) Equal to True))


-------- Dont change what unit group this picks --------


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



Loop - Actions




-------- * --------




Unit - Add Crow Form to (Picked unit)




-------- * --------




Hashtable - Save (Current flying height of (Picked unit)) as 10 of (Key (Picked unit)) in Oblivion_Hashtable




Animation - Change (Picked unit) flying height to ((Load 10 of (Key (Picked unit)) from Oblivion_Hashtable) + ((Load 1 of (Key (Picked unit)) from Oblivion_Hashtable) x -10.00)) at 0.00




-------- * --------




Unit Group - Add (Picked unit) to Returning_to_normal_fly_height




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





If - Conditions






(Load 7 of (Key (Picked unit)) from Oblivion_Hashtable) Equal to 0





Then - Actions






-------- * --------






Hashtable - Save 0.00 as 10 of (Key (Picked unit)) in Oblivion_Hashtable






-------- * --------






Set Temp_Point = (Position of (Picked unit))






-------- Change to your landing sfx --------






Special Effect - Create a special effect at Temp_Point using Objects\Spawnmodels\Orc\Orcblood\OrdBloodWyvernRider.mdl






Special Effect - Destroy (Last created special effect)






Special Effect - Create a special effect at Temp_Point using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl






-------- * --------






Special Effect - Destroy (Last created special effect)






-------- * --------






-------- * --------






Unit - Cause (Load 15 of (Key (Picked unit)) in Oblivion_Hashtable) to damage (Picked unit), dealing (Real((Load 4 of (Key Oblivion_Centre_ID) from Oblivion_Hashtable))) damage of attack type Spells and damage type Normal






-------- * --------






Hashtable - Save 0 as 25 of (Key (Picked unit)) in Oblivion_Hashtable






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point)






-------- * --------






Unit Group - Remove (Picked unit) from Returning_to_normal_fly_height






-------- * --------






Unit - Turn collision for (Picked unit) On






Unit - Unpause (Picked unit)






-------- * --------






Hashtable - Save -1 as 7 of (Key (Picked unit)) in Oblivion_Hashtable






Set Run_check = (Run_check - 1)






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







If - Conditions








Run_check Equal to 0







Then - Actions








Trigger - Turn off (This trigger)







Else - Actions





Else - Actions




-------- * --------




Unit - Remove Crow Form from (Picked unit)


-------- * --------


Custom script: call DestroyGroup (udg_Temp_Group)


Set Temp_Group = (Units in (Playable map area) matching ((Load 7 of (Key (Matching unit)) from Oblivion_Hashtable) Greater than or equal to 1))


-------- Dont change what unit group this picks --------


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



Loop - Actions




-------- * --------




Set Temp_Point = (Position of (Picked unit))




-------- Knockback speed --------




Set Temp_Point_2 = (Temp_Point offset by 10.00 towards (Facing of (Picked unit)) degrees)




-------- * --------




Unit - Move (Picked unit) instantly to Temp_Point_2




-------- * --------




Hashtable - Save ((Load 7 of (Key (Picked unit)) from Oblivion_Hashtable) - 1) as 7 of (Key (Picked unit)) in Oblivion_Hashtable




-------- * --------




Custom script: call RemoveLocation (udg_Temp_Point)




-------- * --------




Custom script: call RemoveLocation (udg_Temp_Point_2)


-------- * --------


Custom script: call DestroyGroup (udg_Temp_Group)
Death Affects

Events


Unit - A unit Dies

Conditions

Actions


-------- Set the condition to match your 'soul grabbing' sfx --------


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



If - Conditions




(Unit-type of (Triggering unit)) Equal to Hands



Then - Actions




-------- * --------




Set Temp_Point = (Position of (Triggering unit))




-------- This is your dragged into the gorun sfx --------




Special Effect - Create a special effect at Temp_Point using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl




-------- * --------




Special Effect - Destroy (Last created special effect)




-------- * --------




Custom script: call RemoveLocation (udg_Temp_Point)



Else - Actions


-------- Set the condition to your invisible centre --------


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



If - Conditions




(Unit-type of (Triggering unit)) Equal to Invisible Centre



Then - Actions




-------- * --------




Set Temp_Point = (Position of (Triggering unit))




-------- * --------




Set Array = 0




-------- Change this to your death sfx --------




Unit - Create 1 Death SFX for Neutral Passive at Temp_Point facing Default building facing degrees




-------- * --------




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




For each (Integer Debug) from 1 to (Load 30 of (Key (Triggering unit)) from Oblivion_Hashtable), do (Actions)





Loop - Actions






-------- * --------






Set Moved_Unit_ID = (Load Array of (Key (Triggering unit)) in Oblivion_Hashtable)






-------- * --------






Set Moved_Unit = (Load Array of (Key (Triggering unit)) in Oblivion_Hashtable)






-------- * --------






Unit - Add Crow Form to Moved_Unit






-------- * --------






Unit Group - Add Moved_Unit to Returning_to_normal_fly_height






-------- * --------






Unit - Unhide Moved_Unit






-------- * --------






Unit - Move Moved_Unit instantly to Temp_Point






-------- Set this to the fly height --------






-------- if your Middle SFX --------






Animation - Change Moved_Unit flying height to 400.00 at 0.00






-------- * --------






Unit - Set life of Moved_Unit to ((Life of Moved_Unit) - (Real((Load 3 of (Key (Triggering unit)) from Oblivion_Hashtable))))






-------- * --------






Unit - Cause (Load 15 of (Key Moved_Unit_ID) in Oblivion_Hashtable) to damage Moved_Unit, dealing (Real((Load 3 of (Key (Triggering unit)) from Oblivion_Hashtable))) damage of attack type Spells and damage type Normal






-------- * --------






Hashtable - Save (Real((Load 1 of (Key (Triggering unit)) from Oblivion_Hashtable))) as 1 of (Key Moved_Unit_ID) in (Last created hashtable)






-------- * --------






Hashtable - Save (Load 2 of (Key (Triggering unit)) from Oblivion_Hashtable) as 7 of (Key Moved_Unit_ID) in Oblivion_Hashtable






-------- * --------






Unit - Remove Crow Form from Moved_Unit






-------- * --------






Set Array = (Array + 1)




-------- * --------




Unit - Remove (Triggering unit) from the game




-------- * --------




Custom script: call RemoveLocation (udg_Temp_Point)



Else - Actions