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

Lightning Circle v0.03 [MUI]

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: -Derp-
Creates a circle of lightning move around the target point,deals damage to the units that inside around the lightning circle and sucks nearby units into the lightning circle.

Level Description
-------------------------Level Description-----------------------------
181889-albums4279-picture49145.jpg


[Level 1] - Deals 400 total damage,last 5 second.
[Level 2] - Deals 800 total damage,last 5 second.
[Level 3] - Deals 1200 total damage,last 5 second.

----------------------------------------------------------------------
It simple isn't?But i just learned the simple MUI indexing ago.
Thanks for Pharaoh_ fix the leaks.
Thanks for the mckill2009 for the simple MUI indexing.
  • LC Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Lightning Circle
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LC_Index1 Equal to 0
        • Then - Actions
          • Trigger - Turn on LC Loop <gen>
        • Else - Actions
      • Set LC_Index1 = (LC_Index1 + 1)
      • Set LC_Index2 = (LC_Index2 + 1)
      • Set LC_Caster[LC_Index2] = (Triggering unit)
      • Set LC_TargetPoint[LC_Index2] = (Target point of ability being cast)
      • Set LC_StartTimer[LC_Index2] = 200.00
      • Set LC_ExpiredTimer[LC_Index2] = 0.00
      • Set LC_Boolean[LC_Index2] = True
      • Set LC_Damage[LC_Index2] = (2.00 x (Real((Level of Lightning Circle for LC_Caster[LC_Index2]))))
      • Unit - Create 1 Lightning_Hole for (Owner of LC_Caster[LC_Index2]) at LC_TargetPoint[LC_Index2] facing Default building facing degrees
      • Set LC_Dummy[LC_Index2] = (Last created unit)
      • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
      • Set LC_Point = (Position of LC_Dummy[LC_Index2])
      • Set LC_Point2 = (Position of LC_Dummy[LC_Index2])
      • Set LC_Group = (Units within 500.00 of LC_Point2 matching (((Matching unit) belongs to an enemy of (Owner of LC_Dummy[LC_Index2])) Equal to True))
      • For each (Integer A) from 1 to 20, do (Actions)
        • Loop - Actions
          • Set LC_Point3 = (Position of LC_Dummy[LC_Index2])
          • Set LC_Point4 = (LC_Point3 offset by 500.00 towards ((Real((Integer A))) x (360.00 / 20.00)) degrees)
          • Unit - Create 1 Lightning_Dummy for (Owner of LC_Caster[LC_Index2]) at LC_Point4 facing LC_TargetPoint[LC_Index2]
          • Set LC_Dummy2[LC_Index2] = (Last created unit)
          • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_LC_Point3)
          • Custom script: call RemoveLocation(udg_LC_Point4)
      • Custom script: call RemoveLocation(udg_LC_TargetPoint[udg_LC_Index2])
      • Custom script: call RemoveLocation(udg_LC_Point)
      • Custom script: call RemoveLocation(udg_LC_Point2)
      • Custom script: call DestroyGroup(udg_LC_Group)
  • LC Loop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer LC_IndexLoop) from 1 to LC_Index2, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • LC_StartTimer[LC_IndexLoop] Greater than or equal to LC_ExpiredTimer[LC_IndexLoop]
            • Then - Actions
              • Set LC_Point5[LB_IndexLoop] = (Position of LC_Dummy[LC_IndexLoop])
              • Set LC_Group = (Units within 500.00 of LC_Point5[LB_IndexLoop] matching (((Matching unit) belongs to an enemy of (Owner of LC_Dummy[LC_IndexLoop])) Equal to True))
              • Set LC_ExpiredTimer[LC_IndexLoop] = (LC_ExpiredTimer[LC_IndexLoop] + 1.00)
              • Destructible - Pick every destructible within 500.00 of LC_Point5[LB_IndexLoop] and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Destructible-type of (Picked destructible)) Equal to Summer Tree Wall
                    • Then - Actions
                      • Destructible - Kill (Picked destructible)
                    • Else - Actions
              • Custom script: set bj_wantDestroyGroup=true
              • Unit Group - Pick every unit in LC_Group and do (Actions)
                • Loop - Actions
                  • Set LC_Unit = (Picked unit)
                  • Set LC_UnitPoint = (Position of LC_Unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to False
                      • ((Picked unit) is alive) Equal to True
                    • Then - Actions
                      • Set LC_OffPoint[LB_IndexLoop] = (LC_UnitPoint offset by 0.25 towards (Facing of LC_Unit) degrees)
                      • Unit - Move LC_Unit instantly to LC_OffPoint[LB_IndexLoop], facing LC_Point5[LB_IndexLoop]
                      • Unit - Cause LC_Dummy[LC_IndexLoop] to damage LC_Unit, dealing LC_Damage[LC_IndexLoop] damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect at (Position of (Picked unit)) using war3mapImported\Lightnings Long.mdx
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: call RemoveLocation(udg_LC_OffPoint[udg_LC_IndexLoop])
                    • Else - Actions
                  • Custom script: call RemoveLocation(udg_LC_UnitPoint)
              • Custom script: call DestroyGroup(udg_LC_Group)
              • Custom script: call RemoveLocation(udg_LC_Point5[udg_LC_IndexLoop])
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • LC_Boolean[LC_IndexLoop] Equal to True
                • Then - Actions
                  • Set LC_Index1 = (LC_Index1 - 1)
                  • Set LC_Boolean[LC_IndexLoop] = False
                  • Unit - Explode LC_Dummy[LB_IndexLoop]
                  • Unit - Explode LC_Dummy2[LB_IndexLoop]
                • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LC_Index1 Equal to 0
        • Then - Actions
          • Set LC_Index2 = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions
Another Spell
  • LB Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Lightning Bolt
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LB_Index1 Equal to 0
        • Then - Actions
          • Trigger - Turn on LB Loop <gen>
        • Else - Actions
      • Set LB_Index1 = (LB_Index1 + 1)
      • Set LB_Index2 = (LB_Index2 + 1)
      • Set LB_Caster[LB_Index2] = (Triggering unit)
      • Set LB_StartTimer[LB_Index2] = 100.00
      • Set LB_ExpiredTimer[LB_Index2] = 0.00
      • Set LB_TargetPoint[LB_Index2] = (Target point of ability being cast)
      • Unit - Make LB_Caster[LB_Index2] face LB_TargetPoint[LB_Index2] over 0.00 seconds
      • Set LB_Damage[LB_Index2] = (5.00 x (Real((Level of Lightning Bolt for LB_Caster[LB_Index2]))))
      • Set LB_Boolean[LB_Index2] = True
      • Set LB_Point = (Position of LB_Caster[LB_Index2])
      • Unit - Create 1 Lightning_Bolt for (Owner of LB_Caster[LB_Index2]) at LB_Point facing (Facing of LB_Caster[LB_Index2]) degrees
      • Set LB_Dummy[LB_Index2] = (Last created unit)
      • Set LB_Point2 = (Position of LB_Dummy[LB_Index2])
      • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
      • Set LB_Group[LB_Index2] = (Units within 150.00 of LB_Point2 matching (((Matching unit) belongs to an enemy of (Owner of LB_Caster[LB_Index2])) Equal to True))
      • Custom script: call RemoveLocation(udg_LB_TargetPoint[udg_LB_Index2])
      • Custom script: call RemoveLocation(udg_LB_Point)
      • Custom script: call RemoveLocation(udg_LB_Point2)
  • LB Loop
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer LB_IndexLoop) from 1 to LB_Index2, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • LB_StartTimer[LB_IndexLoop] Greater than or equal to LB_ExpiredTimer[LB_IndexLoop]
            • Then - Actions
              • Set LB_Point3[LB_IndexLoop] = (Position of LB_Dummy[LB_IndexLoop])
              • Set LB_Point4[LB_IndexLoop] = (Position of LB_Dummy[LB_IndexLoop])
              • Set LB_Point5[LB_IndexLoop] = (LB_Point4[LB_IndexLoop] offset by 35.00 towards (Facing of LB_Dummy[LB_IndexLoop]) degrees)
              • Set LB_ExpiredTimer[LB_IndexLoop] = (LB_ExpiredTimer[LB_IndexLoop] + 1.00)
              • Set LB_Group[LB_IndexLoop] = (Units within 150.00 of LB_Point3[LB_IndexLoop] matching (((Matching unit) belongs to an enemy of (Owner of LB_Caster[LB_IndexLoop])) Equal to True))
              • Unit - Move LB_Dummy[LB_IndexLoop] instantly to LB_Point5[LB_IndexLoop]
              • Destructible - Pick every destructible within 150.00 of LB_Point4[LB_IndexLoop] and do (Actions)
                • Loop - Actions
                  • Destructible - Kill (Picked destructible)
              • Custom script: set bj_wantDestroyGroup=true
              • Unit Group - Pick every unit in LB_Group[LB_IndexLoop] and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to False
                      • ((Picked unit) is alive) Equal to True
                    • Then - Actions
                      • Unit - Move (Picked unit) instantly to ((Position of LB_Dummy[LB_IndexLoop]) offset by 10.00 towards (Facing of (Picked unit)) degrees), facing (Position of LB_Dummy[LB_IndexLoop])
                      • Unit - Cause LB_Dummy[LB_IndexLoop] to damage (Picked unit), dealing LB_Damage[LB_IndexLoop] damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect at (Position of LB_Dummy[LB_IndexLoop]) using war3mapImported\Lightnings Long.mdx
                      • Special Effect - Destroy (Last created special effect)
                    • Else - Actions
              • Custom script: call RemoveLocation(udg_LB_Point3[udg_LB_IndexLoop])
              • Custom script: call RemoveLocation(udg_LB_Point4[udg_LB_IndexLoop])
              • Custom script: call RemoveLocation(udg_LB_Point5[udg_LB_IndexLoop])
              • Custom script: call DestroyGroup(udg_LB_Group[udg_LB_IndexLoop])
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • LB_Boolean[LB_IndexLoop] Equal to True
                • Then - Actions
                  • Set LB_Index1 = (LB_Index1 - 1)
                  • Set LB_Boolean[LB_IndexLoop] = False
                • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LB_Index1 Equal to 0
        • Then - Actions
          • Set LB_Index2 = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions
Questions?
---------------------
Is this spell MUI?
Answer: Yes,this spell is MUI
---------------------
Changelog ------------------
v0.02
Remove the leaks.
v0.03
Remove Another Spell of leaks.

Keywords:
Lightning Circle,Lightning,Circle,Thunder,Suck,Damage,magical,MUI
Contents

Lightning Circle v0.03 (Map)

Reviews
12th Dec 2015 IcemanBo: For too long time as NeedsFix. Rejected. 20th Jul 2011 Bribe: LC_Dummy2 is pretty useless array, it only saves one of your 20 dummy units that you have. You might as well remove it and use "Unit - Make (Last created...

Moderator

M

Moderator

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

20th Jul 2011
Bribe:

LC_Dummy2 is pretty useless array, it only saves one of your 20
dummy units that you have. You might as well remove it and use
"Unit - Make (Last created unit) explode on death" from the loop
trigger instead.

Also, creating 20 units when the spell is cast is going to cause a
bit of lag each time you use the spell. If there was some dummy
recycling you were doing it would help this problem go away.


Maker, 3rd Aug 2011, Lightning Circle v0.03

Don't upload versions lesser than 1.0. Only completed/finished resources should be uploaded.
Add importing instructions into the map.
Do LC_Index1 Equal to 0 only after Set LC_Index1 = (LC_Index1 - 1)
You're using too many point variables, and none of them needs to be an array.
Use better tree detection.
 
Level 11
Joined
Jun 28, 2011
Messages
540
Post the triggers in [Trigger][/Trigger] tags next time.

  • LC Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Lightning Circle
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LC_Index1 Equal to 0
        • Then - Actions
          • Trigger - Turn on LC Loop <gen>
        • Else - Actions
      • Set LC_Index1 = (LC_Index1 + 1)
      • Set LC_Index2 = (LC_Index2 + 1)
      • Set LC_Caster[LC_Index2] = (Triggering unit)
      • Set LC_TargetPoint[LC_Index2] = (Target point of ability being cast)
      • Set LC_StartTimer[LC_Index2] = 200.00
      • Set LC_ExpiredTimer[LC_Index2] = 0.00
      • Set LC_Boolean[LC_Index2] = True
      • Set LC_Damage[LC_Index2] = (2.00 x (Real((Level of Lightning Circle for LC_Caster[LC_Index2]))))
      • Unit - Create 1 Lightning_Hole for (Owner of LC_Caster[LC_Index2]) at LC_TargetPoint[LC_Index2] facing Default building facing degrees
      • Set LC_Dummy[LC_Index2] = (Last created unit)
      • Unit - Add a 10.00 second Generic expiration timer to LC_Dummy[LC_Index2]
      • Set LC_Group[LC_Index2] = (Units within 500.00 of (Position of LC_Dummy[LC_Index2]) matching (((Matching unit) belongs to an enemy of (Owner of LC_Dummy[LC_Index2])) Equal to True))
      • Set LC_Point[LC_Index2] = (Position of LC_Dummy[LC_Index2])
      • For each (Integer A) from 1 to 18, do (Actions)
        • Loop - Actions
          • Unit - Create 1 Lightning_Dummy for (Owner of LC_Caster[LC_Index2]) at (LC_TargetPoint[LC_Index2] offset by 500.00 towards ((Real((Integer A))) x (360.00 / 18.00)) degrees) facing LC_TargetPoint[LC_Index2]
          • Set LC_Dummy2[LC_Index2] = (Last created unit)
          • Unit - Add a 10.00 second Generic expiration timer to LC_Dummy2[LC_Index2]
      • Custom script: call RemoveLocation(udg_LC_TargetPoint[udg_LC_Index2])
      • Custom script: call RemoveLocation(udg_LC_Point[udg_LC_Index2])
      • Custom script: call DestroyGroup(udg_LC_Group[udg_LC_Index2])
  • LC Loop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer LC_IndexLoop) from 1 to LC_Index2, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • LC_StartTimer[LC_IndexLoop] Greater than or equal to LC_ExpiredTimer[LC_IndexLoop]
            • Then - Actions
              • Set LC_Group[LC_IndexLoop] = (Units within 500.00 of (Position of LC_Dummy[LC_IndexLoop]) matching (((Matching unit) belongs to an enemy of (Owner of LC_Dummy[LC_IndexLoop])) Equal to True))
              • Set LC_ExpiredTimer[LC_IndexLoop] = (LC_ExpiredTimer[LC_IndexLoop] + 1.00)
              • Set LC_Point[LC_IndexLoop] = (Position of LC_Dummy[LC_IndexLoop])
              • Destructible - Pick every destructible within 500.00 of (Position of LC_Dummy[LC_IndexLoop]) and do (Actions)
                • Loop - Actions
                  • Destructible - Kill (Picked destructible)
              • Custom script: set bj_wantDestroyGroup=true
              • Unit Group - Pick every unit in LC_Group[LC_IndexLoop] and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to False
                      • ((Picked unit) is alive) Equal to True
                    • Then - Actions
                      • Unit - Move (Picked unit) instantly to ((Position of (Picked unit)) offset by 0.50 towards (Facing of (Picked unit)) degrees), facing LC_Point[LC_IndexLoop]
                      • Unit - Cause LC_Dummy[LC_IndexLoop] to damage (Picked unit), dealing LC_Damage[LC_IndexLoop] damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect at (Position of (Picked unit)) using war3mapImported\Lightnings Long.mdx
                      • Special Effect - Destroy (Last created special effect)
                    • Else - Actions
              • Custom script: call DestroyGroup(udg_LC_Group[udg_LC_IndexLoop])
              • Custom script: call RemoveLocation(udg_LC_Point[udg_LC_IndexLoop])
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • LC_Boolean[LC_IndexLoop] Equal to True
                • Then - Actions
                  • Set LC_Index1 = (LC_Index1 - 1)
                  • Set LC_Boolean[LC_IndexLoop] = False
                • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LC_Index1 Equal to 0
        • Then - Actions
          • Set LC_Index2 = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions
  • LB Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Lightning Bolt
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LB_Index1 Equal to 0
        • Then - Actions
          • Trigger - Turn on LB Loop <gen>
        • Else - Actions
      • Set LB_Index1 = (LB_Index1 + 1)
      • Set LB_Index2 = (LB_Index2 + 1)
      • Set LB_Caster[LB_Index2] = (Triggering unit)
      • Set LB_StartTimer[LB_Index2] = 100.00
      • Set LB_ExpiredTimer[LB_Index2] = 0.00
      • Set LB_TargetPoint[LB_Index2] = (Target point of ability being cast)
      • Unit - Make LB_Caster[LB_Index2] face LB_TargetPoint[LB_Index2] over 0.00 seconds
      • Set LB_Damage[LB_Index2] = (5.00 x (Real((Level of Lightning Bolt for LB_Caster[LB_Index2]))))
      • Set LB_Group[LB_Index2] = (Units within 150.00 of (Position of LB_Dummy[LB_Index2]) matching (((Matching unit) belongs to an enemy of (Owner of LB_Caster[LB_Index2])) Equal to True))
      • Set LB_Boolean[LB_Index2] = True
      • Unit - Create 1 Lightning_Bolt for (Owner of LB_Caster[LB_Index2]) at (Position of LB_Caster[LB_Index2]) facing (Facing of LB_Caster[LB_Index2]) degrees
      • Set LB_Dummy[LB_Index2] = (Last created unit)
      • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation(udg_LB_TargetPoint[udg_LB_Index2])
  • LB Loop
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer LB_IndexLoop) from 1 to LB_Index2, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • LB_StartTimer[LB_IndexLoop] Greater than or equal to LB_ExpiredTimer[LB_IndexLoop]
            • Then - Actions
              • Set LB_ExpiredTimer[LB_IndexLoop] = (LB_ExpiredTimer[LB_IndexLoop] + 1.00)
              • Set LB_Group[LB_IndexLoop] = (Units within 150.00 of (Position of LB_Dummy[LB_IndexLoop]) matching (((Matching unit) belongs to an enemy of (Owner of LB_Caster[LB_IndexLoop])) Equal to True))
              • Unit - Move LB_Dummy[LB_IndexLoop] instantly to ((Position of LB_Dummy[LB_IndexLoop]) offset by 35.00 towards (Facing of LB_Dummy[LB_IndexLoop]) degrees)
              • Destructible - Pick every destructible within 150.00 of (Position of LB_Dummy[LB_IndexLoop]) and do (Actions)
                • Loop - Actions
                  • Destructible - Kill (Picked destructible)
              • Custom script: set bj_wantDestroyGroup=true
              • Unit Group - Pick every unit in LB_Group[LB_IndexLoop] and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is A structure) Equal to False
                      • ((Picked unit) is alive) Equal to True
                    • Then - Actions
                      • Unit - Move (Picked unit) instantly to ((Position of LB_Dummy[LB_IndexLoop]) offset by 10.00 towards (Facing of (Picked unit)) degrees), facing (Position of LB_Dummy[LB_IndexLoop])
                      • Unit - Cause LB_Dummy[LB_IndexLoop] to damage (Picked unit), dealing LB_Damage[LB_IndexLoop] damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect at (Position of LB_Dummy[LB_IndexLoop]) using war3mapImported\Lightnings Long.mdx
                      • Special Effect - Destroy (Last created special effect)
                    • Else - Actions
              • Custom script: call DestroyGroup(udg_LB_Group[udg_LB_IndexLoop])
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • LB_Boolean[LB_IndexLoop] Equal to True
                • Then - Actions
                  • Set LB_Index1 = (LB_Index1 - 1)
                  • Set LB_Boolean[LB_IndexLoop] = False
                • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • LB_Index1 Equal to 0
        • Then - Actions
          • Set LB_Index2 = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions

  • Unit - Create 1 Lightning_Dummy for (Owner of LC_Caster[LC_Index2]) at (LC_TargetPoint[LC_Index2] offset by 500.00 towards ((Real((Integer A))) x (360.00 / 18.00)) degrees) facing LC_TargetPoint[LC_Index2]
Point offset by X towards X degrees leaks a location. You need to set it to a variable and remove it.



Don't use (Integer A) its inefficient and may cause bugs. Use a variable instead.

  • Unit - Make (UNIT) Explode on death
Add that to dummy units, from what I've heard it removes a possible leak.


A large amount of your variables don't need to be arrayed, like TargetPoint as you remove the location at the end of the trigger...

  • Destructible - Pick every destructible within 500.00 of (Position of LC_Dummy[LC_IndexLoop]) and do (Actions)
    • Loop - Actions
      • Destructible - Kill (Picked destructible)
If I'm right, that will destroy bridges.




If you'd like to make your spell more efficient, set (Picked Unit) to a variable and use the variable instead of calling GetEnumUnit when you pick every unit in a group...



Change the following:

Owner of LB_Caster -> (Triggering Player)
Owner of LC_Caster -> (Triggering Player)



  • Set LB_Dummy[LB_Index2] = (Last created unit)
  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Use the variable instead of (Last created unit) as its more efficient.




  • Time - Every 0.02 seconds of game time
.03 is preferred over .02 as its more efficient.



You shouldn't have to use imported models to make a spell look nice... next time try to use the generic Warcraft 3 effects instead of importing them.



I'd suggest decreasing the damage significantly, 1200 is extremely high. The pull rate seems rather slow, I'd suggest increasing the rate that enemies are sucked in.

Also, for the Lightning Bolt, it needs a pathing check badly, as it can go out of the map bounds.
 
Level 13
Joined
Oct 25, 2009
Messages
995
Thanks for report the bugs and leaks,but what do you mean don't use (Integer A)?
How can i use variables to create the lightnings?
EDIT: also,why i make a new point,and set the lightning_dummy create at the target point,but the lightning dummy create at the middle of the game?
EDIT 2:But the lightning dummy will auto go to the center of the map?
  • For each (Integer A) from 1 to 18, do (Actions)
    • Loop - Actions
      • Set LC_Point2[LB_Index2] = (LC_TargetPoint[LB_Index2] offset by 500.00 towards ((Real((Integer A))) x (360.00 / 18.00)) degrees)
      • Unit - Create 1 Lightning_Dummy for (Owner of LC_Caster[LC_Index2]) at LC_Point2[LB_Index2] facing LC_TargetPoint[LC_Index2]
      • Set LC_Dummy2[LC_Index2] = (Last created unit)
      • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation(udg_LC_Point2[udg_LC_Index2])
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
Don't use (Integer A) its inefficient and may cause bugs. Use a variable instead.

not if the spell casts instantly...

this may causes problems...
  • Unit - Create 1 Lightning_Dummy for (Owner of LC_Caster[LC_Index2]) at LC_Point4 facing LC_TargetPoint[LC_Index2]
  • Set LC_Dummy2[LC_Index2] = (Last created unit) <<< THIS...
say LC_Index2 = 1
the variable say LC_Dummy2[LC_Index2] overwrites the last created dummy 19 times...

creating array points and destroying is useless, create a temploc instead...
like this >>> Set LC_Point5[LB_IndexLoop], better;
  • Set temploc = (Position of LC_Dummy[LC_IndexLoop])
  • //actions
  • Custom script: call RemoveLocation(udg_temploc)

this...
Set LC_ExpiredTimer[LC_IndexLoop] = (LC_ExpiredTimer[LC_IndexLoop] + 1.00)

should be this...
Set LC_ExpiredTimer[LC_IndexLoop] = (LC_ExpiredTimer[LC_IndexLoop] + 0.05)
but you should set the StartTimer = 20.0
 
Top