• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Spells by Stef2 v1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
My first spellpack. When I first started, I didn't know much about spell making, and so eventually i ended up with 6 heroes with 7 spells each, since I didn't feel happy with majority of them, I cut off the first 5 heroes. So here I'm showing you my last spells which are probably the best I made so far. I also tried to make environment as pretty as possible.

Thanks to:

WILL THE ALMIGHTY
JetFangInferno
shamanyouranus
tranquil
callahan

for their models. Enjoy.

Keywords:
spell,pack,fire,lightning
Contents

Spellz (Map)

Reviews
12th Dec 2015 IcemanBo: For long time as NeedsFix. Rejected. Bribe: Using Player 1 (Red) as the dummy owner is a bad idea as it can populate that guy's food count/score. "Unit Group - Pick every unit in (Units of type (" You forgot a "set...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: For long time as NeedsFix. Rejected.

Bribe:

Using Player 1 (Red) as the dummy owner is a bad idea as it can populate that guy's food count/score.

"Unit Group - Pick every unit in (Units of type ("

You forgot a "set bj_wantDestroyGroup = true" before this line.

These two lines leak locations:

  • Lightning - Create a Finger of Death lightning effect from source (Position of bw_dummy_array[bw_int]) to target (Position of bw_dummy_array[(bw_int + 1)])
  • Else -
    • Lightning - Create a Finger of Death lightning effect from source (Position of bw_dummy_array[bw_int]) to target (Position of bw_dummy_array[1])
"Countdown Timer - Start bw_timer as a One-shot timer that will expire in 2.00 seconds"

bw_timer is just one timer for all casts which means it won't be MUI when cast more than once.

Just a quick glance at your other spells I can see plenty of MUI problems and leaks.
 
Level 7
Joined
Apr 12, 2011
Messages
124
Please post codes by using
(WITHOUT THE @'s)
[@HIDDEN="CODE"]
[@TRIGGER]
(YOUR CODE)
[/TRIGGER]
[@/HIDDEN]

You can copy the trigger by using "copy as text"
Select the trigger, move your mouse inside the trigger, scroll up, right click the name an select "Copy as text"

EDIT:

Although this isn't MUI it's one of the best ideas/effects i've ever seen. If you make them MUI this will be a fav spellpack ^^)b
 
Last edited:
Level 10
Joined
Apr 25, 2009
Messages
296
Please remove all imported data. Spells should use the pre-generated models created by Blizzard.

  • Blast wave
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Blast wave
    • Actions
      • Set Bw_caster = (Triggering unit)
      • Set Bw_check = False
      • Set Bw_loc = (Position of Bw_caster)
      • Set Bw_angle = 0.00
      • Set bw_int = 1
      • For each (Integer A) from 1 to 24, do (Actions)
        • Loop - Actions
          • Unit - Create 1 bw dummy for Player 1 (Red) at (Bw_loc offset by 100.00 towards Bw_angle degrees) facing Bw_angle degrees
          • Unit - Add a 4.00 second Generic expiration timer to (Last created unit)
          • Unit - Add Crow Form to (Last created unit)
          • Unit - Remove Crow Form from (Last created unit)
          • Unit Group - Add (Last created unit) to bw_dummy_grp
          • Set bw_dummy_array[bw_int] = (Last created unit)
          • Set Bw_angle = (Bw_angle + 15.00)
          • Set bw_angle_array[bw_int] = (bw_angle_array[(bw_int - 1)] + 15.00)
          • Set bw_int = (bw_int + 1)
      • Set bw_int = 1
      • Unit Group - Pick every unit in (Units of type ) and do (Actions)
        • Loop - Actions
      • Unit - Make (Picked unit) face Bw_caster over 0.01 seconds
      • For each (Integer B) from 1 to 24, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bw_int Equal to 23
            • Then - Actions
              • Lightning - Create a Finger of Death lightning effect from source (Position of bw_dummy_array[bw_int]) to target (Position of bw_dummy_array[(bw_int + 1)])
            • Else - Actions
              • Lightning - Create a Finger of Death lightning effect from source (Position of bw_dummy_array[bw_int]) to target (Position of bw_dummy_array[1])
          • Set bw_lightning[bw_int] = (Last created lightning effect)
          • Set bw_int = (bw_int + 1)
      • Trigger - Turn on Bw move <gen>
      • Countdown Timer - Start bw_timer as a One-shot timer that will expire in 2.00 seconds
  • Bw timer
    • Events
      • Time - bw_timer expires
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Bw_check Equal to False
        • Then - Actions
          • Set Bw_check = True
          • Countdown Timer - Start bw_timer as a One-shot timer that will expire in 2.00 seconds
        • Else - Actions
          • Trigger - Turn off Bw move <gen>
          • For each (Integer A) from 1 to 25, do (Actions)
            • Loop - Actions
              • Lightning - Destroy bw_lightning[bw_int]
              • Set bw_int = (bw_int + 1)
          • Set bw_int = 1
          • Custom script: call DestroyGroup(udg_bw_dummy_grp)
          • Custom script: call RemoveLocation(udg_Bw_loc)
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Number of units in bw_grp) Greater than 0
            • Then - Actions
              • For each (Integer A) from 1 to (Number of units in bw_grp), do (Actions)
                • Loop - Actions
                  • Unit - Add Bw aura to Bw_caster
                  • Unit - Set level of Bw aura for Bw_caster to bw_int
                  • Set bw_int = (bw_int + 1)
            • Else - Actions
          • Unit Group - Remove all units from bw_grp
          • Countdown Timer - Start bw_timer2 as a One-shot timer that will expire in 10.00 seconds
  • Bw aura
    • Events
      • Time - bw_timer2 expires
    • Conditions
    • Actions
      • Unit - Remove Bw aura from Bw_caster
  • Bw move
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Bw_check Equal to True
        • Then - Actions
          • Set Bw_loc = (Position of Bw_caster)
          • Set Bw_offset = (Bw_offset + 10.00)
          • For each (Integer A) from 1 to 24, do (Actions)
            • Loop - Actions
              • Unit - Move bw_dummy_array[bw_int] instantly to (Bw_loc offset by Bw_offset towards bw_angle_array[bw_int] degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • bw_int Equal to 24
                • Then - Actions
                  • Lightning - Move bw_lightning[bw_int] to source (Position of bw_dummy_array[bw_int]) and target (Position of bw_dummy_array[1])
                • Else - Actions
                  • Lightning - Move bw_lightning[bw_int] to source (Position of bw_dummy_array[bw_int]) and target (Position of bw_dummy_array[(bw_int + 1)])
              • Set bw_int = (bw_int + 1)
              • Unit Group - Pick every unit in (Units within 100.00 of (Position of bw_dummy_array[bw_int]) matching ((((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True) and (((Matching unit) is alive) Equal to True))) and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is in bw_grp) Equal to False
                    • Then - Actions
                      • Unit - Create 1 Spell dummy 2 for Player 1 (Red) at Bw_loc facing (Position of (Picked unit))
                      • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                      • Unit Group - Add (Picked unit) to bw_grp
                    • Else - Actions
        • Else - Actions
          • Set Bw_loc = (Position of Bw_caster)
          • Set Bw_offset = (Bw_offset - 10.00)
          • For each (Integer A) from 1 to 24, do (Actions)
            • Loop - Actions
              • Unit - Move bw_dummy_array[bw_int] instantly to (Bw_loc offset by Bw_offset towards bw_angle_array[bw_int] degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • bw_int Equal to 24
                • Then - Actions
                  • Lightning - Move bw_lightning[bw_int] to source (Position of bw_dummy_array[bw_int]) and target (Position of bw_dummy_array[1])
                • Else - Actions
                  • Lightning - Move bw_lightning[bw_int] to source (Position of bw_dummy_array[bw_int]) and target (Position of bw_dummy_array[(bw_int + 1)])
              • Set bw_int = (bw_int + 1)
              • Unit Group - Pick every unit in (Units within 100.00 of (Position of bw_dummy_array[bw_int]) matching ((((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True) and (((Matching unit) is alive) Equal to True))) and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is in bw_grp) Equal to False
                    • Then - Actions
                      • Unit - Create 1 Spell dummy 2 for Player 1 (Red) at Bw_loc facing (Position of (Picked unit))
                      • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                      • Unit Group - Add (Picked unit) to bw_grp
                    • Else - Actions
      • Set bw_int = 1
  • Chain lightning
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to 'Chain' lightning
    • Actions
      • Set cl_caster = (Triggering unit)
      • Set cl_dummy_z = 60.00
      • Set cl_bonus = 10.00
      • Set cl_phase1_angle = ((Facing of cl_caster) - 90.00)
      • Set cl_loc = ((Position of cl_caster) offset by 100.00 towards cl_phase1_angle degrees)
      • Unit - Create 1 cl dummy for Player 1 (Red) at (cl_loc offset by 200.00 towards (cl_phase1_angle - 90.00) degrees) facing (Position of cl_caster)
      • Set cl_dummy_array[1] = (Last created unit)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Special Effect - Create a special effect attached to the chest of (Last created unit) using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
      • Unit - Add Crow Form to (Last created unit)
      • Unit - Remove Crow Form from (Last created unit)
      • Special Effect - Create a special effect attached to the weapon of cl_caster using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
      • Set cl_effects[1] = (Last created special effect)
      • Unit - Add a 10.00 second Generic expiration timer to cl_dummy_array[1]
      • Custom script: set udg_cl_light[1] = AddLightningEx("CLPB",true,GetUnitX(udg_cl_caster),GetUnitY(udg_cl_caster),20,GetUnitX(udg_cl_dummy_array[1]),GetUnitY(udg_cl_dummy_array[1]),60)
      • Set cl_phase = 1
      • Unit - Pause cl_caster
      • Trigger - Turn on CL effects <gen>
      • For each (Integer A) from 1 to 2, do (Actions)
        • Loop - Actions
          • Animation - Play cl_caster's attack animation
          • Wait 0.60 seconds
      • Lightning - Destroy cl_light[1]
      • Special Effect - Destroy cl_effects[1]
      • Unit - Unpause cl_caster
      • Animation - Change cl_dummy_array[1] flying height to 60.00 at 2000.00
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Set cl_phase = 2
      • Set cl_phase2_anglez[1] = (Facing of cl_caster)
      • Set cl_loc = ((Position of cl_caster) offset by 250.00 towards cl_phase2_anglez[1] degrees)
      • Unit - Create 1 cl dummy for Player 1 (Red) at ((Position of cl_caster) offset by 250.00 towards (cl_phase2_anglez[1] - 45.00) degrees) facing (Position of (Triggering unit))
      • Unit - Add Crow Form to (Last created unit)
      • Unit - Remove Crow Form from (Last created unit)
      • Special Effect - Create a special effect attached to the chest of (Last created unit) using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
      • Set cl_dummy_array[2] = (Last created unit)
      • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
      • Set cl_phase2_anglez[2] = 0.00
      • Custom script: set udg_cl_light[2] = AddLightningEx("CLPB",true,GetUnitX(udg_cl_dummy_array[1]),GetUnitY(udg_cl_dummy_array[1]),60,GetUnitX(udg_cl_dummy_array[2]),GetUnitY(udg_cl_dummy_array[2]),60)
      • Custom script: set udg_cl_light[3] = AddLightningEx("FORK",true,GetUnitX(udg_cl_dummy_array[1]),GetUnitY(udg_cl_dummy_array[1]),60,GetUnitX(udg_cl_dummy_array[2]),GetUnitY(udg_cl_dummy_array[2]),60)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Countdown Timer - Start cl_timer as a One-shot timer that will expire in 12.00 seconds
  • Cl timer
    • Events
      • Time - cl_timer expires
    • Conditions
    • Actions
      • Unit Group - Add cl_dummy_array[1] to cl_temp_grp
      • Unit Group - Add cl_dummy_array[2] to cl_temp_grp
      • Unit - Remove cl_dummy_array[1] from the game
      • Unit - Remove cl_dummy_array[2] from the game
      • Lightning - Destroy cl_light[4]
      • Lightning - Destroy cl_light[5]
      • Special Effect - Destroy cl_effects[2]
      • Special Effect - Destroy cl_effects[3]
      • Special Effect - Destroy cl_effects[4]
      • Special Effect - Destroy cl_effects[5]
      • Custom script: call DestroyGroup(udg_cl_temp_grp)
      • Custom script: call RemoveLocation(udg_cl_loc)
      • Unit Group - Remove all units from cl_grp
      • Trigger - Turn off CL effects <gen>
  • CL effects
    • Events
      • Time - Every 0.01 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • cl_phase Equal to 1
        • Then - Actions
          • Unit - Move cl_dummy_array[1] instantly to (cl_loc offset by 200.00 towards cl_phase1_angle degrees)
          • Special Effect - Create a special effect attached to the chest of cl_dummy_array[1] using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
          • Special Effect - Destroy (Last created special effect)
          • Special Effect - Create a special effect attached to the weapon of cl_caster using Abilities\Spells\Human\ManaFlare\ManaFlareMissile.mdl
          • Special Effect - Destroy (Last created special effect)
          • Animation - Change cl_dummy_array[1] flying height to cl_dummy_z at 2000.00
          • Set cl_dummy_z = (cl_dummy_z + cl_bonus)
          • Set cl_bonus = (cl_bonus x 0.95)
          • Set cl_phase1_angle = (cl_phase1_angle + 3.50)
          • Custom script: call MoveLightningEx(udg_cl_light[1],true,GetUnitX(udg_cl_caster),GetUnitY(udg_cl_caster),30,GetUnitX(udg_cl_dummy_array[1]),GetUnitY(udg_cl_dummy_array[1]),GetUnitFlyHeight(udg_cl_dummy_array[1]))
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • cl_phase Equal to 2
            • Then - Actions
              • Unit - Move cl_dummy_array[1] instantly to (cl_loc offset by 200.00 towards (cl_phase2_anglez[2] + 180.00) degrees)
              • Unit - Move cl_dummy_array[2] instantly to (cl_loc offset by 200.00 towards cl_phase2_anglez[2] degrees)
              • Special Effect - Create a special effect attached to the chest of cl_dummy_array[1] using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
              • Special Effect - Destroy (Last created special effect)
              • Special Effect - Create a special effect attached to the chest of cl_dummy_array[2] using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
              • Special Effect - Destroy (Last created special effect)
              • Custom script: call MoveLightningEx(udg_cl_light[2],true,GetUnitX(udg_cl_dummy_array[1]),GetUnitY(udg_cl_dummy_array[1]),GetUnitFlyHeight(udg_cl_dummy_array[1]),GetUnitX(udg_cl_dummy_array[2]),GetUnitY(udg_cl_dummy_array[2]),GetUnitFlyHeight(udg_cl_dummy_array[2]))
              • Custom script: call MoveLightningEx(udg_cl_light[3],true,GetUnitX(udg_cl_dummy_array[1]),GetUnitY(udg_cl_dummy_array[1]),GetUnitFlyHeight(udg_cl_dummy_array[1]),GetUnitX(udg_cl_dummy_array[2]),GetUnitY(udg_cl_dummy_array[2]),GetUnitFlyHeight(udg_cl_dummy_array[2]))
              • Set cl_loc = (cl_loc offset by 10.00 towards cl_phase2_anglez[1] degrees)
              • Set cl_phase2_anglez[2] = (cl_phase2_anglez[2] + 8.00)
              • Unit Group - Pick every unit in (Units within 180.00 of cl_loc matching ((((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is A structure) Equal to False)))) and do (Actions)
                • Loop - Actions
                  • Unit Group - Add (Picked unit) to cl_grp
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Number of units in cl_grp) Greater than 0
                    • Then - Actions
                      • Set cl_phase = 3
                      • Set cl_target = (Random unit from cl_grp)
                      • Set cl_phase3_anglez[1] = (Angle from cl_loc to (Position of cl_target))
                      • Set cl_phase3_anglez[2] = (cl_phase3_anglez[1] - 90.00)
                      • Set cl_phase3_anglez[3] = (cl_phase3_anglez[1] + 90.00)
                      • Set cl_phase3_anglez[4] = 250.00
                      • Set cl_loc = (Position of cl_target)
                      • Special Effect - Create a special effect attached to the chest of cl_target using Abilities\Spells\Orc\FeralSpirit\feralspiritdone.mdl
                      • Set cl_effects[2] = (Last created special effect)
                      • Special Effect - Create a special effect attached to the origin of cl_target using Abilities\Spells\Orc\LightningShield\LightningShieldTarget.mdl
                      • Set cl_effects[3] = (Last created special effect)
                      • Special Effect - Create a special effect attached to the head of cl_target using Abilities\Spells\Human\ManaFlare\ManaFlareBoltImpact.mdl
                      • Set cl_effects[4] = (Last created special effect)
                      • Special Effect - Create a special effect attached to the chest of cl_target using Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl
                      • Set cl_effects[5] = (Last created special effect)
                      • Lightning - Destroy cl_light[2]
                      • Lightning - Destroy cl_light[3]
                      • Unit - Create 1 Spell dummy 2 for Player 1 (Red) at cl_loc facing (Position of cl_target)
                      • Unit - Order (Last created unit) to Orc Shaman - Purge cl_target
                      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
                      • Unit - Move cl_dummy_array[1] instantly to (cl_loc offset by 200.00 towards cl_phase3_anglez[2] degrees)
                      • Unit - Move cl_dummy_array[2] instantly to (cl_loc offset by 200.00 towards cl_phase3_anglez[3] degrees)
                      • Custom script: set udg_cl_light[4] = AddLightningEx("CLPB",true,GetUnitX(udg_cl_target),GetUnitY(udg_cl_target),GetUnitFlyHeight(udg_cl_target),GetUnitX(udg_cl_dummy_array[1]),GetUnitY(udg_cl_dummy_array[1]),GetUnitFlyHeight(udg_cl_dummy_array[1]))
                      • Custom script: set udg_cl_light[5] = AddLightningEx("CLPB",true,GetUnitX(udg_cl_target),GetUnitY(udg_cl_target),GetUnitFlyHeight(udg_cl_target),GetUnitX(udg_cl_dummy_array[2]),GetUnitY(udg_cl_dummy_array[2]),GetUnitFlyHeight(udg_cl_dummy_array[2]))
                    • Else - Actions
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • cl_phase Equal to 3
                • Then - Actions
                  • Unit - Move cl_dummy_array[1] instantly to (cl_loc offset by cl_phase3_anglez[4] towards cl_phase3_anglez[2] degrees)
                  • Unit - Move cl_dummy_array[2] instantly to (cl_loc offset by (cl_phase3_anglez[4] - 50.00) towards cl_phase3_anglez[3] degrees)
                  • Custom script: call MoveLightningEx(udg_cl_light[4],true,GetUnitX(udg_cl_target),GetUnitY(udg_cl_target),GetUnitFlyHeight(udg_cl_target),GetUnitX(udg_cl_dummy_array[1]),GetUnitY(udg_cl_dummy_array[1]),GetUnitFlyHeight(udg_cl_dummy_array[1]))
                  • Custom script: call MoveLightningEx(udg_cl_light[5],true,GetUnitX(udg_cl_target),GetUnitY(udg_cl_target),GetUnitFlyHeight(udg_cl_target),GetUnitX(udg_cl_dummy_array[2]),GetUnitY(udg_cl_dummy_array[2]),GetUnitFlyHeight(udg_cl_dummy_array[2]))
                  • Special Effect - Create a special effect attached to the chest of cl_dummy_array[1] using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect attached to the chest of cl_dummy_array[2] using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set cl_phase3_anglez[2] = (cl_phase3_anglez[2] + 7.00)
                  • Set cl_phase3_anglez[3] = (cl_phase3_anglez[3] - 7.00)
                  • Set cl_phase3_anglez[4] = (cl_phase3_anglez[4] - 1.00)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • cl_phase3_anglez[4] Less than 5.00
                    • Then - Actions
                      • Unit Group - Add cl_dummy_array[1] to cl_temp_grp
                      • Unit Group - Add cl_dummy_array[2] to cl_temp_grp
                      • Unit - Remove cl_dummy_array[1] from the game
                      • Unit - Remove cl_dummy_array[2] from the game
                      • Lightning - Destroy cl_light[4]
                      • Lightning - Destroy cl_light[5]
                      • Special Effect - Destroy cl_effects[2]
                      • Special Effect - Destroy cl_effects[3]
                      • Special Effect - Destroy cl_effects[4]
                      • Special Effect - Destroy cl_effects[5]
                      • Custom script: call DestroyGroup(udg_cl_temp_grp)
                      • Custom script: call RemoveLocation(udg_cl_loc)
                      • Unit Group - Remove all units from cl_grp
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
  • Bulletstorms leash GUI
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Bulletstorm's Leash with Thumper
    • Actions
      • Set bsl_caster = (Triggering unit)
      • Set bsl_loc = (Position of bsl_caster)
      • Set bsl_distance = (Distance between bsl_loc and (Target point of ability being cast))
      • Set bsl_offset = (bsl_distance / 20.00)
      • Set bsl_height = 40.00
      • Set bsl_bonus = 40.00
      • Set bsl_angle = (Angle from bsl_loc to (Target point of ability being cast))
      • Set bsl_i = 0
      • Set bsl_phase = 0
      • Set bsl_light_i = 0
      • Set bsl_tloc = (Target point of ability being cast)
      • Set Thumper_ON = False
      • Set b_portal = False
      • Unit - Remove Bulletstorm's Leash with Thumper from bsl_caster
      • Unit - Remove 'Chain' lightning from bsl_caster
      • Unit - Add Thumper to bsl_caster
      • For each (Integer A) from 1 to 20, do (Actions)
        • Loop - Actions
          • Unit - Create 1 bsl dummy for Player 1 (Red) at (bsl_loc offset by bsl_offset towards bsl_angle degrees) facing bsl_loc
          • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
          • Animation - Change (Last created unit) flying height to bsl_height at 2500.00
          • Unit Group - Add (Last created unit) to bsl_dummy_grp
          • Set bsl_x[bsl_i] = (X of (Position of (Last created unit)))
          • Set bsl_y[bsl_i] = (Y of (Position of (Last created unit)))
          • Set bsl_array[bsl_i] = (Last created unit)
          • Set bsl_offset = (bsl_offset + (bsl_distance / 20.00))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bsl_i Less than or equal to 8
            • Then - Actions
              • Set bsl_height = (bsl_height + bsl_bonus)
              • Set bsl_bonus = (bsl_bonus - 5.00)
            • Else - Actions
              • Set bsl_height = (bsl_height - bsl_bonus)
              • Set bsl_bonus = (bsl_bonus + 5.00)
          • Set bsl_i = (bsl_i + 1)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Set bsl_height = 40.00
      • Set bsl_bonus = 40.00
      • Set bsl_offset = (bsl_distance / 20.00)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Distance between ((Position of blue_portal[1]) offset by (0.00, 100.00)) and bsl_tloc) Less than or equal to 50.00
        • Then - Actions
          • Set bsl_portal = True
          • Set bsl_blue = True
          • For each (Integer A) from 1 to 20, do (Actions)
            • Loop - Actions
              • Unit - Create 1 bsl dummy for Player 1 (Red) at (((Position of yellow_portal[1]) offset by (0.00, 100.00)) offset by bsl_offset towards bsl_angle degrees) facing bsl_loc
              • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
              • Animation - Change (Last created unit) flying height to bsl_height at 2500.00
              • Unit Group - Add (Last created unit) to bsl_dummy_grp
              • Set bsl_x[bsl_i] = (X of (Position of (Last created unit)))
              • Set bsl_y[bsl_i] = (Y of (Position of (Last created unit)))
              • Set bsl_array[bsl_i] = (Last created unit)
              • Set bsl_offset = (bsl_offset + (bsl_distance / 20.00))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • bsl_i Less than or equal to 28
                • Then - Actions
                  • Set bsl_height = (bsl_height + bsl_bonus)
                  • Set bsl_bonus = (bsl_bonus - 5.00)
                • Else - Actions
                  • Set bsl_height = (bsl_height - bsl_bonus)
                  • Set bsl_bonus = (bsl_bonus + 5.00)
              • Set bsl_i = (bsl_i + 1)
          • Trigger - Turn on BSL Portal case <gen>
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between ((Position of yellow_portal[1]) offset by (0.00, 100.00)) and bsl_tloc) Less than or equal to 50.00
            • Then - Actions
              • Set bsl_portal = True
              • Set bsl_blue = False
              • For each (Integer A) from 1 to 20, do (Actions)
                • Loop - Actions
                  • Unit - Create 1 bsl dummy for Player 1 (Red) at (((Position of blue_portal[1]) offset by (0.00, 100.00)) offset by bsl_offset towards bsl_angle degrees) facing bsl_loc
                  • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
                  • Animation - Change (Last created unit) flying height to bsl_height at 2500.00
                  • Unit Group - Add (Last created unit) to bsl_dummy_grp
                  • Set bsl_x[bsl_i] = (X of (Position of (Last created unit)))
                  • Set bsl_y[bsl_i] = (Y of (Position of (Last created unit)))
                  • Set bsl_array[bsl_i] = (Last created unit)
                  • Set bsl_offset = (bsl_offset + (bsl_distance / 20.00))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • bsl_i Less than or equal to 28
                    • Then - Actions
                      • Set bsl_height = (bsl_height + bsl_bonus)
                      • Set bsl_bonus = (bsl_bonus - 5.00)
                    • Else - Actions
                      • Set bsl_height = (bsl_height - bsl_bonus)
                      • Set bsl_bonus = (bsl_bonus + 5.00)
                  • Set bsl_i = (bsl_i + 1)
              • Trigger - Turn on BSL Portal case <gen>
            • Else - Actions
              • Set bsl_portal = False
              • Trigger - Turn on BSL go <gen>
      • Set bsl_i = 0
      • Set bsl_phase = 1
  • BSL go
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • bsl_phase Equal to 1
        • Then - Actions
          • Custom script: set udg_bsl_light_array[udg_bsl_light_i] = AddLightningEx(udg_BLS,true,udg_bsl_x[udg_bsl_i],udg_bsl_y[udg_bsl_i],GetUnitFlyHeight(udg_bsl_array[udg_bsl_i]),udg_bsl_x[(udg_bsl_i+2)],udg_bsl_y[(udg_bsl_i)+2],GetUnitFlyHeight(udg_bsl_array[(udg_bsl_i)+2]))
          • Set bsl_light_i = (bsl_light_i + 1)
          • Custom script: set udg_bsl_light_array[udg_bsl_light_i] = AddLightningEx("CLPB",true,udg_bsl_x[udg_bsl_i],udg_bsl_y[udg_bsl_i],GetUnitFlyHeight(udg_bsl_array[udg_bsl_i]),udg_bsl_x[(udg_bsl_i+2)],udg_bsl_y[(udg_bsl_i)+2],GetUnitFlyHeight(udg_bsl_array[(udg_bsl_i)+2]))
          • Set bsl_light_i = (bsl_light_i + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bsl_i Less than or equal to 15
            • Then - Actions
              • Custom script: set udg_bsl_light_array[udg_bsl_light_i] = AddLightningEx(udg_BLS,true,udg_bsl_x[udg_bsl_i],udg_bsl_y[udg_bsl_i],GetUnitFlyHeight(udg_bsl_array[udg_bsl_i]),udg_bsl_x[(udg_bsl_i+4)],udg_bsl_y[(udg_bsl_i)+4],GetUnitFlyHeight(udg_bsl_array[(udg_bsl_i)+4]))
              • Set bsl_light_i = (bsl_light_i + 1)
              • Custom script: set udg_bsl_light_array[udg_bsl_light_i] = AddLightningEx("CLPB",true,udg_bsl_x[udg_bsl_i],udg_bsl_y[udg_bsl_i],GetUnitFlyHeight(udg_bsl_array[udg_bsl_i]),udg_bsl_x[(udg_bsl_i+4)],udg_bsl_y[(udg_bsl_i)+4],GetUnitFlyHeight(udg_bsl_array[(udg_bsl_i)+4]))
              • Set bsl_light_i = (bsl_light_i + 1)
            • Else - Actions
          • Set bsl_i = (bsl_i + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bsl_i Equal to 18
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Thumper_ON Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
              • Set bsl_target = (Random unit from (Units within 150.00 of bsl_tloc matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True)) and (((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True))))
              • Special Effect - Create a special effect at (bsl_loc offset by bsl_distance towards bsl_angle degrees) using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
              • Special Effect - Destroy (Last created special effect)
              • Sound - Play mksm_get_the_fuck_over_here <gen>
              • Unit - Remove Positive buffs from bsl_target
              • Unit - Remove Thumper from bsl_caster
              • Unit - Add Bulletstorm's Leash with Thumper to bsl_caster
              • Unit - Add 'Chain' lightning to bsl_caster
              • Set bsl_i = (bsl_i + 4)
              • Set bsl_unit_i = 20
              • Set bsl_phase = 2
            • Else - Actions
        • Else - Actions
          • Lightning - Destroy bsl_light_array[bsl_light_i]
          • Lightning - Destroy bsl_light_array[(bsl_light_i - 1)]
          • Lightning - Destroy bsl_light_array[(bsl_light_i - 2)]
          • Lightning - Destroy bsl_light_array[(bsl_light_i - 3)]
          • Unit - Move bsl_target instantly to (Position of bsl_array[bsl_unit_i])
          • Animation - Change bsl_target flying height to (Current flying height of bsl_array[bsl_unit_i]) at 2500.00
          • Set bsl_i = (bsl_i - 1)
          • Set bsl_unit_i = (bsl_unit_i - 1)
          • Set bsl_light_i = (bsl_light_i - 4)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bsl_i Equal to 0
            • Then - Actions
              • Unit - Remove Thumper from bsl_caster
              • Unit - Add Bulletstorm's Leash with Thumper to bsl_caster
              • Unit - Add 'Chain' lightning to bsl_caster
              • Trigger - Turn off (This trigger)
            • Else - Actions
  • BSL Portal case
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • bsl_phase Equal to 1
        • Then - Actions
          • Custom script: set udg_bsl_light_array[udg_bsl_light_i] = AddLightningEx(udg_BLS,true,udg_bsl_x[udg_bsl_i],udg_bsl_y[udg_bsl_i],GetUnitFlyHeight(udg_bsl_array[udg_bsl_i]),udg_bsl_x[(udg_bsl_i+2)],udg_bsl_y[(udg_bsl_i)+2],GetUnitFlyHeight(udg_bsl_array[(udg_bsl_i)+2]))
          • Set bsl_light_i = (bsl_light_i + 1)
          • Custom script: set udg_bsl_light_array[udg_bsl_light_i] = AddLightningEx("CLPB",true,udg_bsl_x[udg_bsl_i],udg_bsl_y[udg_bsl_i],GetUnitFlyHeight(udg_bsl_array[udg_bsl_i]),udg_bsl_x[(udg_bsl_i+2)],udg_bsl_y[(udg_bsl_i)+2],GetUnitFlyHeight(udg_bsl_array[(udg_bsl_i)+2]))
          • Set bsl_light_i = (bsl_light_i + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bsl_i Less than or equal to 35
            • Then - Actions
              • Custom script: set udg_bsl_light_array[udg_bsl_light_i] = AddLightningEx(udg_BLS,true,udg_bsl_x[udg_bsl_i],udg_bsl_y[udg_bsl_i],GetUnitFlyHeight(udg_bsl_array[udg_bsl_i]),udg_bsl_x[(udg_bsl_i+4)],udg_bsl_y[(udg_bsl_i)+4],GetUnitFlyHeight(udg_bsl_array[(udg_bsl_i)+4]))
              • Set bsl_light_i = (bsl_light_i + 1)
              • Custom script: set udg_bsl_light_array[udg_bsl_light_i] = AddLightningEx("CLPB",true,udg_bsl_x[udg_bsl_i],udg_bsl_y[udg_bsl_i],GetUnitFlyHeight(udg_bsl_array[udg_bsl_i]),udg_bsl_x[(udg_bsl_i+4)],udg_bsl_y[(udg_bsl_i)+4],GetUnitFlyHeight(udg_bsl_array[(udg_bsl_i)+4]))
              • Set bsl_light_i = (bsl_light_i + 1)
            • Else - Actions
          • Set bsl_i = (bsl_i + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bsl_i Equal to 16
            • Then - Actions
              • Set bsl_i = 20
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bsl_i Equal to 38
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Thumper_ON Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • bsl_blue Equal to True
                    • Then - Actions
                      • Set bsl_target = (Random unit from (Units within 150.00 of (((Position of yellow_portal[1]) offset by (0.00, 100.00)) offset by bsl_distance towards bsl_angle degrees) matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True))
                      • Special Effect - Create a special effect at (((Position of yellow_portal[1]) offset by (0.00, 100.00)) offset by bsl_distance towards bsl_angle degrees) using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                    • Else - Actions
                      • Set bsl_target = (Random unit from (Units within 150.00 of (((Position of blue_portal[1]) offset by (0.00, 100.00)) offset by bsl_distance towards bsl_angle degrees) matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True)) a
                      • Special Effect - Create a special effect at (((Position of blue_portal[1]) offset by (0.00, 100.00)) offset by bsl_distance towards bsl_angle degrees) using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
              • Sound - Play mksm_get_the_fuck_over_here <gen>
              • Unit - Remove Positive buffs from bsl_target
              • Unit - Remove Thumper from bsl_caster
              • Unit - Add Bulletstorm's Leash with Thumper to bsl_caster
              • Unit - Add 'Chain' lightning to bsl_caster
              • Set bsl_i = (bsl_i + 4)
              • Set bsl_unit_i = 40
              • Set bsl_phase = 2
            • Else - Actions
        • Else - Actions
          • Lightning - Destroy bsl_light_array[bsl_light_i]
          • Lightning - Destroy bsl_light_array[(bsl_light_i - 1)]
          • Lightning - Destroy bsl_light_array[(bsl_light_i - 2)]
          • Lightning - Destroy bsl_light_array[(bsl_light_i - 3)]
          • Unit - Move bsl_target instantly to (Position of bsl_array[bsl_unit_i])
          • Animation - Change bsl_target flying height to (Current flying height of bsl_array[bsl_unit_i]) at 2500.00
          • Set bsl_i = (bsl_i - 1)
          • Set bsl_unit_i = (bsl_unit_i - 1)
          • Set bsl_light_i = (bsl_light_i - 4)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bsl_i Equal to 0
            • Then - Actions
              • Unit - Remove Thumper from bsl_caster
              • Unit - Add Bulletstorm's Leash with Thumper to bsl_caster
              • Unit - Add 'Chain' lightning to bsl_caster
              • Trigger - Turn off (This trigger)
            • Else - Actions
  • Thumper
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Thumper
    • Actions
      • Set Thumper_ON = True
      • Set tli = 0
      • Set tui = 0
      • Unit - Create 1 bsl dummy for Player 1 (Red) at (bsl_loc offset by bsl_distance towards bsl_angle degrees) facing bsl_loc
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • Unit Group - Add (Last created unit) to bsl_dummy_grp
      • Unit - Create 1 thumper dummy for Player 1 (Red) at (Position of bsl_array[tui]) facing (Position of (Triggering unit))
      • Set bsl_array[50] = (Last created unit)
      • Unit Group - Add (Last created unit) to bsl_dummy_grp
      • Unit - Add a 1.00 second Generic expiration timer to bsl_array[50]
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • bsl_portal Equal to True
        • Then - Actions
          • Trigger - Turn on Thumper Portal case <gen>
        • Else - Actions
          • Trigger - Turn on Thumper go <gen>
  • Thumper go
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • Unit - Move bsl_array[50] instantly to (Position of bsl_array[tui])
      • Animation - Change bsl_array[50] flying height to (Current flying height of bsl_array[tui]) at 2500.00
      • Special Effect - Create a special effect attached to the chest of bsl_array[50] using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect attached to the chest of bsl_array[50] using war3mapImported\EMPBomb.mdx
      • Special Effect - Destroy (Last created special effect)
      • Set tui = (tui + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • tui Equal to 20
        • Then - Actions
          • Set thump_angle = 0.00
          • Special Effect - Create a special effect at bsl_tloc using war3mapImported\AncientExplode.mdx
          • Set bsl_SE[0] = (Last created special effect)
          • Set Thumper_grp = (Units within 500.00 of bsl_tloc matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True)) and (((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True)))
          • For each (Integer A) from 1 to 6, do (Actions)
            • Loop - Actions
              • Special Effect - Create a special effect at (bsl_tloc offset by 150.00 towards thump_angle degrees) using war3mapImported\WhiteChakraExplosion.mdx
              • Set bsl_SE[(Integer A)] = (Last created special effect)
              • Set thump_angle = (thump_angle + 60.00)
          • Set bsl_phase = 3
          • Trigger - Turn on BSL go <gen>
          • Set bsl_target = No unit
          • Set tec = 0
          • Set thumper_height = 30.00
          • Set Tup = True
          • Trigger - Turn on Thumper up <gen>
          • Unit Group - Pick every unit in Thumper_grp and do (Actions)
            • Loop - Actions
              • Unit - Cause bsl_caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
              • Unit - Pause (Picked unit)
              • Set thumper_se[tec] = (Last created special effect)
              • Set tec = (tec + 1)
          • Trigger - Turn on Thumper effects <gen>
          • Trigger - Turn on Thumper up <gen>
          • Trigger - Turn off (This trigger)
        • Else - Actions
  • Thumper Portal case
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • Unit - Move bsl_array[50] instantly to (Position of bsl_array[tui])
      • Animation - Change bsl_array[50] flying height to (Current flying height of bsl_array[tui]) at 2500.00
      • Special Effect - Create a special effect attached to the chest of bsl_array[50] using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect attached to the chest of bsl_array[50] using war3mapImported\EMPBomb.mdx
      • Special Effect - Destroy (Last created special effect)
      • Set tui = (tui + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • tui Equal to 40
        • Then - Actions
          • Set thump_angle = 0.00
          • Special Effect - Create a special effect at (Position of bsl_array[50]) using war3mapImported\AncientExplode.mdx
          • Set Thumper_grp = (Units within 500.00 of (Position of bsl_array[50]) matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True)) and (((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True)))
          • For each (Integer A) from 1 to 6, do (Actions)
            • Loop - Actions
              • Special Effect - Create a special effect at ((Position of bsl_array[50]) offset by 150.00 towards thump_angle degrees) using war3mapImported\WhiteChakraExplosion.mdx
              • Set thump_angle = (thump_angle + 60.00)
          • Set bsl_phase = 3
          • Trigger - Turn on BSL go <gen>
          • Set bsl_target = No unit
          • Set tec = 0
          • Set thumper_height = 30.00
          • Set Tup = True
          • Unit Group - Pick every unit in Thumper_grp and do (Actions)
            • Loop - Actions
              • Unit - Cause bsl_caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
              • Unit - Pause (Picked unit)
              • Set thumper_se[tec] = (Last created special effect)
              • Set tec = (tec + 1)
          • Trigger - Turn on Thumper up <gen>
          • Trigger - Turn on Thumper effects <gen>
          • Trigger - Turn off (This trigger)
        • Else - Actions
  • Thumper effects
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Thumper_grp and do (Actions)
        • Loop - Actions
          • Special Effect - Create a special effect attached to the chest of (Picked unit) using war3mapImported\Stars_lightning_.MDX
          • Special Effect - Destroy (Last created special effect)
  • Thumper up
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Thumper_grp and do (Actions)
        • Loop - Actions
          • Unit - Move (Picked unit) instantly to ((Position of (Picked unit)) offset by (thumper_height x 0.30) towards (Angle from bsl_tloc to (Position of (Picked unit))) degrees)
          • Animation - Change (Picked unit) flying height to ((Current flying height of (Picked unit)) + thumper_height) at 2500.00
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • thumper_height Less than or equal to 2.00
            • Then - Actions
              • Trigger - Turn on Thumper down <gen>
              • Set tec = 0
              • For each (Integer A) from 1 to (Number of units in Thumper_grp), do (Actions)
                • Loop - Actions
                  • Special Effect - Destroy thumper_se[tec]
                  • Set tec = (tec + 1)
              • Trigger - Turn off (This trigger)
            • Else - Actions
      • Set thumper_height = (thumper_height x 0.95)
  • Thumper down
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Thumper_grp and do (Actions)
        • Loop - Actions
          • Unit - Move (Picked unit) instantly to ((Position of (Picked unit)) offset by (thumper_height x 0.50) towards (Angle from bsl_tloc to (Position of (Picked unit))) degrees)
          • Animation - Change (Picked unit) flying height to ((Current flying height of (Picked unit)) - thumper_height) at 2500.00
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • thumper_height Greater than or equal to 25.00
        • Then - Actions
          • Unit Group - Pick every unit in Thumper_grp and do (Actions)
            • Loop - Actions
              • Unit - Unpause (Picked unit)
              • Unit - Move (Picked unit) instantly to ((Position of (Picked unit)) offset by (thumper_height x 0.50) towards (Angle from bsl_tloc to (Position of (Picked unit))) degrees)
              • Animation - Change (Picked unit) flying height to (Default flying height of (Picked unit)) at 2500.00
          • Set bsl_portal = False
          • Trigger - Turn off Thumper effects <gen>
          • Trigger - Turn off BSL go <gen>
          • Trigger - Turn off BSL Portal case <gen>
          • Trigger - Turn off Thumper Portal case <gen>
          • Trigger - Turn off Thumper go <gen>
          • Trigger - Turn off Thumper up <gen>
          • For each (Integer A) from 0 to 6, do (Actions)
            • Loop - Actions
              • Special Effect - Destroy bsl_SE[(Integer A)]
          • Custom script: call DestroyGroup(udg_bsl_dummy_grp)
          • Custom script: call RemoveLocation(udg_bsl_loc)
          • Custom script: call RemoveLocation(udg_bsl_tloc)
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • Set thumper_height = (thumper_height x 1.05)
  • Bouncer
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Bouncer
    • Actions
      • Set b_caster = (Triggering unit)
      • Set b_loc = (Position of b_caster)
      • Set b_tloc = (Target point of ability being cast)
      • Set b_distance = (Distance between b_loc and b_tloc)
      • Set b_angle = (Angle from b_loc to b_tloc)
      • Set b_bonus = 12.00
      • Set b_height = 30.00
      • Set b_ON = True
      • Unit - Create 1 Bouncer dummy for Player 1 (Red) at b_loc facing b_loc
      • Unit Group - Add (Last created unit) to b_dummy_grp
      • Set b_dummy = (Last created unit)
      • Unit - Add a 7.10 second Generic expiration timer to b_dummy
      • Special Effect - Create a special effect attached to the chest of b_dummy using Abilities\Weapons\LavaSpawnMissile\LavaSpawnBirthMissile.mdl
      • Set b_effects[0] = (Last created special effect)
      • Special Effect - Create a special effect attached to the chest of b_dummy using Abilities\Weapons\DemolisherFireMissile\DemolisherFireMissile.mdl
      • Set b_effects[1] = (Last created special effect)
      • Special Effect - Create a special effect attached to the chest of b_dummy using Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
      • Set b_effects[2] = (Last created special effect)
      • Special Effect - Create a special effect attached to the chest of b_dummy using Abilities\Weapons\RedDragonBreath\RedDragonMissile.mdl
      • Set b_effects[3] = (Last created special effect)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Distance between ((Position of blue_portal[1]) offset by (0.00, 100.00)) and b_tloc) Less than or equal to 50.00
        • Then - Actions
          • Set b_blue = True
          • Set b_portal = True
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between ((Position of yellow_portal[1]) offset by (0.00, 100.00)) and b_tloc) Less than or equal to 50.00
            • Then - Actions
              • Set b_blue = False
              • Set b_portal = True
            • Else - Actions
              • Set b_portal = False
      • Trigger - Turn on bouncer move <gen>
  • bouncer move
    • Events
      • Time - Every 0.01 seconds of game time
    • Conditions
    • Actions
      • Unit - Move b_dummy instantly to ((Position of b_dummy) offset by (b_distance / 100.00) towards b_angle degrees)
      • Animation - Change b_dummy flying height to (b_height + b_bonus) at 2500.00
      • Special Effect - Create a special effect attached to the chest of b_dummy using war3mapImported\FireBlast.mdx
      • Special Effect - Destroy (Last created special effect)
      • Set b_bonus = (b_bonus - 0.25)
      • Set b_height = (b_height + b_bonus)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Distance between (Position of b_dummy) and b_tloc) Less than or equal to 5.00
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • b_portal Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • b_blue Equal to True
                • Then - Actions
                  • Unit - Move b_dummy instantly to ((Position of yellow_portal[1]) offset by (0.00, 100.00))
                  • Unit - Order b_dummy to Move To ((Position of b_dummy) offset by 400.00 towards b_angle degrees)
                  • Environment - Create a 0.20 second Temporary crater deformation at ((Position of blue_portal[1]) offset by (0.00, 100.00)) with radius 150.00 and depth 300.00
                  • Set b_bonus = 12.00
                  • Set b_height = 30.00
                  • Trigger - Turn on bouncer jump <gen>
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • Unit - Move b_dummy instantly to ((Position of blue_portal[1]) offset by (0.00, 100.00))
                  • Unit - Order b_dummy to Move To ((Position of b_dummy) offset by 400.00 towards b_angle degrees)
                  • Environment - Create a 0.20 second Temporary crater deformation at ((Position of yellow_portal[1]) offset by (0.00, 100.00)) with radius 150.00 and depth 300.00
                  • Set b_bonus = 12.00
                  • Set b_height = 30.00
                  • Trigger - Turn on bouncer jump <gen>
                  • Trigger - Turn off (This trigger)
            • Else - Actions
              • Special Effect - Create a special effect at (Position of b_dummy) using war3mapImported\FireNova.mdx
              • Special Effect - Destroy (Last created special effect)
              • Special Effect - Create a special effect at (Position of b_dummy) using war3mapImported\FireNova2.mdx
              • Special Effect - Destroy (Last created special effect)
              • Unit - Create 1 Spell dummy 3 for Player 1 (Red) at (Position of b_dummy) facing (Position of b_dummy)
              • Unit Group - Add (Last created unit) to b_dummy_grp
              • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
              • Unit - Order (Last created unit) to Orc Tauren Chieftain - War Stomp
              • Set b_bonus = 12.00
              • Set b_height = 30.00
              • Trigger - Turn on bouncer jump <gen>
              • Trigger - Turn off (This trigger)
        • Else - Actions
  • bouncer jump
    • Events
      • Time - Every 0.01 seconds of game time
    • Conditions
    • Actions
      • Animation - Change b_dummy flying height to (b_height + b_bonus) at 2500.00
      • Special Effect - Create a special effect attached to the chest of b_dummy using war3mapImported\FireBlast.mdx
      • Special Effect - Destroy (Last created special effect)
      • Set b_bonus = (b_bonus - 0.20)
      • Set b_height = (b_height + b_bonus)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • b_height Less than or equal to 10.00
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between (Position of b_dummy) and (Position of blue_portal[1])) Less than or equal to 150.00
            • Then - Actions
              • Environment - Create a 0.20 second Temporary crater deformation at ((Position of blue_portal[1]) offset by (0.00, 100.00)) with radius 100.00 and depth 300.00
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between (Position of b_dummy) and (Position of yellow_portal[1])) Less than or equal to 150.00
                • Then - Actions
                  • Environment - Create a 0.20 second Temporary crater deformation at ((Position of yellow_portal[1]) offset by (0.00, 100.00)) with radius 100.00 and depth 300.00
                • Else - Actions
                  • Special Effect - Create a special effect at (Position of b_dummy) using war3mapImported\FireNova.mdx
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at (Position of b_dummy) using war3mapImported\FireNova2.mdx
                  • Special Effect - Destroy (Last created special effect)
                  • Unit - Create 1 Spell dummy 3 for Player 1 (Red) at (Position of b_dummy) facing (Position of b_dummy)
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • Unit Group - Add (Last created unit) to b_dummy_grp
                  • Unit - Order (Last created unit) to Orc Tauren Chieftain - War Stomp
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • b_height Less than or equal to 2.00
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between (Position of b_dummy) and (Position of blue_portal[1])) Less than or equal to 150.00
            • Then - Actions
              • Unit - Move b_dummy instantly to ((Position of yellow_portal[1]) offset by (0.00, 100.00))
              • Unit - Order b_dummy to Move To ((Position of b_dummy) offset by (b_x, b_y))
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between (Position of b_dummy) and (Position of yellow_portal[1])) Less than or equal to 150.00
                • Then - Actions
                  • Unit - Move b_dummy instantly to ((Position of blue_portal[1]) offset by (0.00, 100.00))
                  • Unit - Order b_dummy to Move To ((Position of b_dummy) offset by (b_x, b_y))
                • Else - Actions
          • Set b_bonus = 12.00
          • Set b_height = 30.00
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (b_dummy is alive) Equal to False
        • Then - Actions
          • Unit - Create 1 Lava Spawn (Level 3) for Player 1 (Red) at (Position of b_dummy) facing (Player 1 (Red) start location)
          • Unit Group - Add (Last created unit) to b_dummy_grp
          • Animation - Change (Last created unit)'s animation speed to 150.00% of its original speed
          • Unit - Kill (Last created unit)
          • Special Effect - Destroy b_effects[0]
          • Special Effect - Destroy b_effects[1]
          • Special Effect - Destroy b_effects[2]
          • Special Effect - Destroy b_effects[3]
          • Custom script: call RemoveLocation(udg_b_loc)
          • Custom script: call RemoveLocation(udg_b_tloc)
          • Custom script: call DestroyGroup(udg_b_dummy_grp)
          • Set b_ON = False
          • Camera - Reset camera for Player 1 (Red) to standard game-view over 0.00 seconds
          • Trigger - Turn off (This trigger)
        • Else - Actions
  • bouncer up
    • Events
      • Player - Player 1 (Red) Presses the Up Arrow key
    • Conditions
      • b_ON Equal to True
    • Actions
      • Unit - Order b_dummy to Move To ((Position of b_dummy) offset by (0.00, 6000.00))
      • Camera - Lock camera target for Player 1 (Red) to b_dummy, offset by (0.00, 0.00) using The unit's rotation
      • Set b_x = 0.00
      • Set b_y = 6000.00
  • bouncer down
    • Events
      • Player - Player 1 (Red) Presses the Down Arrow key
    • Conditions
      • b_ON Equal to True
    • Actions
      • Unit - Order b_dummy to Move To ((Position of b_dummy) offset by (0.00, -6000.00))
      • Camera - Lock camera target for Player 1 (Red) to b_dummy, offset by (0.00, 0.00) using The unit's rotation
      • Set b_x = 0.00
      • Set b_y = -6000.00
  • bouncer left
    • Events
      • Player - Player 1 (Red) Presses the Left Arrow key
    • Conditions
      • b_ON Equal to True
    • Actions
      • Unit - Order b_dummy to Move To ((Position of b_dummy) offset by (-6000.00, 0.00))
      • Camera - Lock camera target for Player 1 (Red) to b_dummy, offset by (0.00, 0.00) using The unit's rotation
      • Set b_x = -6000.00
      • Set b_y = 0.00
  • bouncer right
    • Events
      • Player - Player 1 (Red) Presses the Right Arrow key
    • Conditions
      • b_ON Equal to True
    • Actions
      • Unit - Order b_dummy to Move To ((Position of b_dummy) offset by (6000.00, 0.00))
      • Camera - Lock camera target for Player 1 (Red) to b_dummy, offset by (0.00, 0.00) using The unit's rotation
      • Set b_x = 6000.00
      • Set b_y = 0.00
  • The storm
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to The storm
    • Actions
      • Set ts_caster = (Triggering unit)
      • Set ts_angle = 0.00
      • Set ts_loc = (Position of ts_caster)
      • Set tsi = 0
      • Set ts_height = 0.00
      • Set ts_light_i = 0
      • Animation - Play ts_caster's channel animation
      • For each (Integer A) from 1 to 210, do (Actions)
        • Loop - Actions
          • Unit - Create 1 bsl dummy for Player 1 (Red) at (ts_loc offset by 300.00 towards ts_angle degrees) facing (Position of (Triggering unit))
          • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
          • Unit Group - Add (Last created unit) to ts_dummy_grp
          • Animation - Change (Last created unit) flying height to ts_height at 2500.00
          • Set tsd[tsi] = (Last created unit)
          • Set ts_angle = (ts_angle + 10.00)
          • Set ts_height = (ts_height + 5.00)
          • Set tsi = (tsi + 1)
      • For each (Integer A) from 1 to 18, do (Actions)
        • Loop - Actions
          • Unit - Create 1 Cod obstacle dummy for Player 1 (Red) at ((Position of (Triggering unit)) offset by 320.00 towards (20.00 x (Real((Integer A)))) degrees) facing (Position of (Triggering unit))
          • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
          • Unit Group - Add (Last created unit) to ts_dummy_grp
          • Set cod_rot_angle = (cod_rot_angle + 20.00)
      • Set tsi = 0
      • Set ts_angle = 0.00
      • Set ts_height = 0.00
      • Unit - Create 1 thumper dummy for Player 1 (Red) at (ts_loc offset by 300.00 towards ts_angle degrees) facing ts_loc
      • Unit Group - Add (Last created unit) to ts_dummy_grp
      • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
      • Set tsd[300] = (Last created unit)
      • Trigger - Turn on storm go <gen>
      • Trigger - Turn on storm specials <gen>
  • storm go
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • Custom script: set udg_ts_light[udg_tsi]=AddLightningEx(udg_TSL,true,GetUnitX(udg_tsd[udg_tsi]),GetUnitY(udg_tsd[udg_tsi]),GetUnitFlyHeight(udg_tsd[udg_tsi]),GetUnitX(udg_tsd[(udg_tsi)+1]),GetUnitY(udg_tsd[(udg_tsi)+1]),GetUnitFlyHeight(udg_tsd[(udg_tsi)+1]))
      • Unit - Move tsd[300] instantly to (ts_loc offset by 300.00 towards ts_angle degrees)
      • Animation - Change tsd[300] flying height to ts_height at 2500.00
      • Special Effect - Create a special effect attached to the chest of tsd[300] using war3mapImported\EMPBomb.mdx
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect attached to the chest of tsd[300] using Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl
      • Special Effect - Destroy (Last created special effect)
      • Set ts_angle = (ts_angle + 10.00)
      • Set ts_height = (ts_height + 5.00)
      • Set tsi = (tsi + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • tsi Equal to 209
        • Then - Actions
          • Set tsi = 0
          • For each (Integer A) from 1 to 36, do (Actions)
            • Loop - Actions
              • Special Effect - Create a special effect at (ts_loc offset by 300.00 towards (10.00 x (Real((Integer A)))) degrees) using Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl
              • Special Effect - Destroy (Last created special effect)
          • For each (Integer A) from 1 to 209, do (Actions)
            • Loop - Actions
              • Lightning - Destroy ts_light[tsi]
              • Set tsi = (tsi + 1)
          • Custom script: call DestroyGroup(udg_ts_dummy_grp)
          • Custom script: call RemoveLocation(udg_ts_loc)
          • For each (Integer A) from 1 to (ts_light_i + 6), do (Actions)
            • Loop - Actions
              • Special Effect - Destroy ts_SE[(Integer A)]
          • Trigger - Turn off storm specials <gen>
          • Trigger - Turn off (This trigger)
        • Else - Actions
  • storm specials
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Special Effect - Create a special effect at (ts_loc offset by 150.00 towards (60.00 x (Real((Integer A)))) degrees) using war3mapImported\Lightnings Long.mdx
          • Set ts_SE[ts_light_i] = (Last created special effect)
          • Set ts_light_i = (ts_light_i + 1)
      • Unit Group - Pick every unit in (Units within 300.00 of ts_loc matching ((((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True) and (((Matching unit) is alive) Equal to True))) and do (Actions)
        • Loop - Actions
          • Unit - Cause ts_caster to damage (Picked unit), dealing 50.00 damage of attack type Spells and damage type Normal
      • Special Effect - Create a special effect at ts_loc using war3mapImported\LightningWrath.mdx
      • Special Effect - Destroy (Last created special effect)
  • Force cannon
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Force cannon
    • Actions
      • Set fci = 0
      • Set fc_target[fci] = (Target unit of ability being cast)
      • Set fc_offset[fci] = 15.00
      • Set fc_angle[fci] = (Angle from (Position of (Triggering unit)) to (Position of fc_target[fci]))
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Unit Group - Remove all units from fc_grp
      • Unit Group - Add fc_target[fci] to fc_grp
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Unit - Create 1 Fc dummy for Player 1 (Red) at ((Position of (Triggering unit)) offset by 50.00 towards fc_angle[0] degrees) facing (Position of fc_target[0])
      • Unit Group - Add (Last created unit) to fc_dummy_grp
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • Animation - Change (Last created unit)'s animation speed to 200.00% of its original speed
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Unit - Create 1 Fc dummy2 for Player 1 (Red) at ((Position of (Triggering unit)) offset by 50.00 towards fc_angle[fci] degrees) facing (Position of fc_target[0])
      • Unit Group - Add (Last created unit) to fc_dummy_grp
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Unit - Create 1 Fc dummy3 for Player 1 (Red) at ((Position of (Triggering unit)) offset by 350.00 towards fc_angle[fci] degrees) facing (Position of fc_target[0])
      • Unit Group - Add (Last created unit) to fc_dummy_grp
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Unit - Create 1 Fc dummy4 for Player 1 (Red) at ((Position of (Triggering unit)) offset by 100.00 towards (fc_angle[0] + 10.00) degrees) facing (fc_angle[0] + 10.00) degrees
      • Unit Group - Add (Last created unit) to fc_dummy_grp
      • Unit - Make (Last created unit) face ((Facing of (Last created unit)) + 170.00) over 2.00 seconds
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Unit - Create 1 Fc dummy4 for Player 1 (Red) at ((Position of (Triggering unit)) offset by 100.00 towards (fc_angle[0] - 10.00) degrees) facing (fc_angle[0] - 10.00) degrees
      • Unit - Make (Last created unit) face ((Facing of (Last created unit)) - 170.00) over 2.00 seconds
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Unit - Create 1 Fc dummy5 for Player 1 (Red) at ((Position of (Triggering unit)) offset by 50.00 towards fc_angle[fci] degrees) facing (Position of fc_target[0])
      • Unit Group - Add (Last created unit) to fc_dummy_grp
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Unit - Create 1 Spell dummy 2 for Player 1 (Red) at (Position of fc_target[fci]) facing (Position of fc_target[fci])
      • Unit Group - Add (Last created unit) to fc_dummy_grp
      • Unit - Order (Last created unit) to Neutral - Firebolt fc_target[fci]
      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Trigger - Run Force cannon pick <gen> (ignoring conditions)
      • Trigger - Turn on force cannon push <gen>
  • First time FC
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Force cannon
    • Actions
      • Game - Display to Player Group - Player 1 (Red) the text: I'd suggest trying ...
      • Cinematic - Ping minimap for Player Group - Player 1 (Red) at (Center of (Region centered at (Position of Forest Troll 0521 <gen>) with size (1.00, 1.00))) for 10.00 seconds
      • Trigger - Turn off (This trigger)
  • Force cannon pick
    • Events
    • Conditions
    • Actions
      • Set fci = (fci + 1)
      • Set fc_target[fci] = (Random unit from (Units within 500.00 of (Position of fc_target[(fci - 1)]) matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True)) and ((((Matching unit) is alive) Equal to Tr
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • fc_target[fci] Not equal to No unit
        • Then - Actions
          • Set fc_offset[fci] = 15.00
          • Set fc_angle[fci] = (Angle from (Position of fc_target[(fci - 1)]) to (Position of fc_target[fci]))
          • Unit Group - Add fc_target[fci] to fc_grp
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Unit - Create 1 Fc dummy for Player 1 (Red) at ((Position of fc_target[(fci - 1)]) offset by 50.00 towards (Facing of fc_target[fci]) degrees) facing (Position of fc_target[0])
          • Unit Group - Add (Last created unit) to fc_dummy_grp
          • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
          • Animation - Change (Last created unit)'s size to (50.00%, 50.00%, 50.00%) of its original size
          • Animation - Change (Last created unit)'s animation speed to 200.00% of its original speed
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Unit - Create 1 Fc dummy2 for Player 1 (Red) at ((Position of fc_target[(fci - 1)]) offset by 50.00 towards (Facing of fc_target[fci]) degrees) facing (Position of fc_target[0])
          • Unit Group - Add (Last created unit) to fc_dummy_grp
          • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
          • Animation - Change (Last created unit)'s size to (50.00%, 50.00%, 50.00%) of its original size
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Unit - Create 1 Fc dummy3 for Player 1 (Red) at ((Position of fc_target[(fci - 1)]) offset by 200.00 towards (Facing of fc_target[fci]) degrees) facing (Position of fc_target[0])
          • Unit Group - Add (Last created unit) to fc_dummy_grp
          • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
          • Animation - Change (Last created unit)'s size to (50.00%, 50.00%, 50.00%) of its original size
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Unit - Create 1 Fc dummy4 for Player 1 (Red) at ((Position of fc_target[(fci - 1)]) offset by 100.00 towards (fc_angle[fci] + 10.00) degrees) facing (fc_angle[fci] + 10.00) degrees
          • Unit Group - Add (Last created unit) to fc_dummy_grp
          • Unit - Make (Last created unit) face ((Facing of (Last created unit)) + 170.00) over 2.00 seconds
          • Animation - Change (Last created unit)'s size to (50.00%, 50.00%, 50.00%) of its original size
          • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Unit - Create 1 Fc dummy4 for Player 1 (Red) at ((Position of fc_target[(fci - 1)]) offset by 100.00 towards (fc_angle[fci] - 10.00) degrees) facing (fc_angle[fci] - 10.00) degrees
          • Unit Group - Add (Last created unit) to fc_dummy_grp
          • Unit - Make (Last created unit) face ((Facing of (Last created unit)) - -170.00) over 2.00 seconds
          • Animation - Change (Last created unit)'s size to (50.00%, 50.00%, 50.00%) of its original size
          • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Unit - Create 1 Fc dummy5 for Player 1 (Red) at ((Position of fc_target[(fci - 1)]) offset by 50.00 towards (Facing of fc_target[fci]) degrees) facing (Position of fc_target[0])
          • Unit Group - Add (Last created unit) to fc_dummy_grp
          • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
          • Animation - Change (Last created unit)'s size to (50.00%, 50.00%, 50.00%) of its original size
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Unit - Create 1 Spell dummy 2 for Player 1 (Red) at (Position of fc_target[fci]) facing (Position of fc_target[fci])
          • Unit Group - Add (Last created unit) to fc_dummy_grp
          • Unit - Order (Last created unit) to Neutral - Firebolt fc_target[fci]
          • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Number of units in (Units within 500.00 of (Position of fc_target[fci]) matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True)) and ((((Matching unit) belongs to an enemy of Player 1 (Red)) Equal to True) Greater than 0
            • Then - Actions
              • Wait 0.10 seconds
              • Trigger - Run (This trigger) (ignoring conditions)
            • Else - Actions
              • Wait 0.70 seconds
              • Unit Group - Remove all units from fc_grp
              • Custom script: call DestroyGroup(udg_fc_dummy_grp)
              • Trigger - Turn off force cannon push <gen>
        • Else - Actions
          • Wait 0.70 seconds
          • Unit Group - Remove all units from fc_grp
          • Custom script: call DestroyGroup(udg_fc_dummy_grp)
          • Trigger - Turn off force cannon push <gen>
 
  • Like
Reactions: SnY
Level 10
Joined
Apr 25, 2009
Messages
296
Continued...

  • force cannon push
    • Events
      • Time - Every 0.01 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 0 to (Number of units in fc_grp), do (Actions)
        • Loop - Actions
          • Unit - Move fc_target[(Integer A)] instantly to ((Position of fc_target[(Integer A)]) offset by fc_offset[(Integer A)] towards fc_angle[(Integer A)] degrees)
          • Set fc_offset[(Integer A)] = (fc_offset[(Integer A)] x 0.95)
  • Blue portal
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Blue Portal
    • Actions
      • Set portal_caster = (Triggering unit)
      • Unit - Kill blue_portal[1]
      • Unit - Kill blue_portal[2]
      • Custom script: call DestroyGroup(udg_portal_dummy_grp)
      • Environment - Stop Portal_def[1] over 0.00 seconds
      • Unit - Create 1 Blue portal dummy for Player 1 (Red) at ((Target point of ability being cast) offset by (0.00, -100.00)) facing 90.00 degrees
      • Set blue_portal[1] = (Last created unit)
      • Unit Group - Add (Last created unit) to portal_dummy_grp
      • Unit - Create 1 Blue portal dummy for Player 1 (Red) at ((Target point of ability being cast) offset by (0.00, 110.00)) facing 270.00 degrees
      • Set blue_portal[2] = (Last created unit)
      • Unit Group - Add (Last created unit) to portal_dummy_grp
      • Unit - Remove Blue Portal from (Triggering unit)
      • Unit - Add Yellow portal to (Triggering unit)
  • Yellow portal
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Yellow portal
    • Actions
      • Unit - Kill yellow_portal[1]
      • Unit - Kill yellow_portal[2]
      • Custom script: call DestroyGroup(udg_portal_dummy_grp)
      • Unit - Create 1 Yellow portal dummy for Player 1 (Red) at ((Target point of ability being cast) offset by (0.00, -100.00)) facing 90.00 degrees
      • Set yellow_portal[1] = (Last created unit)
      • Unit Group - Add (Last created unit) to portal_dummy_grp
      • Unit - Create 1 Yellow portal dummy for Player 1 (Red) at ((Target point of ability being cast) offset by (0.00, 110.00)) facing 270.00 degrees
      • Set yellow_portal[2] = (Last created unit)
      • Unit Group - Add (Last created unit) to portal_dummy_grp
      • Unit - Remove Yellow portal from (Triggering unit)
      • Unit - Add Blue Portal to (Triggering unit)
      • Trigger - Turn on Portals <gen>
  • Portals
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • Set Portal_target = (Random unit from (Units within 50.00 of ((Position of blue_portal[1]) offset by (0.00, 100.00)) matching (((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is A Hero) Equal to True) or (((Matching unit) belongs to an ally of Player 1
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Portal_target Not equal to No unit
        • Then - Actions
          • Unit - Move Portal_target instantly to ((Position of yellow_portal[1]) offset by (0.00, 100.00))
          • Environment - Create a 0.20 second Temporary crater deformation at ((Position of blue_portal[1]) offset by (0.00, 100.00)) with radius 100.00 and depth 300.00
          • Set p_offset = 15.00
          • Set p_unit_h = 15.00
          • Trigger - Turn on Portal UM <gen>
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Set Portal_target = (Random unit from (Units within 50.00 of ((Position of yellow_portal[1]) offset by (0.00, 100.00)) matching (((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is A Hero) Equal to True) or (((Matching unit) belongs to an ally of Player
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Portal_target Not equal to No unit
            • Then - Actions
              • Unit - Move Portal_target instantly to ((Position of blue_portal[1]) offset by (0.00, 100.00))
              • Environment - Create a 0.20 second Temporary crater deformation at ((Position of yellow_portal[1]) offset by (0.00, 100.00)) with radius 100.00 and depth 300.00
              • Set p_offset = 15.00
              • Set p_unit_h = 15.00
              • Trigger - Turn on Portal UM <gen>
              • Trigger - Turn off (This trigger)
            • Else - Actions
  • Portal UM
    • Events
      • Time - Every 0.01 seconds of game time
    • Conditions
    • Actions
      • Unit - Move Portal_target instantly to ((Position of Portal_target) offset by p_offset towards (Facing of Portal_target) degrees)
      • Animation - Change Portal_target flying height to ((Current flying height of Portal_target) + p_unit_h) at 2500.00
      • Set p_offset = (p_offset x 0.95)
      • Set p_unit_h = (p_unit_h - 0.50)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • And - All (Conditions) are true
            • Conditions
              • p_offset Less than or equal to 1.00
              • p_unit_h Less than 5.00
        • Then - Actions
          • Animation - Change Portal_target flying height to 0.00 at 1000.00
          • Trigger - Turn on Portals <gen>
          • Trigger - Turn off (This trigger)
        • Else - Actions
========================================================

"Spells must have an in-game screenshot and an adequate description."

I suggest you improve your description - it does not tell me anything about the spells.

"Spells must be free of bugs, leaks, unreasonable lag, and must be fully multiinstanceable."

I do not think your spells are MUI - or being able to be cast by 2 or more units at the same time and have the same effects -

========================================================

  • Unit Group - Pick every unit in (Units of type ) and do (Actions)
    • Loop - Actions
  • Unit - Make (Picked unit) face Bw_caster over 0.01 seconds
  • //
  • //
  • //You need to put it inside the Loop - right now, its not doing anything. Also, it isn't actually doing anything anyways, as its returning null because 'Units of Type .,..' does not exist.
  • //
  • //Example:
  • Unit Group - Pick every unit in (Units of type ) and do (Actions)
    • Loop - Actions
      • Unit - Make (Picked unit) face Bw_caster over 0.01 seconds
==============================

  • For each (Integer A) from 1 to 10, do (Actions)
    • Loop - Actions
Never use (Integer A) - always use a variable as its more efficient.

Also, 210 is too high for a loop, try to keep it below 40

  • For each (Integer A) from 1 to 210, do (Actions)
    • Loop - Actions
==============================

  • Set Bw_loc = (Position of Bw_caster)
I do not see you destroying this location. - This is called a memory leak, and memory leaks cause lagg. Destroy it via:

  • Custom script: call RemoveLocation(udg_Bw_loc)
Put that at the end of the trigger, or loop, and it'll remove the memory leak.

Also, (Point (YourVariable) offset by XXX) leaks, unless set to another variable, and then destroying it.

  • Set bsl_angle = (Angle from bsl_loc to (Target point of ability being cast))
  • //Leaks
==============================

  • Wait 0.60 seconds
In most cases, waits make your spells non-MUI, unless you're using locals... but then it makes the spell inefficient. Waits are bad, try to avoid them. I suggest you use a integer and a loop that increases the integer until it reaches your wanted delay.

==============================

  • Time - Every 0.01 seconds of game time
.01 is too fast. The most efficient loop is .03, and you shouldn't see any real difference visually.

==============================

  • Unit Group - Pick every unit in (Units within 512.00 of (Center of (Playable map area))) and do (Actions)
    • Loop - Actions
  • //
  • //This leaks, unless you're using a variable... to avoid it, do this:
  • //
  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within 512.00 of (Center of (Playable map area))) and do (Actions)
    • Loop - Actions
==============================

Your should aim for naming variables to be self explanatory, or provide documentation on what it does. Many of your variables are three letters like 'tsd', which is hard to understand when another configures the ability.

==============================

When dealing with (Last Created Unit) or (Picked Unit), or really any (____), if you use it more than twice, it is usually more efficient to set it to a variable and substitute the (_____) with the variable.

==============================

I highly suggest that you do not use:
  • Player - Player 1 (Red) Presses the (KEY)
Mostly because it'll conflict with systems, such as a movement system. Some entire games are based upon these systems, and this could very easily conflict with it.

==============================

Suggestion: Hashtables & Leaks

I'll admit the effects are pretty cool, but the leaks, non-MUI part, and inefficiency bring them down.

~Needs some work~
 
Last edited:
Level 12
Joined
Apr 16, 2010
Messages
584
I have to add something too...
Something new:P

-you set some variables to 0 at the spell cast trigger, if you recycle them you should better do it at the end;
-you should store a level of ability in a temp variable;
-you should really create more variables to make the spell a lot easier to configure;
-you leak some unitgroups and some set to variables, those that are destroyed right after they are used you could replace the variable where you set the group with the custom script: set bj_wantDestroyGroup = true - it destroys the group after it's no longer used;
-haha, you create some dummies for owner of player 1 red lol;
-some triggers only work for player 1 red;
-hmm you also lock camera for some reason...;
-in unit groups you also pick structures and dead units!;
There's still a lot of things that need to be set, but to much triggers. I suggest you to upload first only one spell, so then people will concentrate only on one thing and it will be easier to help you... Your spells aren't MUI and some of them leak (well almost all but you kinda destroy some leaks), so i suggest you to read some tutorials:
http://www.hiveworkshop.com/forums/...279/multi-instancible-gui-spell-making-34393/
http://www.hiveworkshop.com/forums/triggers-scripts-269/things-leak-35124/
But the spells look kinda cool, can't test them though...=(
Well, hope you'll improve them!
And this was said but please remove the imports it's against the rules!
Won't rate it but lets give you some rep for start! Just don't give up!
 
Just by looking at these, I can tell they're not MUI (Multi Unit Instanceable)
Those links Archangel gave you are VERY useful for beginners.
Hashtables are pretty easy to work with for GUIers :)
But, you do have the option to skip GUI and go straight to JASS if you like ^^ (Just Another Scripting Syntax)
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
I'll just comment on Trigger A
- Createunit for Player1 is too specific, make it Triggering player
- I really dont see the point of bw_int (well you indexed it but its the wrong way)
- Leak >>> Bw_loc offset by 100.00
- The picked unit should inside the unit group you were pickin
- Leak >>> Position of bw_dummy_array and you have to destroy the lightning as well
- You're spamming IntegerA & B, better use integer variable

if you want to learn indexing I suggest you look at this >>> http://www.hiveworkshop.com/forums/...late-144325/?prev=search=indexing&d=list&r=20
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
me not think so, I duplicate this trigger and tested like this...it's not causing any bug...
  • Untitled Trigger 001
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Set i[1] = (i[1] + 1)
          • Unit - Create 1 Footman for Neutral Passive at (Center of (Playable map area)) facing Default building facing degrees
          • Game - Display to (All players) the text: (String(i[1]))
 
Top