1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Choose your means of doom in the 17th Mini Mapping Contest Poll.
    Dismiss Notice
  3. A slave to two rhythms, the 22nd Terraining Contest is here.
    Dismiss Notice
  4. The heavens smile on the old faithful. The 16th Techtree Contest has begun.
    Dismiss Notice
  5. The die is cast - the 6th Melee Mapping Contest results have been announced. Onward to the Hive Cup!
    Dismiss Notice
  6. The glory of the 20th Icon Contest is yours for the taking!
    Dismiss Notice
  7. Shoot to thrill, play to kill. Sate your hunger with the 33rd Modeling Contest!
    Dismiss Notice
  8. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Trigger Viewer

Sweeping Beam.w3x
Variables
Sweep
Ini
Sweep Cast
Sweep Loop
Map
Revive
Enter map-specific custom script code below. This text will be included in the map script after variables are declared and before any trigger code.

		
Name Type Is Array Initial Value
a real No
g group No
i integer No
i2 integer No
r real No
r2 real No
Sweep_Caster unit Yes
Sweep_Data real Yes
Sweep_DataCount integer No
Sweep_Group group Yes
Sweep_Lightning lightning Yes
Sweep_Max integer No
u unit No
u2 unit No
x real No
x2 real No
y real No
y2 real No
zLoc location No
Ini
  Events
    Map initialization
  Conditions
  Actions
    Set VariableSet Sweep_DataCount = 14
    Set VariableSet zLoc = (Point(0, 0))
Sweep Cast
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to S|cffffcc00w|reeping Beam
  Actions
    -------- Caster --------
    Set VariableSet u = (Triggering unit)
    -------- Caster coords --------
    Custom script: set udg_x2 = GetUnitX(udg_u)
    Custom script: set udg_y2 = GetUnitY(udg_u)
    -------- Two beams just look best but other numbers will work, too --------
    Set VariableSet i2 = 2
    For each (Integer i) from 1 to i2, do (Actions)
      Loop - Actions
        -------- Radius of beam --------
        Set VariableSet r = 200.00
        -------- Coords of target point --------
        Custom script: set udg_x = GetSpellTargetX()
        Custom script: set udg_y = GetSpellTargetY()
        -------- Offset angle of beam --------
        Set VariableSet a = ((Atan2((y - y2), (x - x2))) + ((Real(((360 / i2) x i))) + 90.00))
        -------- Calculating beam target point coords based on that --------
        Set VariableSet x = (x + (r x (Cos(a))))
        Set VariableSet y = (y + (r x (Sin(a))))
        -------- Direction of beam --------
        Set VariableSet a = (a + 180.00)
        -------- Create sweep lightning --------
        Set VariableSet Sweep_Max = (Sweep_Max + 1)
        Lightning - Create a Finger of Death lightning effect from source zLoc to target zLoc
        Set VariableSet Sweep_Lightning[Sweep_Max] = (Last created lightning effect)
        Custom script: if udg_Sweep_Group[udg_i] == null then
        Custom script: set udg_Sweep_Group[udg_i] = CreateGroup()
        Custom script: endif
        -------- Caster again --------
        Set VariableSet Sweep_Caster[Sweep_Max] = u
        -------- Start distance value (should be 0) --------
        Set VariableSet Sweep_Data[(Sweep_Max x Sweep_DataCount)] = 0.00
        -------- Distance the beam will travel --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 1)] = (r x 2.00)
        -------- Speed of beam (will move 8 every 1/0.03 sec) --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 2)] = 8.00
        -------- X of target point --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 3)] = x
        -------- Y of target point --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 4)] = y
        -------- X component of speed --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 5)] = (Sweep_Data[((Sweep_Max x Sweep_DataCount) + 2)] x (Cos(a)))
        -------- Y component of speed --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 6)] = (Sweep_Data[((Sweep_Max x Sweep_DataCount) + 2)] x (Sin(a)))
        -------- Caster beam offset distance --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 7)] = 70.00
        -------- Caster beam offset angle --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 8)] = (a - ((Atan2((y - y2), (x - x2))) + 90.00))
        -------- Caster beam height offset --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 9)] = 130.00
        -------- Aoe of beam --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 10)] = 150.00
        -------- Damage of beam --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 11)] = 50.00
        -------- Sfx start count --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 12)] = 0.00
        -------- Sfx max count --------
        Set VariableSet Sweep_Data[((Sweep_Max x Sweep_DataCount) + 13)] = 3.00
    Trigger - Turn on Sweep_Loop <gen>
Sweep Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    -------- Standard d4rk_g4nd4lf indexing --------
    For each (Integer i) from 1 to Sweep_Max, do (Actions)
      Loop - Actions
        Set VariableSet u = Sweep_Caster[i]
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            u Not equal to No unit
            (Life of u) Greater than 0.00
            Sweep_Data[(i x Sweep_DataCount)] Less than Sweep_Data[((i x Sweep_DataCount) + 1)]
          Then - Actions
            -------- Count on distance --------
            Set VariableSet Sweep_Data[(i x Sweep_DataCount)] = (Sweep_Data[(i x Sweep_DataCount)] + Sweep_Data[((i x Sweep_DataCount) + 2)])
            -------- Lightning coords caster --------
            Custom script: set udg_x2 = GetUnitX(udg_u)
            Custom script: set udg_y2 = GetUnitY(udg_u)
            -------- Apply offset based on facing --------
            Set VariableSet a = ((Facing of u) + (Sweep_Data[((i x Sweep_DataCount) + 8)] - 90.00))
            Set VariableSet x2 = (x2 + (Sweep_Data[((i x Sweep_DataCount) + 7)] x (Cos(a))))
            Set VariableSet y2 = (y2 + (Sweep_Data[((i x Sweep_DataCount) + 7)] x (Sin(a))))
            -------- Get terrain z-height --------
            Custom script: call MoveLocation(udg_zLoc, udg_x2, udg_y2)
            Custom script: set udg_r2 = GetLocationZ(udg_zLoc)
            -------- Apply z offset --------
            Set VariableSet r2 = (r2 + Sweep_Data[((i x Sweep_DataCount) + 9)])
            -------- Lightning coords target point --------
            -------- Move lightning target coords --------
            Set VariableSet x = (Sweep_Data[((i x Sweep_DataCount) + 3)] + Sweep_Data[((i x Sweep_DataCount) + 5)])
            Set VariableSet y = (Sweep_Data[((i x Sweep_DataCount) + 4)] + Sweep_Data[((i x Sweep_DataCount) + 6)])
            -------- Save new position --------
            Set VariableSet Sweep_Data[((i x Sweep_DataCount) + 3)] = x
            Set VariableSet Sweep_Data[((i x Sweep_DataCount) + 4)] = y
            Custom script: call MoveLocation(udg_zLoc, udg_x, udg_y)
            -------- Create special effect every x iterations --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Sweep_Data[((i x Sweep_DataCount) + 12)] Greater than or equal to Sweep_Data[((i x Sweep_DataCount) + 13)]
              Then - Actions
                Set VariableSet Sweep_Data[((i x Sweep_DataCount) + 12)] = 0.00
                Special Effect - Create a special effect at zLoc using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
                Special Effect - Destroy (Last created special effect)
              Else - Actions
                Set VariableSet Sweep_Data[((i x Sweep_DataCount) + 12)] = (Sweep_Data[((i x Sweep_DataCount) + 12)] + 1)
            Set VariableSet r = Sweep_Data[((i x Sweep_DataCount) + 10)]
            -------- Pick units in range --------
            Custom script: call GroupEnumUnitsInRange(udg_g, udg_x, udg_y, udg_r, null)
            Unit Group - Pick every unit in g and do (Actions)
              Loop - Actions
                Set VariableSet u2 = (Picked unit)
                -------- Check if picked unit is valid target --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Life of u2) Greater than 0.00
                    (u2 is A structure) Equal to False
                    (u2 is A flying unit) Equal to False
                    (u2 is Mechanical) Equal to False
                    (u2 is Magic Immune) Equal to False
                    (u2 is in Sweep_Group[i].) Equal to False
                    (u2 belongs to an enemy of (Owner of u).) Equal to True
                  Then - Actions
                    -------- Add to group so it won't get damaged twice --------
                    Unit Group - Add u2 to Sweep_Group[i]
                    -------- Damage --------
                    Unit - Cause u to damage u2, dealing Sweep_Data[((i x Sweep_DataCount) + 11)] damage of attack type Spells and damage type Unknown
                  Else - Actions
            -------- Move lightning --------
            Custom script: call MoveLightningEx(udg_Sweep_Lightning[udg_i], true, udg_x, udg_y, GetLocationZ(udg_zLoc), udg_x2, udg_y2, udg_r2)
          Else - Actions
            -------- Clean up and resort data --------
            Set VariableSet Sweep_Caster[i] = Sweep_Caster[Sweep_Max]
            Lightning - Destroy Sweep_Lightning[i]
            Set VariableSet Sweep_Lightning[i] = Sweep_Lightning[Sweep_Max]
            Unit Group - Remove all units from Sweep_Group[i].
            Unit Group - Add all units of Sweep_Group[Sweep_Max] to Sweep_Group[i]
            Unit Group - Remove all units from Sweep_Group[Sweep_Max].
            For each (Integer i2) from 0 to (Sweep_DataCount - 1), do (Actions)
              Loop - Actions
                Set VariableSet Sweep_Data[((i x Sweep_DataCount) + i2)] = Sweep_Data[((Sweep_Max x Sweep_DataCount) + i2)]
            Set VariableSet Sweep_Max = (Sweep_Max - 1)
            Set VariableSet i = (i - 1)
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Sweep_Max Less than 1
              Then - Actions
                Trigger - Turn off (This trigger)
              Else - Actions
Revive
  Events
    Unit - A unit Dies
  Conditions
  Actions
    Wait 5.00 game-time seconds
    Custom script: call MoveLocation(udg_zLoc, GetUnitX(GetTriggerUnit()), GetUnitY(GetTriggerUnit()))
    Unit - Create 1.(Unit-type of (Triggering unit)) for (Owner of (Triggering unit)) at zLoc facing (Facing of (Triggering unit)) degrees
    Unit - Remove (Triggering unit) from the game