Moderator
M
Moderator
01:41, 31st Dec 2012
Magtheridon96: Approved.
Wonderful. You could add much more comments though.
Magtheridon96: Approved.
Wonderful. You could add much more comments though.
Fly Config

Events


Map initialization

Conditions

Actions


-------- Is the caster alive?? --------


Set Fly_Condition_Config[0] = True


-------- The increasing value of the height per 0.03 second --------


Set Fly_Height_Increase_Rate[1] = 6.00


Set Fly_Height_Increase_Rate[2] = 6.00


Set Fly_Height_Increase_Rate[3] = 6.00


Set Fly_Height_Increase_Rate[4] = 6.00


-------- The decreasing value of the height per 0.03 second --------


Set Fly_Height_Decrease_Rate[1] = 6.00


Set Fly_Height_Decrease_Rate[2] = 6.00


Set Fly_Height_Decrease_Rate[3] = 6.00


Set Fly_Height_Decrease_Rate[4] = 6.00


-------- The maximum height that will be increased --------


Set Fly_Max_Height[1] = 60.00


Set Fly_Max_Height[2] = 60.00


Set Fly_Max_Height[3] = 60.00


Set Fly_Max_Height[4] = 60.00


-------- The attachment of the model file 1 --------


Set Fly_Attachment[1] = left foot


-------- The model file that will be created with the attachment 1 --------


Set Fly_Effect_Model[1] = Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl


-------- The attachment of the model file 2 --------


Set Fly_Attachment[2] = right foot


-------- The model file that will be created with the attachment 2 --------


Set Fly_Effect_Model[2] = Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl


-------- The attachment of the model file 3 --------


Set Fly_Attachment[3] = overhead


-------- The model file that will be created with the attachment 3 --------


Set Fly_Effect_Model[3] = Abilities\Spells\Items\StaffOfSanctuary\Staff_Sanctuary_Target.mdl


-------- The Ability --------


Set Fly_Spell = Fly


-------- The Buff --------


Set Fly_Buff = Fly


-------- The added spell 1 --------


Set Fly_Added_Spell[1] = Fly 1 (Dummy)


-------- The added spell 2 --------


Set Fly_Added_Spell[2] = Fly 2 (Dummy)
Fly Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to Fly_Spell

Actions


-------- ------------------------------INDEXING START------------------------------ --------


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



If - Conditions




Fly_Index_Listener Equal to 0



Then - Actions




Trigger - Turn on Fly Loop <gen>



Else - Actions


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



If - Conditions




Fly_Recycle_Size Greater than 0



Then - Actions




Set Fly_Recycle_Size = (Fly_Recycle_Size - 1)




Set Fly_Current_Index = Fly_Recycle_Container[Fly_Recycle_Size]



Else - Actions




Set Fly_Current_Index = Fly_Index_Size




Set Fly_Index_Size = (Fly_Index_Size + 1)


-------- ------------------------------INDEXING END------------------------------ --------


Set Fly_Stage[Fly_Current_Index] = 1


Set Fly_Caster[Fly_Current_Index] = (Triggering unit)


Unit - Turn collision for Fly_Caster[Fly_Current_Index] Off


-------- This code add the flying ability and removes it to make the flying height changeable --------


Custom script: if UnitAddAbility(udg_Fly_Caster[udg_Fly_Current_Index],'Amrf') then


Custom script: call UnitRemoveAbility(udg_Fly_Caster[udg_Fly_Current_Index],'Amrf')


Custom script: endif


-------- ------------------------------------------------------------ --------


Set Fly_Level[Fly_Current_Index] = (Level of Fly_Spell for Fly_Caster[Fly_Current_Index])


Unit - Add Fly_Added_Spell[1] to Fly_Caster[Fly_Current_Index]


Unit - Set level of Fly_Added_Spell[1] for Fly_Caster[Fly_Current_Index] to Fly_Level[Fly_Current_Index]


Unit - Add Fly_Added_Spell[2] to Fly_Caster[Fly_Current_Index]


Unit - Set level of Fly_Added_Spell[2] for Fly_Caster[Fly_Current_Index] to Fly_Level[Fly_Current_Index]


Custom script: set udg_Fly_SE_1[udg_Fly_Current_Index] = AddSpecialEffectTarget(udg_Fly_Effect_Model[1], udg_Fly_Caster[udg_Fly_Current_Index], udg_Fly_Attachment[1])


Custom script: set udg_Fly_SE_2[udg_Fly_Current_Index] = AddSpecialEffectTarget(udg_Fly_Effect_Model[2], udg_Fly_Caster[udg_Fly_Current_Index], udg_Fly_Attachment[2])


Custom script: set udg_Fly_SE_3[udg_Fly_Current_Index] = AddSpecialEffectTarget(udg_Fly_Effect_Model[3], udg_Fly_Caster[udg_Fly_Current_Index], udg_Fly_Attachment[3])


-------- ------------------------------INDEXING START------------------------------ --------


Set Fly_Index_Container[Fly_Index_Listener] = Fly_Current_Index


Set Fly_Index_Listener = (Fly_Index_Listener + 1)


-------- ------------------------------INDEXING END------------------------------ --------
Fly Loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


-------- ------------------------------INDEXING START------------------------------ --------


For each (Integer Fly_Loop) from 0 to (Fly_Index_Listener - 1), do (Actions)



Loop - Actions




Set Fly_Current_Index = Fly_Index_Container[Fly_Loop]




-------- ------------------------------INDEXING END------------------------------ --------




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





If - Conditions






(Fly_Caster[Fly_Current_Index] is alive) Equal to Fly_Condition_Config[0]






Fly_Stage[Fly_Current_Index] Equal to 1





Then - Actions






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







If - Conditions








(Fly_Caster[Fly_Current_Index] has buff Fly_Buff) Equal to True







Then - Actions








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









If - Conditions










Fly_Height[Fly_Current_Index] Less than Fly_Max_Height[Fly_Level[Fly_Current_Index]]









Then - Actions










Set Fly_Height[Fly_Current_Index] = (Fly_Height[Fly_Current_Index] + Fly_Height_Increase_Rate[Fly_Level[Fly_Current_Index]])










Animation - Change Fly_Caster[Fly_Current_Index] flying height to Fly_Height[Fly_Current_Index] at 0.00









Else - Actions










Set Fly_Height[Fly_Current_Index] = Fly_Max_Height[Fly_Level[Fly_Current_Index]]










Animation - Change Fly_Caster[Fly_Current_Index] flying height to Fly_Height[Fly_Current_Index] at 0.00







Else - Actions








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









If - Conditions










Fly_Height[Fly_Current_Index] Greater than 0.00









Then - Actions










Set Fly_Height[Fly_Current_Index] = (Fly_Height[Fly_Current_Index] - Fly_Height_Decrease_Rate[Fly_Level[Fly_Current_Index]])










Animation - Change Fly_Caster[Fly_Current_Index] flying height to Fly_Height[Fly_Current_Index] at 0.00









Else - Actions










Set Fly_Stage[Fly_Current_Index] = 0





Else - Actions






Unit - Turn collision for Fly_Caster[Fly_Current_Index] On






Set Fly_Height[Fly_Current_Index] = 0.00






Animation - Change Fly_Caster[Fly_Current_Index] flying height to Fly_Height[Fly_Current_Index] at 0.00






Custom script: call DestroyEffect(udg_Fly_SE_1[udg_Fly_Current_Index])






Custom script: call DestroyEffect(udg_Fly_SE_2[udg_Fly_Current_Index])






Custom script: call DestroyEffect(udg_Fly_SE_3[udg_Fly_Current_Index])






Unit - Remove Fly_Added_Spell[1] from Fly_Caster[Fly_Current_Index]






Unit - Remove Fly_Added_Spell[2] from Fly_Caster[Fly_Current_Index]






-------- ------------------------------INDEXING START------------------------------ --------






Set Fly_Index_Listener = (Fly_Index_Listener - 1)






Set Fly_Index_Container[Fly_Loop] = Fly_Index_Container[Fly_Index_Listener]






Set Fly_Recycle_Container[Fly_Recycle_Size] = Fly_Current_Index






Set Fly_Recycle_Size = (Fly_Recycle_Size + 1)






Set Fly_Loop = (Fly_Loop - 1)






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







If - Conditions








Fly_Index_Listener Equal to 0







Then - Actions








Trigger - Turn off Fly Loop <gen>







Else - Actions






-------- ------------------------------INDEXING END------------------------------ --------
Fly Attack Prevent

Events


Unit - A unit Is attacked

Conditions

Actions


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



If - Conditions




((Attacked unit) has buff Fly_Buff) Equal to True




((Attacking unit) is A melee attacker) Equal to True



Then - Actions




Unit - Order (Attacking unit) to Stop



Else - Actions
StK Config

Events


Map initialization

Conditions

Actions


-------- Is the caster alive?? --------


Set StK_Condition_Config[0] = True


-------- Is the target alive?? --------


Set StK_Condition_Config[1] = True


-------- Is the picked unit belongs to the enemy of the caster?? --------


Set StK_Condition_Config[2] = True


-------- Is the picked unit alive?? --------


Set StK_Condition_Config[3] = True


-------- Is the picked unit a structure?? --------


Set StK_Condition_Config[4] = False


-------- Is the picked unit magic immune?? --------


Set StK_Condition_Config[5] = False


Set StK_Final_Animation_Type = slam


Set StK_Run_Animation_Type = spin


Set StK_Run_Animation_Speed = 220.00


Set StK_Attack_Type = Chaos


Set StK_Damage[1] = 120.00


Set StK_Damage[2] = 180.00


Set StK_Damage[3] = 240.00


Set StK_Damage[4] = 300.00


Set StK_Run_Speed[1] = 35.00


Set StK_Run_Speed[2] = 35.00


Set StK_Run_Speed[3] = 35.00


Set StK_Run_Speed[4] = 35.00


Set StK_Damage_During_Run[1] = 15.00


Set StK_Damage_During_Run[2] = 15.00


Set StK_Damage_During_Run[3] = 15.00


Set StK_Damage_During_Run[4] = 15.00


Set StK_Pick_Range[1] = 128.00


Set StK_Pick_Range[2] = 128.00


Set StK_Pick_Range[3] = 128.00


Set StK_Pick_Range[4] = 128.00


Set StK_Attachment[1] = weapon


Set StK_Effect_Model[1] = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl


Set StK_Attachment[2] = origin


Set StK_Effect_Model[2] = Abilities\Weapons\Bolt\BoltImpact.mdl


Set StK_Spell = Strike
StK Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to StK_Spell

Actions


-------- ------------------------------INDEXING START------------------------------ --------


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



If - Conditions




StK_Index_Listener Equal to 0



Then - Actions




Trigger - Turn on StK Loop <gen>



Else - Actions


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



If - Conditions




StK_Recycle_Size Greater than 0



Then - Actions




Set StK_Recycle_Size = (StK_Recycle_Size - 1)




Set StK_Current_Index = StK_Recycle_Container[StK_Recycle_Size]



Else - Actions




Set StK_Current_Index = StK_Index_Size




Set StK_Index_Size = (StK_Index_Size + 1)


-------- ------------------------------INDEXING END------------------------------ --------


Set StK_Caster[StK_Current_Index] = (Triggering unit)


Animation - Play StK_Caster[StK_Current_Index]'s StK_Run_Animation_Type animation


Animation - Change StK_Caster[StK_Current_Index]'s animation speed to StK_Run_Animation_Speed% of its original speed


Custom script: set udg_StK_SE_1[udg_StK_Current_Index] = AddSpecialEffectTarget(udg_StK_Effect_Model[1], udg_StK_Caster[udg_StK_Current_Index], udg_StK_Attachment[1])


Set StK_Target[StK_Current_Index] = (Target unit of ability being cast)


Set StK_Level[StK_Current_Index] = (Level of StK_Spell for StK_Caster[StK_Current_Index])


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



If - Conditions




(StK_Caster[StK_Current_Index] has buff Fly_Buff) Equal to True



Then - Actions




Unit - Order StK_Caster[Fly_Current_Index] to Neutral Naga Sea Witch - Deactivate Mana Shield



Else - Actions


-------- ------------------------------INDEXING START------------------------------ --------


Set StK_Index_Container[StK_Index_Listener] = StK_Current_Index


Set StK_Index_Listener = (StK_Index_Listener + 1)


-------- ------------------------------INDEXING END------------------------------ --------
StK Loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


-------- ------------------------------INDEXING START------------------------------ --------


For each (Integer StK_Loop) from 0 to (StK_Index_Listener - 1), do (Actions)



Loop - Actions




Set StK_Current_Index = StK_Index_Container[StK_Loop]




-------- ------------------------------INDEXING END------------------------------ --------




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





If - Conditions






(StK_Caster[StK_Current_Index] is alive) Equal to StK_Condition_Config[0]






(StK_Target[StK_Current_Index] is alive) Equal to StK_Condition_Config[1]





Then - Actions






Set StK_Caster_Point = (Position of StK_Caster[StK_Current_Index])






Set StK_Target_Point = (Position of StK_Target[StK_Current_Index])






Set StK_Distance[StK_Current_Index] = (Distance between StK_Caster_Point and StK_Target_Point)






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







If - Conditions








Or - Any (Conditions) are true









Conditions










StK_Distance[StK_Current_Index] Less than 20.00










StK_Distance[StK_Current_Index] Greater than or equal to 128.00







Then - Actions








Set StK_Angle[StK_Current_Index] = (Angle from StK_Caster_Point to StK_Target_Point)








Custom script: call SetUnitX(udg_StK_Caster[udg_StK_Current_Index],GetUnitX(udg_StK_Caster[udg_StK_Current_Index]) + udg_StK_Run_Speed[udg_StK_Level[udg_StK_Current_Index]] * Cos(udg_StK_Angle[udg_StK_Current_Index] * bj_DEGTORAD))








Custom script: call SetUnitY(udg_StK_Caster[udg_StK_Current_Index],GetUnitY(udg_StK_Caster[udg_StK_Current_Index]) + udg_StK_Run_Speed[udg_StK_Level[udg_StK_Current_Index]] * Sin(udg_StK_Angle[udg_StK_Current_Index] * bj_DEGTORAD))








Set StK_Group[StK_Current_Index] = (Units within StK_Pick_Range[StK_Level[StK_Current_Index]] of StK_Caster_Point)








Unit Group - Pick every unit in StK_Group[StK_Current_Index] and do (Actions)









Loop - Actions










Set StK_Picked_Unit = (Picked unit)










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











If - Conditions












(StK_Picked_Unit belongs to an enemy of (Owner of StK_Caster[StK_Current_Index])) Equal to StK_Condition_Config[2]












(StK_Picked_Unit is alive) Equal to StK_Condition_Config[3]












(StK_Picked_Unit is A structure) Equal to StK_Condition_Config[4]












(StK_Picked_Unit is Magic Immune) Equal to StK_Condition_Config[5]











Then - Actions












Unit - Cause StK_Caster[StK_Current_Index] to damage StK_Picked_Unit, dealing StK_Damage_During_Run[StK_Level[StK_Current_Index]] damage of attack type StK_Attack_Type and damage type Normal












Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_StK_Effect_Model[2], udg_StK_Picked_Unit,udg_StK_Attachment[2]))











Else - Actions








Custom script: call DestroyGroup(udg_StK_Group[udg_StK_Current_Index])







Else - Actions








Animation - Play StK_Caster[StK_Current_Index]'s StK_Final_Animation_Type animation








Animation - Change StK_Caster[StK_Current_Index]'s animation speed to 100.00% of its original speed








Unit - Cause StK_Caster[StK_Current_Index] to damage StK_Target[StK_Current_Index], dealing StK_Damage[StK_Level[StK_Current_Index]] damage of attack type StK_Attack_Type and damage type Normal








Custom script: call DestroyEffect(udg_StK_SE_1[udg_StK_Current_Index])








Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_StK_Effect_Model[2], udg_StK_Target[udg_StK_Current_Index],udg_StK_Attachment[2]))








-------- ------------------------------INDEXING START------------------------------ --------








Set StK_Index_Listener = (StK_Index_Listener - 1)








Set StK_Index_Container[StK_Loop] = StK_Index_Container[StK_Index_Listener]








Set StK_Recycle_Container[StK_Recycle_Size] = StK_Current_Index








Set StK_Recycle_Size = (StK_Recycle_Size + 1)








Set StK_Loop = (StK_Loop - 1)








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









If - Conditions










StK_Index_Listener Equal to 0









Then - Actions










Trigger - Turn off StK Loop <gen>









Else - Actions








-------- ------------------------------INDEXING END------------------------------ --------






Custom script: call RemoveLocation(udg_StK_Caster_Point)






Custom script: call RemoveLocation(udg_StK_Target_Point)





Else - Actions






Animation - Change StK_Caster[StK_Current_Index]'s animation speed to 100.00% of its original speed






Custom script: call DestroyEffect(udg_StK_SE_1[udg_StK_Current_Index])






-------- ------------------------------INDEXING START------------------------------ --------






Set StK_Index_Listener = (StK_Index_Listener - 1)






Set StK_Index_Container[StK_Loop] = StK_Index_Container[StK_Index_Listener]






Set StK_Recycle_Container[StK_Recycle_Size] = StK_Current_Index






Set StK_Recycle_Size = (StK_Recycle_Size + 1)






Set StK_Loop = (StK_Loop - 1)






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







If - Conditions








StK_Index_Listener Equal to 0







Then - Actions








Trigger - Turn off StK Loop <gen>







Else - Actions






-------- ------------------------------INDEXING END------------------------------ --------
EmS Config

Events


Map initialization

Conditions

Actions


Set EmS_Animation_Type = attack


-------- Is the caster alive?? --------


Set EmS_Condition_Config[0] = True


-------- Is the target alive?? --------


Set EmS_Condition_Config[1] = True


-------- Is the picked unit belongs to the enemy of the caster?? --------


Set EmS_Condition_Config[2] = True


-------- Is the picked unit alive?? --------


Set EmS_Condition_Config[3] = False


-------- Is the picked unit a structure?? --------


Set EmS_Condition_Config[4] = False


-------- Is the picked unit magic immune?? --------


Set EmS_Colour[1] = 100.00


Set EmS_Colour[2] = 100.00


Set EmS_Colour[3] = 100.00


Set EmS_Transparency = 50.00


Set EmS_Pick_Range[1] = 400.00


Set EmS_Pick_Range[2] = 400.00


Set EmS_Pick_Range[3] = 400.00


Set EmS_Pick_Range[4] = 400.00


Set EmS_Attack_Type = Chaos


Set EmS_Damage[1] = 100.00


Set EmS_Damage[2] = 120.00


Set EmS_Damage[3] = 140.00


Set EmS_Damage[4] = 160.00


Set EmS_Duration[1] = 2.00


Set EmS_Duration[2] = 2.50


Set EmS_Duration[3] = 3.00


Set EmS_Duration[4] = 3.50


Set EmS_Attachment[1] = chest


Set EmS_Effect_Model[1] = Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl


Set EmS_Attachment[2] = origin


Set EmS_Effect_Model[2] = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl


Set EmS_Spell = Ember Slashes


Set EmS_Interval = 0.05


Trigger - Add to EmS Loop <gen> the event (Time - Every EmS_Interval seconds of game time)
EmS Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to EmS_Spell

Actions


-------- ------------------------------INDEXING START------------------------------ --------


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



If - Conditions




EmS_Index_Listener Equal to 0



Then - Actions




Trigger - Turn on EmS Loop <gen>



Else - Actions


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



If - Conditions




EmS_Recycle_Size Greater than 0



Then - Actions




Set EmS_Recycle_Size = (EmS_Recycle_Size - 1)




Set EmS_Current_Index = EmS_Recycle_Container[EmS_Recycle_Size]



Else - Actions




Set EmS_Current_Index = EmS_Index_Size




Set EmS_Index_Size = (EmS_Index_Size + 1)


-------- ------------------------------INDEXING END------------------------------ --------


Set EmS_TargetPoint[EmS_Current_Index] = (Target point of ability being cast)


Set EmS_Caster[EmS_Current_Index] = (Triggering unit)


Animation - Change EmS_Caster[EmS_Current_Index]'s vertex coloring to (EmS_Colour[1]%, EmS_Colour[2]%, EmS_Colour[3]%) with EmS_Transparency% transparency


Unit - Make EmS_Caster[EmS_Current_Index] Invulnerable


Custom script: set udg_EmS_SE_1[udg_EmS_Current_Index] = AddSpecialEffectTarget(udg_EmS_Effect_Model[1], udg_EmS_Caster[udg_EmS_Current_Index], udg_EmS_Attachment[1])


Set EmS_Level[EmS_Current_Index] = (Level of EmS_Spell for EmS_Caster[EmS_Current_Index])


Set EmS_Timer[EmS_Current_Index] = EmS_Duration[EmS_Level[EmS_Current_Index]]


-------- ------------------------------INDEXING START------------------------------ --------


Set EmS_Index_Container[EmS_Index_Listener] = EmS_Current_Index


Set EmS_Index_Listener = (EmS_Index_Listener + 1)


-------- ------------------------------INDEXING END------------------------------ --------
EmS Loop

Events

Conditions

Actions


-------- ------------------------------INDEXING START------------------------------ --------


For each (Integer EmS_Loop) from 0 to (EmS_Index_Listener - 1), do (Actions)



Loop - Actions




Set EmS_Current_Index = EmS_Index_Container[EmS_Loop]




-------- ------------------------------INDEXING END------------------------------ --------




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





If - Conditions






EmS_Timer[EmS_Current_Index] Greater than 0.00






(EmS_Caster[EmS_Current_Index] is alive) Equal to EmS_Condition_Config[0]





Then - Actions






Set EmS_Timer[EmS_Current_Index] = (EmS_Timer[EmS_Current_Index] - EmS_Interval)






Set EmS_Caster_Point = (Position of EmS_Caster[EmS_Current_Index])






Set EmS_Group[EmS_Current_Index] = (Units within EmS_Pick_Range[EmS_Level[EmS_Current_Index]] of EmS_TargetPoint[EmS_Current_Index])






Set EmS_Random_Group[EmS_Current_Index] = (Random 1 units from EmS_Group[EmS_Current_Index])






Unit Group - Pick every unit in EmS_Random_Group[EmS_Current_Index] and do (Actions)







Loop - Actions








Set EmS_Picked_Unit = (Picked unit)








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









If - Conditions










(EmS_Picked_Unit is alive) Equal to EmS_Condition_Config[1]










(EmS_Picked_Unit belongs to an enemy of (Owner of EmS_Caster[EmS_Current_Index])) Equal to EmS_Condition_Config[2]










(EmS_Picked_Unit is A structure) Equal to EmS_Condition_Config[3]










(EmS_Picked_Unit is Magic Immune) Equal to EmS_Condition_Config[4]









Then - Actions










Set EmS_Picked_Point = (Position of EmS_Picked_Unit)










Set EmS_Move = (EmS_Picked_Point offset by EmS_Picked_Move_Distance towards ((Facing of EmS_Picked_Unit) + 180.00) degrees)










Unit - Move EmS_Caster[EmS_Current_Index] instantly to EmS_Move, facing (Angle from EmS_Caster_Point to EmS_Picked_Point) degrees










Unit - Cause EmS_Caster[EmS_Current_Index] to damage EmS_Picked_Unit, dealing EmS_Damage[EmS_Level[EmS_Current_Index]] damage of attack type EmS_Attack_Type and damage type Normal










Animation - Play EmS_Caster[EmS_Current_Index]'s EmS_Animation_Type animation










Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_EmS_Effect_Model[2], udg_EmS_Picked_Unit,udg_EmS_Attachment[2]))










Custom script: call RemoveLocation(udg_EmS_Picked_Point)










Custom script: call RemoveLocation(udg_EmS_Move)









Else - Actions






Custom script: call RemoveLocation(udg_EmS_Caster_Point)






Custom script: call DestroyGroup(udg_EmS_Group[udg_EmS_Current_Index])






Custom script: call DestroyGroup(udg_EmS_Random_Group[udg_EmS_Current_Index])





Else - Actions






Custom script: call RemoveLocation(udg_EmS_TargetPoint[udg_EmS_Current_Index])






Custom script: call DestroyEffect(udg_EmS_SE_1[udg_EmS_Current_Index])






Unit - Make EmS_Caster[EmS_Current_Index] Vulnerable






Animation - Change EmS_Caster[EmS_Current_Index]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency






-------- ------------------------------INDEXING START------------------------------ --------






Set EmS_Index_Listener = (EmS_Index_Listener - 1)






Set EmS_Index_Container[EmS_Loop] = EmS_Index_Container[EmS_Index_Listener]






Set EmS_Recycle_Container[EmS_Recycle_Size] = EmS_Current_Index






Set EmS_Recycle_Size = (EmS_Recycle_Size + 1)






Set EmS_Loop = (EmS_Loop - 1)






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







If - Conditions








EmS_Index_Listener Equal to 0







Then - Actions








Trigger - Turn off EmS Loop <gen>







Else - Actions






-------- ------------------------------INDEXING END------------------------------ --------
ThS Config

Events


Map initialization

Conditions

Actions


Set ThS_Animation_Type = spin


Set ThS_Animation_Speed = 150.00


-------- Is the caster alive?? --------


Set ThS_Condition_Config[0] = True


-------- Is the picked unit alive?? --------


Set ThS_Condition_Config[1] = True


-------- Is the picked unit belongs to the enemy of the caster?? --------


Set ThS_Condition_Config[2] = True


-------- Is the picked unit a structure?? --------


Set ThS_Condition_Config[3] = False


-------- Is the picked unit magic immune?? --------


Set ThS_Condition_Config[4] = False


Set ThS_Attack_Type = Chaos


Set ThS_Damage_Of_Lightning[1] = 60.00


Set ThS_Damage_Of_Lightning[2] = 70.00


Set ThS_Damage_Of_Lightning[3] = 80.00


Set ThS_Rushing_Over_Damage[1] = 12.00


Set ThS_Rushing_Over_Damage[2] = 12.00


Set ThS_Rushing_Over_Damage[3] = 12.00


Set ThS_Rushing_Over_Damage[4] = 12.00


Set ThS_Duration[1] = 8.00


Set ThS_Duration[2] = 8.00


Set ThS_Duration[3] = 8.00


Set ThS_Interval_For_Lightning[1] = 1.00


Set ThS_Interval_For_Lightning[2] = 1.00


Set ThS_Interval_For_Lightning[3] = 1.00


Set ThS_Pick_Range[1] = 128.00


Set ThS_Pick_Range[2] = 128.00


Set ThS_Pick_Range[3] = 128.00


Set ThS_Stay_Distance[1] = 500.00


Set ThS_Stay_Distance[2] = 500.00


Set ThS_Stay_Distance[3] = 500.00


Set ThS_Spin_Speed[1] = 24.00


Set ThS_Spin_Speed[2] = 24.00


Set ThS_Spin_Speed[3] = 24.00


Set ThS_Recoil_Speed[1] = 20.00


Set ThS_Recoil_Speed[2] = 20.00


Set ThS_Recoil_Speed[3] = 20.00


Set ThS_Attachment[1] = chest


Set ThS_Effect_Model[1] = Abilities\Weapons\WaterElementalMissile\WaterElementalMissile.mdl


Set ThS_Attachment[2] = origin


Set ThS_Effect_Model[2] = Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl


Set ThS_Attachment[3] = origin


Set ThS_Effect_Model[3] = Abilities\Spells\Human\ManaFlare\ManaFlareBoltImpact.mdl


Set ThS_Spell = Thunderstorm


Set ThS_Interval = 0.03


Trigger - Add to ThS Loop <gen> the event (Time - Every ThS_Interval seconds of game time)


Set ThS_Dummy_Type = Universal Dummy
ThS Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to ThS_Spell

Actions


-------- ------------------------------INDEXING START------------------------------ --------


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



If - Conditions




ThS_Index_Listener Equal to 0



Then - Actions




Trigger - Turn on ThS Loop <gen>



Else - Actions


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



If - Conditions




ThS_Recycle_Size Greater than 0



Then - Actions




Set ThS_Recycle_Size = (ThS_Recycle_Size - 1)




Set ThS_Current_Index = ThS_Recycle_Container[ThS_Recycle_Size]



Else - Actions




Set ThS_Current_Index = ThS_Index_Size




Set ThS_Index_Size = (ThS_Index_Size + 1)


-------- ------------------------------INDEXING END------------------------------ --------


Set ThS_Caster[ThS_Current_Index] = (Triggering unit)


Set ThS_TargetPoint[ThS_Current_Index] = (Target point of ability being cast)


Set ThS_Start_Point[ThS_Current_Index] = (Position of ThS_Caster[ThS_Current_Index])


Custom script: set udg_ThS_SE_1[udg_ThS_Current_Index] = AddSpecialEffectTarget(udg_ThS_Effect_Model[1], udg_ThS_Caster[udg_ThS_Current_Index], udg_ThS_Attachment[1])


Unit - Turn collision for ThS_Caster[ThS_Current_Index] Off


Animation - Play ThS_Caster[ThS_Current_Index]'s ThS_Animation_Type animation


Animation - Change ThS_Caster[ThS_Current_Index]'s animation speed to ThS_Animation_Speed% of its original speed


Set ThS_Owner[ThS_Current_Index] = (Owner of ThS_Caster[ThS_Current_Index])


Set ThS_Level[ThS_Current_Index] = (Level of ThS_Spell for ThS_Caster[ThS_Current_Index])


Set ThS_Timer_1[ThS_Current_Index] = ThS_Duration[ThS_Level[ThS_Current_Index]]


Set ThS_Timer_2[ThS_Current_Index] = ThS_Interval_For_Lightning[ThS_Level[ThS_Current_Index]]


Unit - Create 1 ThS_Dummy_Type for ThS_Owner[ThS_Current_Index] at ThS_TargetPoint[ThS_Current_Index] facing Default building facing degrees


Set ThS_Dummy[ThS_Current_Index] = (Last created unit)


-------- ------------------------------INDEXING START------------------------------ --------


Set ThS_Index_Container[ThS_Index_Listener] = ThS_Current_Index


Set ThS_Index_Listener = (ThS_Index_Listener + 1)


-------- ------------------------------INDEXING END------------------------------ --------
ThS Loop

Events

Conditions

Actions


-------- ------------------------------INDEXING START------------------------------ --------


For each (Integer ThS_Loop) from 0 to (ThS_Index_Listener - 1), do (Actions)



Loop - Actions




Set ThS_Current_Index = ThS_Index_Container[ThS_Loop]




-------- ------------------------------INDEXING END------------------------------ --------




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





If - Conditions






ThS_Timer_1[ThS_Current_Index] Greater than 0.00






(ThS_Caster[ThS_Current_Index] is alive) Equal to ThS_Condition_Config[0]





Then - Actions






Set ThS_Timer_1[ThS_Current_Index] = (ThS_Timer_1[ThS_Current_Index] - ThS_Interval)






Set ThS_Caster_Point = (Position of ThS_Caster[ThS_Current_Index])






Set ThS_Angle[ThS_Current_Index] = ((Angle from ThS_TargetPoint[ThS_Current_Index] to ThS_Caster_Point) + ThS_Spin_Speed[ThS_Level[ThS_Current_Index]])






Custom script: call SetUnitX(udg_ThS_Caster[udg_ThS_Current_Index],GetUnitX(udg_ThS_Dummy[udg_ThS_Current_Index]) + udg_ThS_Stay_Distance[udg_ThS_Level[udg_ThS_Current_Index]] * Cos(udg_ThS_Angle[udg_ThS_Current_Index] * bj_DEGTORAD))






Custom script: call SetUnitY(udg_ThS_Caster[udg_ThS_Current_Index],GetUnitY(udg_ThS_Dummy[udg_ThS_Current_Index]) + udg_ThS_Stay_Distance[udg_ThS_Level[udg_ThS_Current_Index]] * Sin(udg_ThS_Angle[udg_ThS_Current_Index] * bj_DEGTORAD))






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







If - Conditions








ThS_Timer_2[ThS_Current_Index] Greater than 0.00







Then - Actions








Set ThS_Timer_2[ThS_Current_Index] = (ThS_Timer_2[ThS_Current_Index] - ThS_Interval)







Else - Actions








Set ThS_Group_1[ThS_Current_Index] = (Units within ThS_Stay_Distance[ThS_Level[ThS_Current_Index]] of ThS_TargetPoint[ThS_Current_Index])








Unit Group - Pick every unit in ThS_Group_1[EmS_Current_Index] and do (Actions)









Loop - Actions










Set ThS_Picked_Unit = (Picked unit)










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











If - Conditions












(ThS_Picked_Unit is alive) Equal to ThS_Condition_Config[1]












(ThS_Picked_Unit belongs to an enemy of ThS_Owner[ThS_Current_Index]) Equal to ThS_Condition_Config[2]












(ThS_Picked_Unit is A structure) Equal to ThS_Condition_Config[3]












(ThS_Picked_Unit is Magic Immune) Equal to ThS_Condition_Config[4]











Then - Actions












Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_ThS_Effect_Model[2], udg_ThS_Picked_Unit,udg_ThS_Attachment[2]))












Unit - Cause ThS_Caster[ThS_Current_Index] to damage ThS_Picked_Unit, dealing ThS_Damage_Of_Lightning[ThS_Level[ThS_Current_Index]] damage of attack type ThS_Attack_Type and damage type Normal











Else - Actions








Custom script: call DestroyGroup(udg_ThS_Group_1[udg_ThS_Current_Index])








Set ThS_Timer_2[ThS_Current_Index] = ThS_Interval_For_Lightning[ThS_Level[ThS_Current_Index]]






Set ThS_Group_2[ThS_Current_Index] = (Units within ThS_Pick_Range[ThS_Level[ThS_Current_Index]] of ThS_Caster_Point)






Unit Group - Pick every unit in ThS_Group_2[ThS_Current_Index] and do (Actions)







Loop - Actions








Set ThS_Picked_Unit = (Picked unit)








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









If - Conditions










(ThS_Picked_Unit is alive) Equal to ThS_Condition_Config[1]










(ThS_Picked_Unit belongs to an enemy of ThS_Owner[ThS_Current_Index]) Equal to ThS_Condition_Config[2]










(ThS_Picked_Unit is A structure) Equal to ThS_Condition_Config[3]










(ThS_Picked_Unit is Magic Immune) Equal to ThS_Condition_Config[4]









Then - Actions










Set ThS_Picked_Point = (Position of ThS_Picked_Unit)










Set ThS_Angle[ThS_Current_Index] = (Angle from ThS_Picked_Point to ThS_TargetPoint[ThS_Current_Index])










Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_ThS_Effect_Model[3], udg_ThS_Picked_Unit,udg_ThS_Attachment[3]))










Unit - Cause ThS_Caster[ThS_Current_Index] to damage ThS_Picked_Unit, dealing ThS_Rushing_Over_Damage[ThS_Level[ThS_Current_Index]] damage of attack type ThS_Attack_Type and damage type Normal










Custom script: call SetUnitX(udg_ThS_Picked_Unit,GetUnitX(udg_ThS_Picked_Unit) + udg_ThS_Recoil_Speed[udg_ThS_Level[udg_ThS_Current_Index]] * Cos(udg_ThS_Angle[udg_ThS_Current_Index] * bj_DEGTORAD))










Custom script: call SetUnitY(udg_ThS_Picked_Unit,GetUnitY(udg_ThS_Picked_Unit) + udg_ThS_Recoil_Speed[udg_ThS_Level[udg_ThS_Current_Index]] * Sin(udg_ThS_Angle[udg_ThS_Current_Index] * bj_DEGTORAD))










Custom script: call RemoveLocation(udg_ThS_Picked_Point)









Else - Actions






Custom script: call DestroyGroup(udg_ThS_Group_2[udg_ThS_Current_Index])






Custom script: call RemoveLocation(udg_ThS_Caster_Point)





Else - Actions






Unit - Move ThS_Caster[ThS_Current_Index] instantly to ThS_Start_Point[ThS_Current_Index], facing (Random angle) degrees






Animation - Change ThS_Caster[ThS_Current_Index]'s animation speed to 100.00% of its original speed






Unit - Turn collision for ThS_Caster[ThS_Current_Index] On






Unit - Remove ThS_Dummy[ThS_Current_Index] from the game






Custom script: call RemoveLocation(udg_ThS_Start_Point[udg_ThS_Current_Index])






Custom script: call RemoveLocation(udg_ThS_TargetPoint[udg_ThS_Current_Index])






Custom script: call DestroyEffect(udg_ThS_SE_1[udg_ThS_Current_Index])






-------- ------------------------------INDEXING START------------------------------ --------






Set ThS_Index_Listener = (ThS_Index_Listener - 1)






Set ThS_Index_Container[ThS_Loop] = ThS_Index_Container[ThS_Index_Listener]






Set ThS_Recycle_Container[ThS_Recycle_Size] = ThS_Current_Index






Set ThS_Recycle_Size = (ThS_Recycle_Size + 1)






Set ThS_Loop = (ThS_Loop - 1)






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







If - Conditions








ThS_Index_Listener Equal to 0







Then - Actions








Trigger - Turn off ThS Loop <gen>







Else - Actions






-------- ------------------------------INDEXING END------------------------------ --------
TdC Config

Events


Map initialization

Conditions

Actions


-------- Is the caster alive?? --------


Set TdC_Condition_Config[0] = True


-------- Is the picked unit alive?? --------


Set TdC_Condition_Config[1] = True


-------- Is the picked unit belongs to the enemy of the caster?? --------


Set TdC_Condition_Config[2] = True


-------- Is the picked unit a structure?? --------


Set TdC_Condition_Config[3] = False


-------- Is the picked unit magic immune?? --------


Set TdC_Condition_Config[4] = False


Set TdC_Angle_Add_Quantity[1] = 90.00


Set TdC_Angle_Add_Quantity[2] = -90.00


Set TdC_Animation_Type = attack


Set TdC_Push_Speed[1] = 20.00


Set TdC_Push_Speed[2] = 20.00


Set TdC_Push_Speed[3] = 20.00


Set TdC_Push_Speed[4] = 20.00


Set TdC_Rush_Speed[1] = 28.00


Set TdC_Rush_Speed[2] = 28.00


Set TdC_Rush_Speed[3] = 28.00


Set TdC_Rush_Speed[4] = 28.00


Set TdC_Push_Duration[1] = 3.00


Set TdC_Push_Duration[2] = 3.00


Set TdC_Push_Duration[3] = 3.00


Set TdC_Push_Duration[4] = 3.00


Set TdC_Push_Damage[1] = 12.00


Set TdC_Push_Damage[2] = 12.00


Set TdC_Push_Damage[3] = 12.00


Set TdC_Push_Damage[4] = 12.00


Set TdC_Damage_Type[1] = Spells


Set TdC_Damage_Type[2] = Spells


Set TdC_Damage_Type[3] = Spells


Set TdC_Damage_Type[4] = Spells


Set TdC_SE_Stay_Distance = 100.00


Set TdC_Picked_Stay_Distance = 30.00


Set TdC_Rush_Pick_Range[1] = 200.00


Set TdC_Rush_Pick_Range[2] = 200.00


Set TdC_Rush_Pick_Range[3] = 200.00


Set TdC_Rush_Pick_Range[4] = 200.00


Set TdC_Push_Max_Distance[1] = 450.00


Set TdC_Push_Max_Distance[2] = 450.00


Set TdC_Push_Max_Distance[3] = 450.00


Set TdC_Push_Max_Distance[4] = 450.00


Set TdC_Dummy_ColourSet[1] = 0.00


Set TdC_Dummy_ColourSet[2] = 40.00


Set TdC_Dummy_ColourSet[3] = 100.00


Set TdC_Dummy_Transparency = 0.00


Set TdC_Dummy_Size[1] = 300.00


Set TdC_Dummy_Size[2] = 300.00


Set TdC_Dummy_Size[3] = 300.00


Set TdC_Dummy_Size[4] = 300.00


Set TdC_Dummy_Life_Time = 4.00


Set TdC_Effect_Model[1] = Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl


Set TdC_Attachment[2] = overhead


Set TdC_Effect_Model[2] = Abilities\Spells\Undead\FrostArmor\FrostArmorDamage.mdl


Set TdC_Attachment[3] = origin


Set TdC_Effect_Model[3] = Abilities\Spells\Orc\Voodoo\VoodooAura.mdl


Set TdC_Dummy_Type = Universal Dummy


Set TdC_Spell = Tidal Crush


Set TdC_Interval = 0.03


Trigger - Add to TdC Loop <gen> the event (Time - Every TdC_Interval seconds of game time)
TdC Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to TdC_Spell

Actions


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



If - Conditions




TdC_Index_Listener Equal to 0



Then - Actions




Trigger - Turn on TdC Loop <gen>



Else - Actions


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



If - Conditions




TdC_Recycle_Size Greater than 0



Then - Actions




Set TdC_Recycle_Size = (TdC_Recycle_Size - 1)




Set TdC_Current_Index = TdC_Recycle_Container[TdC_Recycle_Size]



Else - Actions




Set TdC_Current_Index = ThS_Index_Size




Set TdC_Index_Size = (TdC_Index_Size + 1)


Set TdC_Stage[TdC_Current_Index] = 1


Set TdC_Target_Point[TdC_Current_Index] = (Target point of ability being cast)


Set TdC_Caster[TdC_Current_Index] = (Triggering unit)


Animation - Play TdC_Caster[TdC_Current_Index]'s TdC_Animation_Type animation


Set TdC_Owner[TdC_Current_Index] = (Owner of TdC_Caster[TdC_Current_Index])


Set TdC_Level[TdC_Current_Index] = (Level of TdC_Spell for TdC_Caster[TdC_Current_Index])


Set TdC_Timer[TdC_Current_Index] = TdC_Push_Duration[TdC_Level[TdC_Current_Index]]


Set TdC_Index_Container[TdC_Index_Listener] = TdC_Current_Index


Set TdC_Index_Listener = (TdC_Index_Listener + 1)
TdC Loop

Events

Conditions

Actions


-------- ------------------------------INDEXING START------------------------------ --------


For each (Integer TdC_Loop) from 0 to (TdC_Index_Listener - 1), do (Actions)



Loop - Actions




Set TdC_Current_Index = TdC_Index_Container[TdC_Loop]




-------- ------------------------------INDEXING END------------------------------ --------




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





If - Conditions






(TdC_Caster[TdC_Current_Index] is alive) Equal to TdC_Condition_Config[0]





Then - Actions






Set TdC_Caster_Point = (Position of TdC_Caster[TdC_Current_Index])






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







If - Conditions








TdC_Stage[TdC_Current_Index] Equal to 1







Then - Actions








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









If - Conditions










(Distance between TdC_Caster_Point and TdC_Target_Point[TdC_Current_Index]) Greater than or equal to 128.00









Then - Actions










Set TdC_Angle[TdC_Current_Index] = (Angle from TdC_Caster_Point to TdC_Target_Point[TdC_Current_Index])










Custom script: call SetUnitX(udg_TdC_Caster[udg_TdC_Current_Index],GetUnitX(udg_TdC_Caster[udg_TdC_Current_Index]) + udg_TdC_Rush_Speed[udg_TdC_Level[udg_TdC_Current_Index]] * Cos(udg_TdC_Angle[udg_TdC_Current_Index] * bj_DEGTORAD))










Custom script: call SetUnitY(udg_TdC_Caster[udg_TdC_Current_Index],GetUnitY(udg_TdC_Caster[udg_TdC_Current_Index]) + udg_TdC_Rush_Speed[udg_TdC_Level[udg_TdC_Current_Index]] * Sin(udg_TdC_Angle[udg_TdC_Current_Index] * bj_DEGTORAD))










Set TdC_SE_Spawn = (TdC_Caster_Point offset by TdC_SE_Stay_Distance towards (TdC_Angle[TdC_Current_Index] + TdC_Angle_Add_Quantity[1]) degrees)










Special Effect - Create a special effect at TdC_SE_Spawn using TdC_Effect_Model[1]










Special Effect - Destroy (Last created special effect)










Custom script: call RemoveLocation(udg_TdC_SE_Spawn)










Set TdC_SE_Spawn = (TdC_Caster_Point offset by TdC_SE_Stay_Distance towards (TdC_Angle[TdC_Current_Index] + TdC_Angle_Add_Quantity[2]) degrees)










Special Effect - Create a special effect at TdC_SE_Spawn using TdC_Effect_Model[1]










Special Effect - Destroy (Last created special effect)










Custom script: call RemoveLocation(udg_TdC_SE_Spawn)










Set TdC_Group[TdC_Current_Index] = (Units within TdC_Rush_Pick_Range[TdC_Level[TdC_Current_Index]] of TdC_Caster_Point)










Unit Group - Pick every unit in TdC_Group[TdC_Current_Index] and do (Actions)











Loop - Actions












Set TdC_Picked_Unit = (Picked unit)












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













If - Conditions














(TdC_Picked_Unit is alive) Equal to TdC_Condition_Config[1]














(TdC_Picked_Unit belongs to an enemy of TdC_Owner[TdC_Current_Index]) Equal to TdC_Condition_Config[2]














(TdC_Picked_Unit is A structure) Equal to TdC_Condition_Config[3]














(TdC_Picked_Unit is Magic Immune) Equal to TdC_Condition_Config[4]













Then - Actions














Set TdC_Picked_Point = (Position of TdC_Picked_Unit)














Set TdC_Angle[TdC_Current_Index] = (Angle from TdC_Caster_Point to TdC_Picked_Point)














Set TdC_Carry_Point = (TdC_Caster_Point offset by TdC_Picked_Stay_Distance towards TdC_Angle[TdC_Current_Index] degrees)














Unit - Move TdC_Picked_Unit instantly to TdC_Carry_Point














Custom script: call RemoveLocation(udg_TdC_Picked_Point)














Custom script: call RemoveLocation(udg_TdC_Carry_Point)













Else - Actions










Custom script: call DestroyGroup(udg_TdC_Group[udg_TdC_Current_Index])









Else - Actions










Set TdC_Stage[TdC_Current_Index] = 2










Unit - Create 1 TdC_Dummy_Type for TdC_Owner[TdC_Current_Index] at TdC_Caster_Point facing Default building facing degrees










Set TdC_Dummy[TdC_Current_Index] = (Last created unit)










Animation - Change TdC_Dummy[TdC_Current_Index]'s vertex coloring to (TdC_Dummy_ColourSet[1]%, TdC_Dummy_ColourSet[2]%, TdC_Dummy_ColourSet[3]%) with TdC_Dummy_Transparency% transparency










Animation - Change TdC_Dummy[TdC_Current_Index]'s size to (TdC_Dummy_Size[TdC_Level[TdC_Current_Index]]%, 0.00%, 0.00%) of its original size










Special Effect - Create a special effect attached to the TdC_Attachment[3] of TdC_Dummy[TdC_Current_Index] using TdC_Effect_Model[3]










Set TdC_SE_1[TdC_Current_Index] = (Last created special effect)










Unit - Add a TdC_Dummy_Life_Time second Generic expiration timer to TdC_Dummy[TdC_Current_Index]










Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_TdC_Effect_Model[4], udg_TdC_Dummy[udg_TdC_Current_Index],udg_TdC_Attachment[4]))







Else - Actions








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









If - Conditions










TdC_Stage[TdC_Current_Index] Equal to 2









Then - Actions










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











If - Conditions












TdC_Timer[TdC_Current_Index] Greater than 0.00











Then - Actions












Set TdC_Timer[TdC_Current_Index] = (TdC_Timer[TdC_Current_Index] - TdC_Interval)












Unit - Move TdC_Dummy[TdC_Current_Index] instantly to TdC_Caster_Point












Set TdC_Group[TdC_Current_Index] = (Units within TdC_Push_Max_Distance[TdC_Level[TdC_Current_Index]] of TdC_Caster_Point)












Unit Group - Pick every unit in TdC_Group[TdC_Current_Index] and do (Actions)













Loop - Actions














Set TdC_Picked_Unit = (Picked unit)














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















If - Conditions
















(TdC_Picked_Unit is alive) Equal to TdC_Condition_Config[1]
















(TdC_Picked_Unit belongs to an enemy of TdC_Owner[TdC_Current_Index]) Equal to TdC_Condition_Config[2]
















(TdC_Picked_Unit is A structure) Equal to TdC_Condition_Config[3]
















(TdC_Picked_Unit is Magic Immune) Equal to TdC_Condition_Config[4]















Then - Actions
















Set TdC_Picked_Point = (Position of TdC_Picked_Unit)
















Set TdC_Angle[TdC_Current_Index] = (Angle from TdC_Caster_Point to TdC_Picked_Point)
















Custom script: call SetUnitX(udg_TdC_Picked_Unit,GetUnitX(udg_TdC_Picked_Unit) + udg_TdC_Push_Speed[udg_TdC_Level[udg_TdC_Current_Index]] * Cos(udg_TdC_Angle[udg_TdC_Current_Index] * bj_DEGTORAD))
















Custom script: call SetUnitY(udg_TdC_Picked_Unit,GetUnitY(udg_TdC_Picked_Unit) + udg_TdC_Push_Speed[udg_TdC_Level[udg_TdC_Current_Index]] * Sin(udg_TdC_Angle[udg_TdC_Current_Index] * bj_DEGTORAD))
















Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_TdC_Effect_Model[2], udg_TdC_Picked_Unit,udg_TdC_Attachment[2]))
















Unit - Cause TdC_Caster[TdC_Current_Index] to damage TdC_Picked_Unit, dealing TdC_Push_Damage[TdC_Level[TdC_Current_Index]] damage of attack type TdC_Damage_Type[TdC_Level[TdC_Current_Index]] and damage type Normal
















Custom script: call RemoveLocation(udg_TdC_Picked_Point)















Else - Actions












Custom script: call DestroyGroup(udg_TdC_Group[udg_TdC_Current_Index])











Else - Actions












Custom script: call DestroyEffect(udg_TdC_SE_1[udg_TdC_Current_Index])












-------- ------------------------------INDEXING START------------------------------ --------












Set TdC_Index_Listener = (TdC_Index_Listener - 1)












Set TdC_Index_Container[TdC_Loop] = TdC_Index_Container[TdC_Index_Listener]












Set TdC_Recycle_Container[TdC_Recycle_Size] = TdC_Current_Index












Set TdC_Recycle_Size = (TdC_Recycle_Size + 1)












Set TdC_Loop = (TdC_Loop - 1)












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













If - Conditions














TdC_Index_Listener Equal to 0













Then - Actions














Trigger - Turn off TdC Loop <gen>













Else - Actions












-------- ------------------------------INDEXING END------------------------------ --------









Else - Actions






Custom script: call RemoveLocation(udg_TdC_Caster_Point)





Else - Actions
TdC Cleaner

Events


Unit - A unit Dies

Conditions

Actions


Set TdC_Dying_Unit = (Triggering unit)


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



If - Conditions




(Unit-type of TdC_Dying_Unit) Equal to TdC_Dummy_Type



Then - Actions




Unit - Remove TdC_Dying_Unit from the game



Else - Actions
DiDs Config

Events


Map initialization

Conditions

Actions


-------- --------------------------------------------------------------------------------------------------------------------------- --------


-------- ----------------------------------------CONFIGURATION START---------------------------------------- --------


-------- --------------------------------------------------------------------------------------------------------------------------- --------


-------- Is the target alive?? --------


Set DiDs_Condition_Config[0] = True


-------- Is the target a flying unit?? --------


Set DiDs_Condition_Config[1] = True


-------- The Glyph duration until it starts pulling[Arrays are spell levels] --------


Set DiDs_Duration[1] = 2.00


Set DiDs_Duration[2] = 4.00


Set DiDs_Duration[3] = 6.00


Set DiDs_Duration[4] = 14.00


-------- The damage dealt in every "DiDs_SE_Interval" while pulling[Arrays are spell levels] --------


Set DiDs_Damage[1] = 10.00


Set DiDs_Damage[2] = 15.00


Set DiDs_Damage[3] = 20.00


Set DiDs_Damage[4] = 25.00


-------- The type of damage dealt[Arrays are spell levels] --------


Set DiDs_Attack_Type[1] = Spells


Set DiDs_Attack_Type[2] = Spells


Set DiDs_Attack_Type[3] = Spells


Set DiDs_Attack_Type[4] = Spells


-------- The size of the dummy[Arrays are spell levels] --------


Set DiDs_Dummy_Size[1] = 120.00


Set DiDs_Dummy_Size[2] = 120.00


Set DiDs_Dummy_Size[3] = 120.00


Set DiDs_Dummy_Size[4] = 120.00


-------- The max height that will be increased to[Arrays are spell levels] --------


Set DiDs_Max_Height[1] = 300.00


Set DiDs_Max_Height[2] = 300.00


Set DiDs_Max_Height[3] = 300.00


Set DiDs_Max_Height[4] = 300.00


-------- The speed of the pull[Arrays are spell levels] --------


Set DiDs_Pull_Speed[1] = 30.00


Set DiDs_Pull_Speed[2] = 30.00


Set DiDs_Pull_Speed[3] = 30.00


Set DiDs_Pull_Speed[4] = 30.00


-------- The interval of special effects[Arrays are spell levels] --------


Set DiDs_SE_Interval = 0.25


-------- The expiration timer of the dummy[Arrays are spell levels] --------


Set DiDs_Dummy_Death_Timer = 3.00


-------- The Lightning type[Arrays are spell levels] --------


Set DiDs_Lightning_Type = Chain Lightning - Primary


-------- The attachment of the special effect 1[Arrays are spell levels] --------


Set DiDs_Attachment[1] = chest


-------- The special created on the dummy which will display as Glyph[Arrays are spell levels] --------


Set DiDs_Effect_Model[1] = BlackTide.mdl


-------- The attachment of the special effect 2[Arrays are spell levels] --------


Set DiDs_Attachment[2] = overhead


-------- The special created on the target[Arrays are spell levels] --------


Set DiDs_Effect_Model[2] = Abilities\Spells\Items\AIso\BIsvTarget.mdl


-------- The attachment of the special effect 2[Arrays are spell levels] --------


Set DiDs_Attachment[3] = origin


-------- The special created on the target on damaging[Arrays are spell levels] --------


Set DiDs_Effect_Model[3] = Abilities\Weapons\Bolt\BoltImpact.mdl


-------- --------------------------------------------------------------------------------------------------------------------------- --------


-------- ----------------------------------------CONFIGURATION END---------------------------------------- --------


-------- --------------------------------------------------------------------------------------------------------------------------- --------


-------- --------------------------------------------------------------------------------------------------------------------------- --------


-------- ----------------------------------------BELOW CONFIGURABLES ARE FOR THOSE WHO KNOW WHAT THEY ARE DOING---------------------------------------- --------


-------- --------------------------------------------------------------------------------------------------------------------------- --------


Set DiDs_Spell = Dimensional Displacement


Set DiDs_Dummy_Type = Universal Dummy


Set DiDs_Interval = 0.03


Trigger - Add to DiDs Loop <gen> the event (Time - Every DiDs_Interval seconds of game time)
DiDs Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to DiDs_Spell

Actions


-------- --------------------------------------------------- --------


-------- ----------INDEXING START---------- --------


-------- --------------------------------------------------- --------


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



If - Conditions




DiDs_Index_Listener Equal to 0



Then - Actions




Trigger - Turn on DiDs Loop <gen>



Else - Actions


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



If - Conditions




DiDs_Recycle_Size Greater than 0



Then - Actions




Set DiDs_Recycle_Size = (DiDs_Recycle_Size - 1)




Set DiDs_Current_Index = DiDs_Recycle_Container[DiDs_Recycle_Size]



Else - Actions




Set DiDs_Current_Index = DiDs_Index_Size




Set DiDs_Index_Size = (DiDs_Index_Size + 1)


-------- --------------------------------------------------- --------


-------- ----------INDEXING END---------- --------


-------- --------------------------------------------------- --------


Set DiDs_Stage[DiDs_Current_Index] = 1


Set DiDs_Target[DiDs_Current_Index] = (Target unit of ability being cast)


Custom script: set udg_DiDs_SE_2[udg_DiDs_Current_Index] = AddSpecialEffectTarget(udg_DiDs_Effect_Model[2], udg_DiDs_Target[udg_DiDs_Current_Index], udg_DiDs_Attachment[2])


Set DiDs_Start_Point[DiDs_Current_Index] = (Position of DiDs_Target[DiDs_Current_Index])


Set DiDs_Caster[DiDs_Current_Index] = (Triggering unit)


Set DiDs_Owner[DiDs_Current_Index] = (Owner of DiDs_Caster[DiDs_Current_Index])


Set DiDs_Level[DiDs_Current_Index] = (Level of DiDs_Spell for DiDs_Caster[DiDs_Current_Index])


Set DiDs_Timer[DiDs_Current_Index] = DiDs_Duration[DiDs_Level[DiDs_Current_Index]]


Unit - Create 1 DiDs_Dummy_Type for DiDs_Owner[DiDs_Current_Index] at DiDs_Start_Point[DiDs_Current_Index] facing Default building facing degrees


Set DiDs_Dummy[DiDs_Current_Index] = (Last created unit)


Custom script: set udg_DiDs_SE_1[udg_DiDs_Current_Index] = AddSpecialEffectTarget(udg_DiDs_Effect_Model[1], udg_DiDs_Dummy[udg_DiDs_Current_Index], udg_DiDs_Attachment[1])


Unit - Create 1 DiDs_Dummy_Type for DiDs_Owner[DiDs_Current_Index] at DiDs_Start_Point[DiDs_Current_Index] facing Default building facing degrees


Set DiDs_Mid_Unit[DiDs_Current_Index] = (Last created unit)


Set DiDs_Mid_Point[DiDs_Current_Index] = (Position of DiDs_Mid_Unit[DiDs_Current_Index])


Lightning - Create a DiDs_Lightning_Type lightning effect from source DiDs_Mid_Point[DiDs_Current_Index] to target DiDs_Start_Point[DiDs_Current_Index]


Set DiDs_Lightning[DiDs_Current_Index] = (Last created lightning effect)


Custom script: call RemoveLocation(udg_DiDs_Start_Point[udg_DiDs_Current_Index])


-------- --------------------------------------------------- --------


-------- ----------INDEXING START---------- --------


-------- --------------------------------------------------- --------


Set DiDs_Index_Container[DiDs_Index_Listener] = DiDs_Current_Index


Set DiDs_Index_Listener = (DiDs_Index_Listener + 1)


-------- --------------------------------------------------- --------


-------- ----------INDEXING END---------- --------


-------- --------------------------------------------------- --------
DiDs Loop

Events

Conditions

Actions


-------- --------------------------------------------------- --------


-------- ----------INDEXING START---------- --------


-------- --------------------------------------------------- --------


For each (Integer DiDs_Loop) from 0 to (DiDs_Index_Listener - 1), do (Actions)



Loop - Actions




Set DiDs_Current_Index = DiDs_Index_Container[DiDs_Loop]




-------- --------------------------------------------------- --------




-------- ----------INDEXING END---------- --------




-------- --------------------------------------------------- --------




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





If - Conditions






DiDs_Stage[DiDs_Current_Index] Equal to 1





Then - Actions






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







If - Conditions








DiDs_Timer[DiDs_Current_Index] Greater than 0.00








(DiDs_Target[DiDs_Current_Index] is alive) Equal to DiDs_Condition_Config[0]







Then - Actions








Set DiDs_Timer[DiDs_Current_Index] = (DiDs_Timer[DiDs_Current_Index] - DiDs_Interval)








Set DiDs_Target_Point = (Position of DiDs_Target[DiDs_Current_Index])








Set DiDs_Distance[DiDs_Current_Index] = (Distance between DiDs_Target_Point and DiDs_Mid_Point[DiDs_Current_Index])








Set DiDs_Angle[DiDs_Current_Index] = (Angle from DiDs_Target_Point to DiDs_Mid_Point[DiDs_Current_Index])








Set DiDs_Move[DiDs_Current_Index] = (DiDs_Mid_Point[DiDs_Current_Index] offset by DiDs_Distance[DiDs_Current_Index] towards DiDs_Angle[DiDs_Current_Index] degrees)








Unit - Move DiDs_Dummy[DiDs_Current_Index] instantly to DiDs_Move[DiDs_Current_Index]








Custom script: call RemoveLocation(udg_DiDs_Move[udg_DiDs_Current_Index])








Set DiDs_Dummy_Point = (Position of DiDs_Dummy[DiDs_Current_Index])








Lightning - Move DiDs_Lightning[DiDs_Current_Index] to source DiDs_Dummy_Point and target DiDs_Target_Point








Custom script: call RemoveLocation(udg_DiDs_Dummy_Point)








Custom script: call RemoveLocation(udg_DiDs_Target_Point)







Else - Actions








Unit - Remove DiDs_Mid_Unit[DiDs_Current_Index] from the game








Custom script: call RemoveLocation(udg_DiDs_Mid_Point[udg_DiDs_Current_Index])








Set DiDs_Target_Point = (Position of DiDs_Target[DiDs_Current_Index])








Set DiDs_Dummy_Point = (Position of DiDs_Dummy[DiDs_Current_Index])








Set DiDs_End_Point[DiDs_Current_Index] = (Position of DiDs_Dummy[DiDs_Current_Index])








Set DiDs_MDistance[DiDs_Current_Index] = (Distance between DiDs_Dummy_Point and DiDs_Target_Point)








Custom script: call RemoveLocation(udg_DiDs_Dummy_Point)








Custom script: call RemoveLocation(udg_DiDs_Target_Point)








Custom script: if UnitAddAbility(udg_DiDs_Target[udg_DiDs_Current_Index],'Amrf') then








Custom script: call UnitRemoveAbility(udg_DiDs_Target[udg_DiDs_Current_Index],'Amrf')








Custom script: endif








Set DiDs_Stage[DiDs_Current_Index] = 2





Else - Actions






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







If - Conditions








DiDs_Stage[DiDs_Current_Index] Equal to 2







Then - Actions








Set DiDs_Dummy_Point = (Position of DiDs_Dummy[DiDs_Current_Index])








Set DiDs_Target_Point = (Position of DiDs_Target[DiDs_Current_Index])








Set DiDs_Distance[DiDs_Current_Index] = (Distance between DiDs_Dummy_Point and DiDs_Target_Point)








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









If - Conditions










(Distance between DiDs_Target_Point and DiDs_End_Point[DiDs_Current_Index]) Greater than or equal to 10.00










(DiDs_Target[DiDs_Current_Index] is alive) Equal to DiDs_Condition_Config[0]









Then - Actions










Custom script: set udg_TempX1 = GetLocationX(udg_DiDs_Dummy_Point)










Custom script: set udg_TempY1 = GetLocationY(udg_DiDs_Dummy_Point)










Custom script: set udg_TempZ1 = GetLocationZ(udg_DiDs_Dummy_Point) + GetUnitFlyHeight(udg_DiDs_Dummy[udg_DiDs_Current_Index])










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











If - Conditions












(DiDs_Target[DiDs_Current_Index] is A flying unit) Equal to DiDs_Condition_Config[1]











Then - Actions












Custom script: set udg_TempX2 = GetLocationX(udg_DiDs_Target_Point)












Custom script: set udg_TempY2 = GetLocationY(udg_DiDs_Target_Point)












Custom script: set udg_TempZ2 = GetLocationZ(udg_DiDs_Target_Point) + GetUnitFlyHeight(udg_DiDs_Target[udg_DiDs_Current_Index]) + 60











Else - Actions












Custom script: set udg_TempX2 = GetLocationX(udg_DiDs_Target_Point)












Custom script: set udg_TempY2 = GetLocationY(udg_DiDs_Target_Point)












Custom script: set udg_TempZ2 = GetLocationZ(udg_DiDs_Target_Point) + GetUnitFlyHeight(udg_DiDs_Target[udg_DiDs_Current_Index]) + 60










Custom script: call MoveLightningEx(udg_DiDs_Lightning[udg_DiDs_Current_Index], true, udg_TempX1, udg_TempY1, udg_TempZ1, udg_TempX2, udg_TempY2, udg_TempZ2)










Set DiDs_Angle[DiDs_Current_Index] = (Angle from DiDs_Target_Point to DiDs_Dummy_Point)










Custom script: call SetUnitX(udg_DiDs_Target[udg_DiDs_Current_Index],GetUnitX(udg_DiDs_Target[udg_DiDs_Current_Index]) + udg_DiDs_Pull_Speed[udg_DiDs_Level[udg_DiDs_Current_Index]] * Cos(udg_DiDs_Angle[udg_DiDs_Current_Index] * bj_DEGTORAD))










Custom script: call SetUnitY(udg_DiDs_Target[udg_DiDs_Current_Index],GetUnitY(udg_DiDs_Target[udg_DiDs_Current_Index]) + udg_DiDs_Pull_Speed[udg_DiDs_Level[udg_DiDs_Current_Index]] * Sin(udg_DiDs_Angle[udg_DiDs_Current_Index] * bj_DEGTORAD))










Set DiDs_Height[DiDs_Current_Index] = (((4.00 x DiDs_Max_Height[DiDs_Level[DiDs_Current_Index]]) / DiDs_MDistance[DiDs_Current_Index]) x ((DiDs_MDistance[DiDs_Current_Index] - DiDs_Distance[DiDs_Current_Index]) x (DiDs_Distance[DiDs_Current_Index] / DiDs_MDistance[DiDs_Current_Index])))










Animation - Change DiDs_Target[DiDs_Current_Index] flying height to DiDs_Height[DiDs_Current_Index] at 0.00










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











If - Conditions












DiDs_Timer[DiDs_Current_Index] Greater than 0.00











Then - Actions












Set DiDs_Timer[DiDs_Current_Index] = (DiDs_Timer[DiDs_Current_Index] - DiDs_Interval)











Else - Actions












Unit - Cause DiDs_Caster[DiDs_Current_Index] to damage DiDs_Target[DiDs_Current_Index], dealing DiDs_Damage[DiDs_Level[DiDs_Current_Index]] damage of attack type DiDs_Attack_Type[DiDs_Level[DiDs_Current_Index]] and damage type Normal












Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_DiDs_Effect_Model[3], udg_DiDs_Target[udg_DiDs_Current_Index],udg_DiDs_Attachment[3]))












Set DiDs_Timer[DiDs_Current_Index] = DiDs_SE_Interval









Else - Actions










Set DiDs_Stage[DiDs_Current_Index] = 3








Custom script: call RemoveLocation(udg_DiDs_Dummy_Point)








Custom script: call RemoveLocation(udg_DiDs_Target_Point)







Else - Actions








Animation - Change DiDs_Target[DiDs_Current_Index] flying height to 0.00 at 0.00








Lightning - Destroy DiDs_Lightning[DiDs_Current_Index]








Custom script: call DestroyEffect(udg_DiDs_SE_1[udg_DiDs_Current_Index])








Custom script: call DestroyEffect(udg_DiDs_SE_2[udg_DiDs_Current_Index])








Custom script: call RemoveLocation(udg_DiDs_End_Point[udg_DiDs_Current_Index])








Unit - Add a DiDs_Dummy_Death_Timer second Generic expiration timer to DiDs_Dummy[DiDs_Current_Index]








-------- --------------------------------------------------- --------








-------- ----------INDEXING START---------- --------








-------- --------------------------------------------------- --------








Set DiDs_Index_Listener = (DiDs_Index_Listener - 1)








Set DiDs_Index_Container[DiDs_Loop] = DiDs_Index_Container[DiDs_Index_Listener]








Set DiDs_Recycle_Container[DiDs_Current_Index] = DiDs_Current_Index








Set DiDs_Recycle_Size = (DiDs_Recycle_Size + 1)








Set DiDs_Loop = (DiDs_Loop - 1)








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









If - Conditions










DiDs_Index_Listener Equal to 0









Then - Actions










Trigger - Turn off DiDs Loop <gen>









Else - Actions








-------- --------------------------------------------------- --------








-------- ----------INDEXING END---------- --------








-------- --------------------------------------------------- --------
DiDs Cleaner

Events


Unit - A unit Dies

Conditions

Actions


Set DiDs_DyingUnit = (Triggering unit)


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



If - Conditions




(Unit-type of DiDs_DyingUnit) Equal to DiDs_Dummy_Type



Then - Actions




Unit - Remove DiDs_DyingUnit from the game



Else - Actions