- Joined
- Mar 6, 2015
- Messages
- 130
as the title indicates i want to damage units in loop trigger but just one time as you already know if i pick some units inside a loop and tell my caster to damage them every time they take damage multiply times and thats not good because you can`t predict how much damage the units would take in this spell that i made you can see my caster sends a lightning projectile that damage nearby enemies but how can i manage to damage them once?
my demo spell: download
-
Lightning Bolt Cast
-
Events
- Unit - A unit Starts the effect of an ability
-
Conditions
- (Ability being cast) Equal to Lightining Bolt
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Index_Size Equal to 0
-
Then - Actions
- Trigger - Turn on Lightning Bolt Loop <gen>
- Else - Actions
-
If - Conditions
- Set Index_Size = (Index_Size + 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Index_Size Greater than IndexM
-
Then - Actions
- Set Index[Index_Size] = Index_Size
- Set IndexM = Index_Size
- Else - Actions
-
If - Conditions
- Set TempInt = Index[Index_Size]
- Set Caster[TempInt] = (Casting unit)
- Set Player[TempInt] = (Owner of Caster[TempInt])
- Set TempPoint1 = (Position of Caster[TempInt])
- Set TempPoint2 = (Target point of ability being cast)
- Set Damage_Amount[TempInt] = 50.00
- Set Face[TempInt] = (Angle from TempPoint1 to TempPoint2)
- Set Damage_Range[TempInt] = 300.00
- Set Speed[TempInt] = 20.00
- Set Distance[TempInt] = (Distance between TempPoint1 and TempPoint2)
- Set Level[TempInt] = (Level of (Ability being cast) for Caster[TempInt])
- Unit - Create 1 Dummy for Player[TempInt] at TempPoint1 facing Face[TempInt] degrees
- Set Dummy[TempInt] = (Last created unit)
- Custom script: call RemoveLocation(udg_TempPoint1)
- Custom script: call RemoveLocation(udg_TempPoint2)
- Trigger - Turn on Lightning Bolt Loop <gen>
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Events
-
Lightning Bolt Loop
-
Events
- Time - Every 0.03 seconds of game time
- Conditions
-
Actions
-
For each (Integer Loop_Int) from 1 to Index_Size, do (Actions)
-
Loop - Actions
- Set TempInt = Index[Loop_Int]
- Set TempPoint1 = (Position of Dummy[TempInt])
- Set TempPoint2 = (TempPoint1 offset by Speed[TempInt] towards Face[TempInt] degrees)
- Set Distance[TempInt] = (Distance[TempInt] - Speed[TempInt])
- Special Effect - Create a special effect at TempPoint2 using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
- Special Effect - Destroy (Last created special effect)
- Custom script: set bj_wantDestroyGroup=true
-
Unit Group - Pick every unit in (Units within Damage_Range[TempInt] of TempPoint2 matching (((Matching unit) belongs to an enemy of Player[TempInt]) Equal to True)) and do (Actions)
-
Loop - Actions
- Unit - Cause Caster[TempInt] to damage (Picked unit), dealing (Damage_Amount[TempInt] x (Real(Level[TempInt]))) damage of attack type Spells and damage type Magic
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Distance[TempInt] Less than or equal to (2.00 x Speed[TempInt])
-
Then - Actions
- Unit - Add a 1.00 second Generic expiration timer to Dummy[TempInt]
- Unit - Order Dummy[TempInt] to Human Mountain King - Thunder Clap
- Set Index_Size = (Index_Size - 1)
- Set Loop_Int = (Loop_Int - 1)
-
Else - Actions
- Unit - Move Dummy[TempInt] instantly to TempPoint2, facing Face[TempInt] degrees
-
If - Conditions
- Custom script: call RemoveLocation(udg_TempPoint1)
- Custom script: call RemoveLocation(udg_TempPoint2)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Index_Size Equal to 0
-
Then - Actions
- Trigger - Turn off (This trigger)
- Else - Actions
-
If - Conditions
-
Loop - Actions
-
For each (Integer Loop_Int) from 1 to Index_Size, do (Actions)
-
Events
my demo spell: download