• 🏆 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!

Tornado Attack

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Tornado Attack
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Tornado Attack
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Group_Tornado1[1]) Equal to 0
        • Then - Actions
          • Trigger - Turn on Tornado Attack Loop <gen>
        • Else - Actions
      • Set Int_Tornado = (Int_Tornado + 1)
      • Set Unt_Tornado1[Int_Tornado] = (Triggering unit)
      • Set Point_Tornado[1] = (Position of Unt_Tornado1[Int_Tornado])
      • Set Point_Tornado[2] = (Target point of ability being cast)
      • Set Deg_Tornado[Int_Tornado] = (Angle from Point_Tornado[1] to Point_Tornado[2])
      • Unit - Create 1 Dummy Tornado Attack for (Owner of Unt_Tornado1[Int_Tornado]) at Point_Tornado[1] facing (Facing of Unt_Tornado1[Int_Tornado]) degrees
      • Set Unt_Tornado2[Int_Tornado] = (Last created unit)
      • Unit - Add a 2.50 second Generic expiration timer to Unt_Tornado2[Int_Tornado]
      • Unit - Turn collision for Unt_Tornado2[Int_Tornado] Off
      • Unit Group - Add Unt_Tornado2[Int_Tornado] to Group_Tornado1[1]
      • Unit Group - Add Unt_Tornado2[Int_Tornado] to Group_Tornado2[Int_Tornado]
      • Custom script: call RemoveLocation (udg_Point_Tornado[1])
      • Custom script: call RemoveLocation (udg_Point_Tornado[2])
  • Tornado Attack Loop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 0 to Int_Tornado, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unt_Tornado2[(Integer A)] is in Group_Tornado1[1]) Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Unt_Tornado2[(Integer A)] is alive) Equal to True
                • Then - Actions
                  • Set Point_Tornado[1] = (Position of Unt_Tornado2[(Integer A)])
                  • Set Point_Tornado[2] = (Point_Tornado[1] offset by 50.00 towards Deg_Tornado[(Integer A)] degrees)
                  • Unit - Move Unt_Tornado2[(Integer A)] instantly to Point_Tornado[2], facing Deg_Tornado[(Integer A)] degrees
                  • Set Group_Tornado1[2] = (Units within 200.00 of Point_Tornado[2] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) belongs to an enemy of (Owner of Unt_Tornado1[(Integer A)])) Equal to True) and ((((Mat
                  • Unit Group - Pick every unit in Group_Tornado1[2] and do (Actions)
                    • Loop - Actions
                      • Set Point_Tornado[3] = (Position of (Picked unit))
                      • Unit - Cause Unt_Tornado1[(Integer A)] to damage (Picked unit), dealing ((75.00 x (Real((Level of Tornado Attack for Unt_Tornado1[(Integer A)])))) x (Real((Number of units in Group_Tornado2[(Integer A)])))) damage of attack type Hero and damage type Divine
                      • Unit - Create 1 Dummy Other for (Owner of Unt_Tornado1[(Integer A)]) at Point_Tornado[3] facing Default building facing degrees
                      • Unit - Add Tornado Attack Effect to (Last created unit)
                      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                      • Unit - Order (Last created unit) to Night Elf Druid Of The Talon - Cyclone (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked unit) is A Hero) Equal to True
                        • Then - Actions
                          • Unit Group - Add (Picked unit) to Group_Tornado2[(Integer A)]
                        • Else - Actions
                      • Custom script: call RemoveLocation (udg_Point_Tornado[3])
                  • Custom script: call RemoveLocation (udg_Point_Tornado[1])
                  • Custom script: call RemoveLocation (udg_Point_Tornado[2])
                  • Custom script: call DestroyGroup (udg_Group_Tornado1[2])
                • Else - Actions
                  • Unit Group - Remove Unt_Tornado2[(Integer A)] from Group_Tornado1[1]
                  • Unit Group - Remove all units from Group_Tornado2[(Integer A)]
                  • Unit Group - Remove all units from Group_Tornado1[3]
                  • Set Unt_Tornado1[(Integer A)] = No unit
                  • Set Unt_Tornado2[(Integer A)] = No unit
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Number of units in Group_Tornado1[1]) Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                      • Set Int_Tornado = 0
                    • Else - Actions
            • Else - Actions
Contents

Just another Warcraft III map (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 21 Jan 2012 Pharaoh_: You need to improve your indexing. Follow Bribe's or Hanky's template, as they are the most recommended around. Bribe: Hanky's Dynamic Indexing

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

21 Jan 2012
Pharaoh_: You need to improve your indexing. Follow Bribe's or Hanky's template, as they are the most recommended around.

Bribe: Hanky's Dynamic Indexing
 
Top