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

Gale Vortex v1.2

  • Like
Reactions: 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!

UPDATE1: Made the spell channeling, fixed effect lag, added better documentation, added trees and cliffs.
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

Moderator

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
 
Level 7
Joined
Sep 8, 2009
Messages
90
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).
 
Level 11
Joined
Jul 2, 2008
Messages
601
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 :p

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?
 
Level 22
Joined
Nov 14, 2008
Messages
3,256
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.

Documentation should be in comments and not trigger header, it is alot easier to read comments than trigger headers.

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.
 
Level 12
Joined
Jun 28, 2008
Messages
688
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:
Level 22
Joined
Nov 14, 2008
Messages
3,256
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
 
Level 11
Joined
Jul 2, 2008
Messages
601
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.
 
Level 12
Joined
Jun 28, 2008
Messages
688
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.
 
Level 11
Joined
Jul 2, 2008
Messages
601
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. ;)
 
Level 12
Joined
Jun 28, 2008
Messages
688
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.
 
Level 11
Joined
Jul 2, 2008
Messages
601
Just pick random terrain from Blizzard stuff :p
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 :mwahaha:
 
Level 11
Joined
Jul 2, 2008
Messages
601
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
 
Level 5
Joined
Dec 8, 2008
Messages
102
<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
 
Top