Description: Throws a hexing blast to the target area, hexing all enemies caught in the cross-fire.
Level 1 - 2 Second Hex, 200 AOE. Level 2 - 3 Second Hex, 250 AOE. Level 3 - 4 Second Hex, 300 AOE.
MUI and uses DIR.
v1.00
-> Released. v1.10
-> Removed invulnerability.
-> Dummy's Movement type set to none.
-> Initial trigger more efficient.
-> Deleted some unused variables.
-> Changed Dummy ability, works much more efficiently now.
Hexing Blast Init
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Hexing Blast
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
MUI_1 Equal to 0
Then - Actions
-------- If no instances are running, turn on loop. --------
Trigger - Turn on Hexing Blast Loop <gen>
Else - Actions
-------- Start Indexing --------
Set MUI_1 = (MUI_1 + 1)
-------- Dynamic Indexing --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
MUI_1 Greater than Max_Index
Then - Actions
-------- Set Dynamic Indexes --------
Set MUI_2[MUI_1] = MUI_1
Set Max_Index = MUI_1
Else - Actions
-------- End Dynamic Indexing --------
-------- This makes it easier to read and looks cleaner --------
Set Temp = MUI_2[MUI_1]
-------- Save the caster in a variable --------
Set Caster[Temp] = (Triggering unit)
-------- The level of the ability. --------
Set Level[Temp] = (Level of Hexing Blast for Caster[Temp])
-------- ** Set the speed of the orb. --------
Set Speed[Temp] = 16.00
-------- ** Set the AoE of the spell (remember to change the ability's aoe as well) --------
Set AoE[Temp] = (150 + (50 x Level[Temp]))
-------- Set the locations which will be used for angles, dummy creation etc --------
Set Loc1 = (Position of Caster[Temp])
Set Loc4 = (Target point of ability being cast)
-------- The angle in which the dummy unit (orb) will move. --------
Set Angle[Temp] = (Angle from Loc1 to Loc4)
-------- These are the parabola variables. --------
Set Cur_D[Temp] = 0.00
Set Max_D[Temp] = (Distance between Loc1 and Loc4)
-------- ** Change the height here --------
Set Max_H[Temp] = (Random real number between 170.00 and 250.00)
-------- Creates the dummy unit --------
Unit - Create 1 Dummy for (Owner of Caster[Temp]) at Loc1 facing Default building facing degrees
-------- Save the dummy unit --------
Set Dummy[Temp] = (Last created unit)
-------- This is used for parabola. --------
Unit - Add Storm Crow Form to Dummy[Temp]
Unit - Remove Storm Crow Form from Dummy[Temp]
-------- The second dummy is used to determine when the orb has reached its destination. --------
Unit - Create 1 Dummy for (Owner of Caster[Temp]) at Loc4 facing Default building facing degrees
-------- Save the second dummy unit. --------
Set Dummy2[Temp] = (Last created unit)
-------- ** The eye-candy in the centre. --------
Special Effect - Create a special effect at Loc4 using Abilities\Spells\Undead\UndeadMine\UndeadMineCircle.mdl
Special Effect - Destroy (Last created special effect)
-------- Removing the leaks. --------
Custom script: call RemoveLocation(udg_Loc1)
Custom script: call RemoveLocation(udg_Loc4)
Hexing Blast Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer MUI_3) from 1 to MUI_1, do (Actions)
Loop - Actions
-------- Again, makes it easier and cleaner. --------
Set Temp = MUI_2[MUI_3]
-------- Positions used for movement. --------
Set Loc = (Position of Dummy[Temp])
Set Loc2 = (Position of Dummy2[Temp])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Loc and Loc2) Greater than or equal to 30.00
Then - Actions
-------- The location which the orb will move to. --------
Set Loc3 = (Loc offset by Speed[Temp] towards Angle[Temp] degrees)
-------- Moving the dummy. --------
Unit - Move Dummy[Temp] instantly to Loc3
-------- Parabola, increasing current distance. --------
Special Effect - Create a special effect attached to the origin of Dummy[Temp] using Abilities\Weapons\ProcMissile\ProcMissile.mdl
Special Effect - Destroy (Last created special effect)
-------- Applying parabola. --------
Animation - Change Dummy[Temp] flying height to Real[4] at 0.00
-------- Removing Leak --------
Custom script: call RemoveLocation(udg_Loc3)
Else - Actions
-------- All the units getting their asses hexed --------
Set Group = (Units within (Real(AoE[Temp])) of Loc2 matching ((((Matching unit) belongs to an enemy of (Owner of Caster[Temp])) Equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is Mechanical) Equal to False))))
-------- Picking every unit. --------
Unit Group - Pick every unit in Group and do (Actions)
Loop - Actions
-------- Create a dummy caster unit --------
Unit - Create 1 Dummy for (Owner of Caster[Temp]) at Loc2 facing Default building facing degrees
-------- Add dummy ability (Hex). --------
Unit - Add Hexing Blast Dummy to (Last created unit)
-------- Set level of ability --------
Unit - Set level of Hexing Blast Dummy for (Last created unit) to Level[Temp]
-------- So dummy wont live forever, causing lag. --------
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
-------- Ordering dummy to hex. --------
Unit - Order (Last created unit) to Human Sorceress - Polymorph (Picked unit)
-------- Removing group leak. --------
Custom script: call DestroyGroup(udg_Group)
-------- ** Nice eye-candy that appears when orb is dead. --------
Special Effect - Create a special effect at Loc2 using Abilities\Spells\Human\DispelMagic\DispelMagicTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Loc2 using Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl
Special Effect - Destroy (Last created special effect)
-------- Removes the dummy units for the game. --------
Unit - Remove Dummy[Temp] from the game
Unit - Remove Dummy2[Temp] from the game
-------- Recycling Endexes --------
Set MUI_2[MUI_3] = MUI_2[MUI_1]
Set MUI_2[MUI_1] = Temp
Set MUI_1 = (MUI_1 - 1)
Set MUI_3 = (MUI_3 - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
MUI_1 Equal to 0
Then - Actions
-------- If there are no instances running, turn off this trigger. --------
06:49, 19th Jul 2011
Maker:
Approved. I like the effects.
To optimize a bit, get rid of Loc4 variable and use Custom script: set bj_wantDestroyGroup = true and not a variable for the unit group.
06:49, 19th Jul 2011
Maker:
Approved. I like the effects.
To optimize a bit, get rid of Loc4 variable and use Custom script: set bj_wantDestroyGroup = true and not a variable for the unit group.
Set (Last Created Unit) and (Triggering Unit) to a variable and re-use the variable to make it more efficient. (Instead of constantly calling GetTriggerUnit())
Instead of using Set (variable) Group = Units in range.... Just use
Custom script: set bj_wantDestroyGroup = true
===============================================
Unit - Add Storm Crow Form to (Last created unit)
Unit - Remove Storm Crow Form from (Last created unit)
What's the point of instantly adding and then removing it? Why not just use the Object Editor flying check?
Set (Last Created Unit) and (Triggering Unit) to a variable and re-use the variable to make it more efficient. (Instead of constantly calling GetTriggerUnit())
Forgive me if I'm wrong, but bj_wantDestroyGroup is to remove the group leak which I already do with call DestroyGroup. It has nothing to do with selecting units in range and canceling out who gets hexed.
Unit - Add Storm Crow Form to (Last created unit)
Unit - Remove Storm Crow Form from (Last created unit)
What's the point of instantly adding and then removing it? Why not just use the Object Editor flying check?
Forgive me if I'm wrong, but bj_wantDestroyGroup is to remove the group leak which I already do with call DestroyGroup. It has nothing to do with selecting units in range and canceling out who gets hexed.
What's the point of adding Storm Crow Form and then instantly removing it? If it makes it 'fly' then why not change the dummy unit's movement type in the Object Editor to flying?
Ah I see, but i'm used to my method, and my spell is already so much more optimized and efficient than most spells in the section I'm sure it won't really matter.
What's the point of adding Storm Crow Form and then instantly removing it? If it makes it 'fly' then why not change the dummy unit's movement type in the Object Editor to flying?
Ah I see, but i'm used to my method, and my spell is already so much more optimized and efficient than most spells in the section I'm sure it won't really matter.
What's the point of adding Storm Crow Form and then instantly removing it? If it makes it 'fly' then why not change the dummy unit's movement type in the Object Editor to flying?
-->its better to use movement type of none and use SC ability... because setting it to fly will cause the dummy to "collide" sometimes with flying units even if you add locust (or at least, there will be a discrepancy with the target loc and the loc where the dummy will be created if there is another flying unit on that position)
-->its better to use movement type of none and use SC ability... because setting it to fly will cause the dummy to "collide" sometimes with flying units even if you add locust (or at least, there will be a discrepancy with the target loc and the loc where the dummy will be created if there is another flying unit on that position)
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.