• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

Eye Beam

Level 24
Joined
Feb 9, 2009
Messages
1,787
lightninglist.PNG

(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)
Cast
  • 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])
Periodic
  • 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])
Issue Order - Change Targeting direction
  • 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

  • Eyebeam - for C.B.King.w3x
    31.9 KB · Views: 22
  • lightninglist.PNG
    lightninglist.PNG
    755.8 KB · Views: 116
Last edited:
Top