# Gale Vortex v1.2

baassee
Here it is, the Gale Vortex!

Surprise this time, I know.

The spell:
Gale Vortex
Creates a spinning cyclone of wind in front of the caster, sucking units in a cone towards it. As the units are being pulled in, they will exhaust all of their energy trying to escape the vacuum, and will be immensely slowed when the vortex ends. Area range of 450, lasts 8 seconds.
Level 1 - 20% attack and movement speed slow.
Level 2 - 40% attack and movement speed slow.
Level 3 - 60% attack and movement speed slow.
Sounds boring, yes, but it's more of a treat for the eyes.

The code:
• Gale Vortex Init
• Events
• Unit - A unit Starts the effect of an ability
• Conditions
• (Ability being cast) Equal to Gale Vortex
• Actions
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_index1 Equal to 0
• Then - Actions
• Trigger - Turn on Gale Vortex Per <gen>
• Else - Actions
• Set gv_index1 = (gv_index1 + 1)
• Set gv_index2 = (gv_index2 + 1)
• Set gv_loopon[gv_index2] = True
• Set gv_caster[gv_index2] = (Triggering unit)
• Set gv_caster_loc[gv_index2] = (Position of gv_caster[gv_index2])
• Set gv_target_loc[gv_index2] = (Target point of ability being cast)
• Set gv_angle[gv_index2] = (Angle from gv_caster_loc[gv_index2] to gv_target_loc[gv_index2])
• Set gv_effect_loc[gv_index2] = (gv_caster_loc[gv_index2] offset by 10.00 towards gv_angle[gv_index2] degrees)
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The following three points can be changed to either extend or contract the range of the spell. --------
• -------- The value "offset by 215.00(225.00)" will determine how long each point extends. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Set gv_segment_1[gv_index2] = (gv_effect_loc[gv_index2] offset by 215.00 towards gv_angle[gv_index2] degrees)
• Set gv_segment_2[gv_index2] = (gv_segment_1[gv_index2] offset by 225.00 towards gv_angle[gv_index2] degrees)
• Set gv_segment_3[gv_index2] = (gv_segment_2[gv_index2] offset by 225.00 towards gv_angle[gv_index2] degrees)
• Unit - Create 1 effect Cyclone for (Owner of gv_caster[gv_index2]) at gv_effect_loc[gv_index2] facing gv_angle[gv_index2] degrees
• Set gv_effect[gv_index2] = (Last created unit)
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- When true, destroys trees in range of the cyclone. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Set gv_killtrees[gv_index2] = True
• Set gv_end[gv_index2] = False
• Gale Vortex Per
• Events
• Time - Every 0.03 seconds of game time
• Conditions
• Actions
• For each (Integer gv_index3) from 1 to gv_index2, do (Actions)
• Loop - Actions
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_loopon[gv_index3] Equal to True
• Then - Actions
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_end[gv_index3] Equal to False
• Then - Actions
• Set gv_counter[gv_index3] = (gv_counter[gv_index3] + 0.03)
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The condition value "40" will determine how often the spell effects are generated. --------
• -------- The smaller the value, the higher frequency the effects will be generated. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_sfx_counter[gv_index3] Greater than or equal to 40
• Then - Actions
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The range of value in "Random real number between 115.00 and 450.00" will determine the range at which the spell effects are generated. --------
• -------- The range of value in "Random real number between -95.00 and 95.00" will determine the range of angle at which the spell effects are generated. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Set gv_subeffect_loc[gv_index3] = (gv_segment_2[gv_index3] offset by (Random real number between 115.00 and 450.00) towards (gv_angle[gv_index3] + (Random real number between -95.00 and 95.00)) degrees)
• Unit - Create 1 effect Wind for (Owner of gv_caster[gv_index3]) at gv_subeffect_loc[gv_index3] facing Default building facing degrees
• Set gv_effect_wind[gv_index3] = (Last created unit)
• Unit - Order gv_effect_wind[gv_index3] to Move To gv_effect_loc[gv_index3]
• Unit - Add a 0.90 second Generic expiration timer to gv_effect_wind[gv_index3]
• Custom script: call RemoveLocation(udg_gv_subeffect_loc[udg_gv_index3])
• Set gv_sfx_counter[gv_index3] = 0
• Else - Actions
• Set gv_sfx_counter[gv_index3] = (gv_sfx_counter[gv_index3] + 1)
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The value "Units within 225.00" will determine the range at which the enemies are detected and dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Custom script: set bj_wantDestroyGroup = true
• Unit Group - Pick every unit in (Units within 225.00 of gv_segment_1[gv_index3] 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 gv_caster[gv_index3])) Equal to True)))) and do (Actions)
• Loop - Actions
• Set gv_group_point[gv_index3] = (Position of (Picked unit))
• Set gv_group_angle[gv_index3] = (Angle from gv_group_point[gv_index3] to gv_effect_loc[gv_index3])
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The value "offset by 1.50" will determine the rate at which the enemies are dragged. --------
• -------- The greater the value, the faster the units will be dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Set gv_pull_point[gv_index3] = (gv_group_point[gv_index3] offset by 1.50 towards gv_group_angle[gv_index3] degrees)
• Unit - Move (Picked unit) instantly to gv_pull_point[gv_index3]
• Unit - Make (Picked unit) face (gv_group_angle[gv_index3] + 180.00) over 0.00 seconds
• Animation - Play (Picked unit)'s walk animation
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- This selection will determine what special effect is emitted from each target being dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
• Special Effect - Destroy (Last created special effect)
• Custom script: call RemoveLocation(udg_gv_group_point[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_pull_point[udg_gv_index3])
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The value "Units within 225.00" will determine the range at which the enemies are detected and dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Custom script: set bj_wantDestroyGroup = true
• Unit Group - Pick every unit in (Units within 225.00 of gv_segment_2[gv_index3] 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 gv_caster[gv_index3])) Equal to True)))) and do (Actions)
• Loop - Actions
• Set gv_group_point[gv_index3] = (Position of (Picked unit))
• Set gv_group_angle[gv_index3] = (Angle from gv_group_point[gv_index3] to gv_effect_loc[gv_index3])
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The value "offset by 1.50" will determine the rate at which the enemies are dragged. --------
• -------- The greater the value, the faster the units will be dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Set gv_pull_point[gv_index3] = (gv_group_point[gv_index3] offset by 1.50 towards gv_group_angle[gv_index3] degrees)
• Unit - Move (Picked unit) instantly to gv_pull_point[gv_index3]
• Unit - Make (Picked unit) face (gv_group_angle[gv_index3] + 180.00) over 0.00 seconds
• Animation - Play (Picked unit)'s walk animation
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- This selection will determine what special effect is emitted from each target being dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
• Special Effect - Destroy (Last created special effect)
• Custom script: call RemoveLocation(udg_gv_group_point[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_pull_point[udg_gv_index3])
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The value "Units within 225.00" will determine the range at which the enemies are detected and dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Custom script: set bj_wantDestroyGroup = true
• Unit Group - Pick every unit in (Units within 225.00 of gv_segment_3[gv_index3] 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 gv_caster[gv_index3])) Equal to True)))) and do (Actions)
• Loop - Actions
• Set gv_group_point[gv_index3] = (Position of (Picked unit))
• Set gv_group_angle[gv_index3] = (Angle from gv_group_point[gv_index3] to gv_effect_loc[gv_index3])
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The value "offset by 1.50" will determine the rate at which the enemies are dragged. --------
• -------- The greater the value, the faster the units will be dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Set gv_pull_point[gv_index3] = (gv_group_point[gv_index3] offset by 1.50 towards gv_group_angle[gv_index3] degrees)
• Unit - Move (Picked unit) instantly to gv_pull_point[gv_index3]
• Unit - Make (Picked unit) face (gv_group_angle[gv_index3] + 180.00) over 0.00 seconds
• Animation - Play (Picked unit)'s walk animation
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- This selection will determine what special effect is emitted from each target being dragged. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
• Special Effect - Destroy (Last created special effect)
• Custom script: call RemoveLocation(udg_gv_group_point[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_pull_point[udg_gv_index3])
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_killtrees[gv_index3] Equal to True
• Then - Actions
• Destructible - Pick every destructible within 225.00 of gv_segment_1[gv_index3] and do (Actions)
• Loop - Actions
• Destructible - Set life of (Picked destructible) to ((Current life of (Picked destructible)) - 20.00)
• Destructible - Pick every destructible within 225.00 of gv_segment_2[gv_index3] and do (Actions)
• Loop - Actions
• Destructible - Set life of (Picked destructible) to ((Current life of (Picked destructible)) - 20.00)
• Destructible - Pick every destructible within 225.00 of gv_segment_3[gv_index3] and do (Actions)
• Loop - Actions
• Destructible - Set life of (Picked destructible) to ((Current life of (Picked destructible)) - 20.00)
• Else - Actions
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• -------- The condition value "8.00" will determine how long the spell runs for. --------
• -------- ---------------------------------------------------------------------------------------------------------------- --------
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_counter[gv_index3] Greater than or equal to 8.00
• Then - Actions
• Custom script: set bj_wantDestroyGroup = true
• Unit Group - Pick every unit in (Units within 225.00 of gv_effect_loc[gv_index3] 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 gv_caster[gv_index3])) Equal to True)))) and do (Actions)
• Loop - Actions
• Set gv_dummeh_point[gv_index3] = (Position of (Picked unit))
• Unit - Create 1 dummeh for (Owner of gv_caster[gv_index3]) at gv_dummeh_point[gv_index3] facing Default building facing degrees
• Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
• Unit - Add GV slow to (Last created unit)
• Unit - Set level of GV slow for (Last created unit) to (Level of Gale Vortex for gv_caster[gv_index3])
• Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)
• Custom script: call RemoveLocation(udg_gv_dummeh_point[udg_gv_index3])
• Unit - Remove gv_effect[gv_index3] from the game
• Custom script: call RemoveLocation(udg_gv_caster_loc[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_target_loc[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_effect_loc[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_segment_1[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_segment_2[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_segment_3[udg_gv_index3])
• Set gv_counter[gv_index3] = 0.00
• Set gv_loopon[gv_index3] = False
• Set gv_index1 = (gv_index1 - 1)
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_index1 Equal to 0
• Then - Actions
• Set gv_index2 = 0
• Trigger - Turn off (This trigger)
• Else - Actions
• Else - Actions
• Else - Actions
• Custom script: set bj_wantDestroyGroup = true
• Unit Group - Pick every unit in (Units within 225.00 of gv_effect_loc[gv_index3] 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 gv_caster[gv_index3])) Equal to True)))) and do (Actions)
• Loop - Actions
• Set gv_dummeh_point[gv_index3] = (Position of (Picked unit))
• Unit - Create 1 dummeh for (Owner of gv_caster[gv_index3]) at gv_dummeh_point[gv_index3] facing Default building facing degrees
• Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
• Unit - Add GV slow to (Last created unit)
• Unit - Set level of GV slow for (Last created unit) to (Level of Gale Vortex for gv_caster[gv_index3])
• Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)
• Custom script: call RemoveLocation(udg_gv_dummeh_point[udg_gv_index3])
• Unit - Remove gv_effect[gv_index3] from the game
• Custom script: call RemoveLocation(udg_gv_caster_loc[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_target_loc[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_effect_loc[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_segment_1[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_segment_2[udg_gv_index3])
• Custom script: call RemoveLocation(udg_gv_segment_3[udg_gv_index3])
• Set gv_counter[gv_index3] = 0.00
• Set gv_loopon[gv_index3] = False
• Set gv_index1 = (gv_index1 - 1)
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_index1 Equal to 0
• Then - Actions
• Set gv_index2 = 0
• Trigger - Turn off (This trigger)
• Else - Actions
• Else - Actions
• Gale Vortex End
• Events
• Unit - A unit Stops casting an ability
• Conditions
• (Ability being cast) Equal to Gale Vortex
• Actions
• For each (Integer gv_index3) from 1 to gv_index2, do (Actions)
• Loop - Actions
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• (Triggering unit) Equal to gv_caster[gv_index3]
• Then - Actions
• Set gv_end[gv_index3] = True
• Else - Actions
If you use or alter this spell, please just remember to give credits to me (StaberFire).

ENJOY!

UPDATE2: Made the spell ACTUALLY channeling. Thanks to Aspard and baassee kicking my ass 'til I did it. =P

Keywords:
Wind, Gale, Force, Pull, Drag, Cyclone, Vortex, CBS News.
Contents

# Gale Vortex (Map)

Reviews
18:05, 10th Apr 2010 The_Reborn_Devil: The triggering looks very good and it's well documented. The effects also fit the spell. Status: Approved Rating: Recommended

M

#### Moderator

18:05, 10th Apr 2010
The_Reborn_Devil:

The triggering looks very good and it's well documented. The effects also fit the spell.

Status: Approved
Rating: Recommended

#### Chief-Oblivion

Level 12
Originality - 4/5
Triggering - 3/5
Useful - 4/5

Overall Rating: Good

Comments - It is pretty good, it's a fun ability to use, but fix it up so if your hero moves while your casting that it stops the ability.

#### D4RK_G4ND4LF

Level 19
if you want the spell to stop if the hero stopps channeling you should add something like "current order of caster equal to channel"
however the spell is badass so far (but I remember some1 doing this be4 with the panda stormspirit and smaller)

#### Demongrip

Level 6
I knew it,the tornado`s pitch angle
Nvm the spell is quite good,but as chief-oblivion said it will be good to make the hero stop channeling the spell if he moves or is stunned or has any CC`ing effects on it(sleep,polymorph,voodoo).

#### Ironside

Level 22
Isn't indexing not allowed any more? :S
I think no it isn't, I think we have to use hash table now?

#### redscores

Level 21
Hashtables are better, but its his own decision, so please, shut up.

#### Aspard

Level 11
Question: for what do we have the "-damage" command in game? oO

If I'm you - I'd make an interesting testing map, e.g. it should include some unpathable cliffs, trees and water to get the full expression of what this spell will do in case of touch with them: this will help to determine the possible bugs. I think, you can just enter "Template" in the search here, Spells section and get about two or three possible variations.

Third one has already been told to you - make the spell really channeling

Otherwise, I like it, good description, multi-leveled, eye-candy (but maybe the idea isn't so creative, but I didn't see better for this part). I'll rate it 4/5 after better testmap and fixing the bug with channeling.

Oh, no, execuse me, I'll rate it 3/5 since you have no documentation on implementation as far as any trigger comments, which makes the triggers hard to read.

By the way, can't you make your Gale Vortex Per trigger work with loop somehow?

#### baassee

Level 22
Indexing is allowed as long as it's recycling. Hashtables got infinitive instances, indexing got about 8000 approx.

This spell lagged for me with 6 instances at the same time.

Also make the special effects reduced spam counting them each 0.03 even with removal is serious.

I dont think it's necessary to each 0.03 try to command the animation cause they wont even start it without get the new command again.

Destroying groups with BJs is slower then normal destroy group but doesnt matter for me but for many else.

Else I didnt find any weird stuff. good triggering.

#### hell gate

Level 14
call SetUnitX(udg_Unit, GetLocationX(udg_LeakPoint0))
call SetUnitY(udg_Unit, GetLocationY(udg_LeakPoint0))

#### aaron

Level 14
indexing is allowed :x but it must be recycling as said earlier but i came to believe ( me and a bunch of other coders ) that hash tables are only about 70% MUI and will have a possibility to bug.

#### StaberFire

Level 12
Thanks for your comments everyone, I knew it was a good idea to upload this at 2:00 AM. =P
Anyways, firstly and most prominently, I really wanted to make this spell channeling. My original idea was to make it slow by X% for each second that the caster spent channeling, but I couldn't figure out a way to detect the end of channeling and keep it MUI. If anyone could help me out with that I'd love you forever.
Secondly, I was not aware of any ban against indexing, and it's the only way I know how to make things MUI. If it's not allowed, I'll delete all my spells and give up triggering. =D
Thirdly, I'll add better documentation. I finished the spell around 1:45 AM so I just wanted to rush up the documentation and did a sloppy job. I'll add trigger comments as well as header comments. I'll also improve my test map for all the spells I've uploaded.
@Aspard, I don't really understand your last question... the Gale Vortex Per trigger is a loop, is it not?
@baassee, I know that SFX every 0.03 seconds is a bad idea, that's why I put in a rarity of occurence with the I/T/E statement. Although I can probably find a better way around that if I look into it for a while. I know that animations won't play through if ordered every 0.03 seconds, but I thought I may as well do that so at least they look like they're trying to walk rather than just chillin' there.
@hell gate, it would help if you told me what the hell that meant. =/
Overall, I'll try to find a better, less laggy way to implement special effects and if someone could help me figure out a way to cancel the loop when the caster stops channeling that would be wonderful.

Last edited:

#### baassee

Level 22
Make another trigger with "unit stops casting an ability"

condition ability being cast ofc

action

for each and every integer 1 to bla

if triggering unit equal to unit index [3]

then "here you make something that stops the loop" ^^

else nothing

to fix the sp

use if then else

condition an integer reaches a number

then create an effect + destroy and null the integer

else +1 the integer

#### Aspard

Level 11
Just a post with miss-information, delete it, if you can.

Last edited:

#### StaberFire

Level 12
Updated, fixed all that stuff.

Aspard, I still don't know what you mean...

I have 1 loop from 1 to gv_index2, I dunno where you're getting your facts.

#### Aspard

Level 11
Okay, not loops, but I meant, that this could be done with one, not three times:

• Custom script: set bj_wantDestroyGroup = true
• Unit Group - Pick every unit in (Units within 225.00 of gv_segment_1[gv_index3] matching...
• Custom script: set bj_wantDestroyGroup = true
• Unit Group - Pick every unit in (Units within 225.00 of gv_segment_2[gv_index3] matching...
• Custom script: set bj_wantDestroyGroup = true
• Unit Group - Pick every unit in (Units within 225.00 of gv_segment_3[gv_index3] matching...
And don't tell me, that here three different "segments" - there is always possibility to make it just with a one loop.
Nevermind, that's just a talk about efficiency, the spells performs well w/o it.

#### StaberFire

Level 12
I don't think I could do that with just one, as if I picked the middle segment for example, yes I could extend the range so that it covers where all three points would cover. However, the range would also extend to the side, as it covers a circular area. Therefor, units that are 450 range to the side would also be dragged inward, which is an undesired effect.

#### Deuterium

Level 17
Well I must say the channeling bugs... try casting it while already casting it and you'll get what I mean.

I see already alot of people checked the triggering, so I wont.

And to leave a note on indexing vs. hashtables:
Each has it's own separate benefits, so which to use is just a personal choice

#### StaberFire

Level 12
Yeah the channeling does bug unfortunately... the way I checked if the caster is still channeling was to check his current order and well... if you order him to channel again he's still channeling. =P
I'll try and fix that sometime tomorrow.

#### baassee

Level 22
dont check current order, check if he interrups it instead

@seed
there are more ways of MUIness than just indexing and hashtables

#### hell gate

Level 14
set units x and y allowes the units to move

Last edited:

#### StaberFire

Level 12
set units x and y allowes the units to move

So does polar offset.

@baassee, with the current indexing I'm using, a third trigger will not be MUI. I've tried it a bunch of times a bunch of different ways, but another trigger just won't work.

#### baassee

Level 22
You can always make 3 triggers MUI

#### StaberFire

Level 12
Holy crap, such a simple edit, too. Man I feel dumb.

Thanks a bunch guys, fixed.

#### Aspard

Level 11
Just to be accurate: Don't you think the units should be slowed even if the channeling has been interrupted?

If there is better testmap and more custom comments and a simple readme, I'd rate it 5/5, but just 4 now. Also you can make the variable (switching on or off) to make the spell make some low DPS.

#### StaberFire

Level 12
You're right, I overlooked that, they were only being slowed if they were next to the caster.
As for the DPS, don't I/T/E statements not work in Unit Group loops? And vice versa? I recall hearing that somewhere.
Also I dunno what else I can add to the test map to make it better, I made cliffs and trees to show what effects would occur when they were involved... the units revive... you can refresh and level... I hope you don't mean you want me to make the terrain look pretty, 'cause I'm a spell maker not a terrainer.

#### Aspard

Level 11
Just pick random terrain from Blizzard stuff
Or from the Maps (Template) section... or here (Spells - Template)... dunno
What's I/T/E? Huh? For me damaging units in groups always worked fine. The only thing you'll have to do is to add already damaged units to the specific group in order to prevent double or triple damaging during the further loop actions and then destroy it (group) at the end of the loop (or just clean).

If I/T/E = If/Then/Else, then I don't know, why it shouldn't work inside loop of unit group, that's just a nonsence for me

#### StaberFire

Level 12
If/Then/Else. In order to make DPS turn on/off, I'd have to make a Boolean value. Then to check the Boolean value I'd have to put an If/Then/Else statement in the Unit Group loop. I don't think that works.

#### Aspard

Level 11
Ehm? oO

• Unit Group - Pick every unit in (Units within 225.00 of gv_segment_1[gv_index3] matching bla-bla and do (Actions)
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• gv_boolean[gv_index3] equal to (==) True
• Then - Actions
• Unit - Cause gv_caster[gv_index3] to damage (Picked unit), dealing gv_damage[gv_index3] damage of attack type Spell and damage type Common
• Unit Group - Add (Picked unit) to gv_DebugGroup[gv_index3]
• Else - Actions
• Trigger - Some group actions
• Unit Group - Remove all units from gv_DebugGroup[gv_index3]
Why do you think this won't work? Of course, it will!

I made a personal research and it worked with such a trigger:

• Test
• Events
• Unit - A unit starts an effect of ability
• Conditions
• (Ability being cast) equal to (==) Any spell (I made it with the first ability of Tauren Chieftain, dunno eng name)
• Actions
• Set Boolean = True
• Unit Group - Pick every unit in (Units within 300.00 of (Target point of ability being cast)) and do (Actions)
• Loop - Actions
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• Boolean equal to (==) True
• Then - Actions
• Unit - Cause (Triggering unit) to damage (Picked unit), dealing 500.00 damage of attack type Spell and damage type common
• Else - Actions

#### baassee

Level 22
damaging in unit groups works fine, debug groups to

#### samioka

Level 1
i dont know how to import spells pls help, i wanna make a map!

#### Teldrassil

Level 9
hey sweet! I've made this exact spell before, very nice.

well done and it looks great!

#### Wezthal

Level 10
Nice, very inspiring spell.

#### Itachi009

Level 5
<3 effects are somehow really cool

and on the old index vs hashtable discussion... i benchmarked 2 of my spells (simple missiles) and indexing was about 2x times faster than hashtables, but for performance i would say hashtables are cleaner

#### Gekigengar

Level 16
it lags so much when i try pulling a group of unit with both hero from diffrent sides.

Replies
5
Views
8K
Replies
11
Views
10K
Replies
20
Views
9K
Replies
16
Views
9K
Replies
0
Views
423