- Joined
- Feb 9, 2009
- Messages
- 1,787
(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)
-
Events
-
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
-
If - Conditions
- Custom script: call RemoveLocation(udg_EyBe_Point[0])
- Custom script: call RemoveLocation(udg_EyBe_Point[1])
- Custom script: call RemoveLocation(udg_EyBe_Point[2])
-
Events
-
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
-
Conditions
-
Or - Any (Conditions) are 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
-
If - Conditions
-
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]
-
Conditions
-
And - All (Conditions) are true
-
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
-
If - Conditions
- Custom script: call RemoveLocation(udg_EyBe_Enum_Point[5])
-
Loop - Actions
- 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
-
If - Conditions
- 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])
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
For each (Integer EyBe_Loop) from 1 to EyBe_Index, do (Actions)
-
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))
-
If - Conditions
- 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
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
For each (Integer EyBe_Loop) from 1 to EyBe_Index, do (Actions)
-
Events
Attachments
Last edited: