- Joined
- Feb 9, 2009
- Messages
- 1,800
(credits to @-Derp- for his Lightning Tutorial and this handy image.)
Config
-
Eye Beam Config
-
Events
-
Map initialization
-
-
Conditions
-
Actions
-
Set EyBe_Config_Ability[0] = Eye Beam
-
Set EyBe_Config_Damage[0] = 30.00
-
Set EyBe_Config_Duration[0] = 5.00
-
Set EyBe_Config_Effect_Path[0] = Abilities\Weapons\IllidanMissile\IllidanMissile.mdl
-
Set EyBe_Config_Effect_Path[1] = Abilities\Spells\Items\AIfb\AIfbSpecialArt.mdl
-
Set EyBe_Config_Height[0] = 80.00
-
Set EyBe_Config_Periodic = 0.05
-
Set EyBe_Config_Range[0] = 1050.00
-
Set EyBe_Config_Width[0] = 96.00
-
Trigger - Add to Eye Beam Periodic <gen> the event (Time - Every EyBe_Config_Periodic seconds of game time)
-
-
-
Eye Beam Cast
-
Events
-
Unit - A unit Starts the effect of an ability
-
-
Conditions
-
(Ability being cast) Equal to Eye Beam
-
-
Actions
-
Set EyBe_Index = (EyBe_Index + 1)
-
Set EyBe_Point[0] = (Position of (Triggering unit))
-
Set EyBe_Point[1] = (Target point of ability being cast)
-
Set EyBe_Point[2] = (EyBe_Point[0] offset by EyBe_Config_Range[0] towards (Angle from EyBe_Point[0] to EyBe_Point[1]) degrees)
-
Custom script: set udg_EyBe_Point_Z_Height = GetLocationZ(udg_EyBe_Point[0])
-
Set EyBe_XYZ[1] = (X of EyBe_Point[0])
-
Set EyBe_XYZ[2] = (Y of EyBe_Point[0])
-
Set EyBe_XYZ[3] = ((Current flying height of EyBe_Caster[EyBe_Loop]) + EyBe_Config_Height[0])
-
Custom script: set udg_EyBe_Point_Z_Height = GetLocationZ(udg_EyBe_Point[2])
-
Set EyBe_XYZ2[1] = (X of EyBe_Point[2])
-
Set EyBe_XYZ2[2] = (Y of EyBe_Point[2])
-
Set EyBe_XYZ2[3] = (EyBe_Config_Height[0] + EyBe_Point_Z_Height)
-
Custom script: set udg_EyBe_Lightning[(udg_EyBe_Index)] = AddLightningEx("MBUR", true, udg_EyBe_XYZ[1], udg_EyBe_XYZ[2], udg_EyBe_XYZ[3], udg_EyBe_XYZ2[1], udg_EyBe_XYZ2[2], udg_EyBe_XYZ2[3])
-
Set EyBe_Damage[EyBe_Index] = EyBe_Config_Damage[0]
-
Set EyBe_Duration[EyBe_Index] = EyBe_Config_Duration[0]
-
Set EyBe_Caster[EyBe_Index] = (Triggering unit)
-
Unit - Set EyBe_Caster[EyBe_Index] movement speed to 0.01
-
Unit - Make EyBe_Caster[EyBe_Loop] face EyBe_Point[2] over 0.00 seconds
-
Special Effect - Create a special effect at EyBe_Point[2] using EyBe_Config_Effect_Path[0]
-
Special Effect - Set Scale of (Last created special effect) to 2.50
-
Set EyBe_Point_Node[EyBe_Index] = (Last created special effect)
-
Special Effect - Set Position - Z of (Last created special effect) to (EyBe_Point_Z_Height + EyBe_Config_Height[0])
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
EyBe_Index Equal to 1
-
-
Then - Actions
-
Trigger - Turn on Eye Beam Periodic <gen>
-
Trigger - Turn on Eye Beam Change Targeting Direction <gen>
-
-
Else - Actions
-
-
Custom script: call RemoveLocation(udg_EyBe_Point[0])
-
Custom script: call RemoveLocation(udg_EyBe_Point[1])
-
Custom script: call RemoveLocation(udg_EyBe_Point[2])
-
-
-
Eye Beam Periodic
-
Events
-
Conditions
-
Actions
-
For each (Integer EyBe_Loop) from 1 to EyBe_Index, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Or - Any (Conditions) are true
-
Conditions
-
EyBe_Duration[EyBe_Loop] Less than or equal to 0.00
-
(EyBe_Caster[EyBe_Loop] is alive) Equal to False
-
(EyBe_Caster[EyBe_Loop] has buff Stunned) Equal to True
-
(EyBe_Caster[EyBe_Loop] has buff Stunned (Pause)) Equal to True
-
(EyBe_Caster[EyBe_Loop] has buff Silence) Equal to True
-
(EyBe_Caster[EyBe_Loop] has buff Sleep) Equal to True
-
-
-
-
Then - Actions
-
-------- --------
-
Lightning - Destroy EyBe_Lightning[EyBe_Loop]
-
Special Effect - Destroy EyBe_Point_Node[EyBe_Loop]
-
Unit - Set EyBe_Caster[EyBe_Index] movement speed to (Default movement speed of EyBe_Caster[EyBe_Loop])
-
-------- --------
-
Set EyBe_Damage[EyBe_Loop] = EyBe_Damage[EyBe_Index]
-
Set EyBe_Duration[EyBe_Loop] = EyBe_Duration[EyBe_Index]
-
Set EyBe_Caster[EyBe_Loop] = EyBe_Caster[EyBe_Index]
-
Set EyBe_Point_Node[EyBe_Loop] = EyBe_Point_Node[EyBe_Index]
-
Set EyBe_Lightning[EyBe_Loop] = EyBe_Lightning[EyBe_Index]
-
Set EyBe_Loop = (EyBe_Loop - 1)
-
Set EyBe_Index = (EyBe_Index - 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
EyBe_Index Equal to 0
-
-
Then - Actions
-
Trigger - Turn off (This trigger)
-
Trigger - Turn off Eye Beam Change Targeting Direction <gen>
-
-
Else - Actions
-
-
-
Else - Actions
-
Set EyBe_Point[3] = (Position of EyBe_Caster[EyBe_Loop])
-
Set EyBe_Point[5] = (Point((Position - X of EyBe_Point_Node[EyBe_Loop]), (Position - Y of EyBe_Point_Node[EyBe_Loop])))
-
-------- --------
-
Custom script: set udg_EyBe_Point_Z_Height = GetLocationZ(udg_EyBe_Point[3])
-
Set EyBe_XYZ[4] = (X of EyBe_Point[3])
-
Set EyBe_XYZ[5] = (Y of EyBe_Point[3])
-
Set EyBe_XYZ[6] = ((Current flying height of EyBe_Caster[EyBe_Loop]) + EyBe_Config_Height[0])
-
Custom script: set udg_EyBe_Point_Z_Height = GetLocationZ(udg_EyBe_Point[5])
-
Set EyBe_XYZ2[4] = (X of EyBe_Point[5])
-
Set EyBe_XYZ2[5] = (Y of EyBe_Point[5])
-
Set EyBe_XYZ2[6] = (EyBe_Config_Height[0] + EyBe_Point_Z_Height)
-
Custom script: call MoveLightningEx(udg_EyBe_Lightning[(udg_EyBe_Loop)], true, udg_EyBe_XYZ[4], udg_EyBe_XYZ[5], udg_EyBe_XYZ[6], udg_EyBe_XYZ2[4], udg_EyBe_XYZ2[5], udg_EyBe_XYZ2[6])
-
-------- --------
-
Unit - Make EyBe_Caster[EyBe_Loop] face EyBe_Point[5] over 0.05 seconds
-
-------- --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(EyBe_Duration[EyBe_Loop] mod 0.50) Equal to 0.45
-
-
Then - Actions
-
-------- Width --------
-
Set EyBe_Enum_Value[0] = EyBe_Config_Width[0]
-
-------- Width --------
-
Set EyBe_Enum_Point[1] = EyBe_Point[3]
-
Set EyBe_Enum_Point[2] = EyBe_Point[5]
-
Set EyBe_Enum_Point[3] = (EyBe_Enum_Point[1] offset by EyBe_Config_Range[0] towards (Angle from EyBe_Enum_Point[1] to EyBe_Enum_Point[2]) degrees)
-
Set EyBe_Enum_Value[1] = (X of EyBe_Enum_Point[1])
-
Set EyBe_Enum_Value[2] = (Y of EyBe_Enum_Point[1])
-
Set EyBe_Enum_Value[3] = (X of EyBe_Enum_Point[3])
-
Set EyBe_Enum_Value[4] = (Y of EyBe_Enum_Point[3])
-
-------- Midpoint --------
-
Set EyBe_Enum_Point[4] = (Point(((EyBe_Enum_Value[3] + EyBe_Enum_Value[1]) / 2.00), ((EyBe_Enum_Value[4] + EyBe_Enum_Value[2]) / 2.00)))
-
-------- Midpoint --------
-
-------- --------
-
-------- Distance --------
-
Set EyBe_Enum_Value[5] = (Distance between EyBe_Enum_Point[3] and EyBe_Enum_Point[1])
-
-------- Distance --------
-
-------- --------
-
-------- --------
-
-------- --------
-
-------- --------
-
-------- set bj_wantDestroyGroup = true --------
-
Custom script: set bj_wantDestroyGroup = true
-
Unit Group - Pick every unit in (Units within ((EyBe_Enum_Value[5] / 2.00) + EyBe_Enum_Value[0]) of EyBe_Enum_Point[4]) and do (Actions)
-
Loop - Actions
-
-------- C --------
-
Set EyBe_Enum_Point[5] = (Position of (Picked unit))
-
-------- Cx --------
-
Set EyBe_Enum_Value[6] = (X of EyBe_Enum_Point[5])
-
-------- Cy --------
-
Set EyBe_Enum_Value[7] = (Y of EyBe_Enum_Point[5])
-
-------- --------
-
-------- ABx --------
-
Set EyBe_Enum_Value[8] = (EyBe_Enum_Value[3] - EyBe_Enum_Value[1])
-
-------- ABy --------
-
Set EyBe_Enum_Value[9] = (EyBe_Enum_Value[4] - EyBe_Enum_Value[2])
-
-------- --------
-
-------- ACx --------
-
Set EyBe_Enum_Value[10] = (EyBe_Enum_Value[6] - EyBe_Enum_Value[1])
-
-------- ACy --------
-
Set EyBe_Enum_Value[11] = (EyBe_Enum_Value[7] - EyBe_Enum_Value[2])
-
-------- --------
-
-------- Distance Along Line --------
-
Set EyBe_Enum_Value[12] = (((EyBe_Enum_Value[8] x EyBe_Enum_Value[10]) + (EyBe_Enum_Value[11] x EyBe_Enum_Value[9])) / (Square root(((EyBe_Enum_Value[8] x EyBe_Enum_Value[8]) + (EyBe_Enum_Value[9] x EyBe_Enum_Value[9])))))
-
-------- --------
-
-------- Distance From Line --------
-
Set EyBe_Enum_Value[13] = (((EyBe_Enum_Value[8] x EyBe_Enum_Value[11]) - (EyBe_Enum_Value[10] x EyBe_Enum_Value[9])) / (Square root(((EyBe_Enum_Value[8] x EyBe_Enum_Value[8]) + (EyBe_Enum_Value[9] x EyBe_Enum_Value[9])))))
-
-------- --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
EyBe_Enum_Value[12] Less than or equal to EyBe_Enum_Value[5]
-
EyBe_Enum_Value[12] Greater than or equal to 0.00
-
EyBe_Enum_Value[13] Greater than (EyBe_Enum_Value[0] / -2.00)
-
EyBe_Enum_Value[13] Less than (EyBe_Enum_Value[0] / 2.00)
-
((Picked unit) is A structure) Equal to False
-
((Picked unit) is Magic Immune) Equal to False
-
((Picked unit) is dead) Equal to False
-
((Picked unit) belongs to an ally of (Triggering player)) Equal to False
-
(Picked unit) Not equal to EyBe_Caster[EyBe_Loop]
-
-
-
-
Then - Actions
-
Unit - Cause EyBe_Caster[EyBe_Loop] to damage (Picked unit), dealing (EyBe_Damage[EyBe_Loop] x 0.50) damage of attack type Spells and damage type Universal
-
Special Effect - Create a special effect attached to the chest of (Picked unit) using EyBe_Config_Effect_Path[1]
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
-
Custom script: call RemoveLocation(udg_EyBe_Enum_Point[5])
-
-
-
Custom script: call RemoveLocation(udg_EyBe_Enum_Point[1])
-
Custom script: call RemoveLocation(udg_EyBe_Enum_Point[2])
-
Custom script: call RemoveLocation(udg_EyBe_Enum_Point[3])
-
Custom script: call RemoveLocation(udg_EyBe_Enum_Point[4])
-
-
Else - Actions
-
-
Set EyBe_Duration[EyBe_Loop] = (EyBe_Duration[EyBe_Loop] - EyBe_Config_Periodic)
-
Unit - Order EyBe_Caster[EyBe_Loop] to Hold Position
-
Custom script: call RemoveLocation(udg_EyBe_Point[3])
-
Custom script: call RemoveLocation(udg_EyBe_Point[5])
-
Custom script: call RemoveLocation(udg_EyBe_Point[6])
-
-
-
-
-
-
-
Eye Beam Change Targeting Direction
-
Events
-
Unit - A unit Is issued an order targeting a point
-
Unit - A unit Is issued an order targeting an object
-
-
Conditions
-
(Level of EyBe_Config_Ability[0] for (Triggering unit)) Greater than 0
-
(Issued order) Equal to (Order(smart))
-
-
Actions
-
For each (Integer EyBe_Loop) from 1 to EyBe_Index, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
EyBe_Caster[EyBe_Loop] Equal to (Triggering unit)
-
-
Then - Actions
-
Set EyBe_Point[7] = (Position of EyBe_Caster[EyBe_Loop])
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Target unit of issued order) Equal to No unit
-
-
Then - Actions
-
Set EyBe_Point[4] = (Target point of issued order)
-
-
Else - Actions
-
Set EyBe_Point[4] = (Position of (Target unit of issued order))
-
-
-
Set EyBe_Point[8] = (EyBe_Point[7] offset by EyBe_Config_Range[0] towards (Angle from EyBe_Point[7] to EyBe_Point[4]) degrees)
-
Special Effect - Set Position of EyBe_Point_Node[EyBe_Loop] to EyBe_Point[8]
-
Special Effect - Set Position - Z of EyBe_Point_Node[EyBe_Loop] to (EyBe_Point_Z_Height + EyBe_Config_Height[0])
-
Unit - Make (Triggering unit) face EyBe_Point[4] over 0.05 seconds
-
Custom script: call RemoveLocation(udg_EyBe_Point[4])
-
Custom script: call RemoveLocation(udg_EyBe_Point[7])
-
Custom script: call RemoveLocation(udg_EyBe_Point[8])
-
-
Else - Actions
-
-
-
-
-
Attachments
Last edited: