Nature Walk v1.8

  • Like
Reactions: HandsOfficial
Hello. This is my first MUI spell, i hope you enjoy it.
Caster starts moving fast to targeted point in 500 distance and 100 bonus distance per level, by his way every unit within 300 of him becomes entangled in roots. When caster reaches targeted point he slams the ground stunning units for 3 seconds and dealing 100 damage and 100 bonus damage per level.

  • Nature Walk Settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ----------------------------------------------- --------
      • -------- Tree check system by D4RK_G4ND4LF --------
      • -------- ----------------------------------------------- --------
      • Set NW_Point1 = (Point(0.00, 0.00))
      • Unit - Create 1 Peasant for Neutral Passive at NW_Point1 facing Default building facing degrees
      • Unit - Hide (Last created unit)
      • Unit - Make (Last created unit) Invulnerable
      • Set NW_Dummy = (Last created unit)
      • Custom script: call RemoveLocation(udg_NW_Point1)
      • -------- ----------------------------------------------- --------
      • -------- Setting ability --------
      • -------- ----------------------------------------------- --------
      • Set NW_Ability = Natur|c0020c000e|r Walk
      • -------- ----------------------------------------------- --------
      • -------- This is a speed of caster, but it will increase periodically --------
      • -------- ----------------------------------------------- --------
      • Set NW_SpeedBase = 1.00
      • -------- ----------------------------------------------- --------
      • -------- Area of Effect of units that suppose to be entangled --------
      • -------- ----------------------------------------------- --------
      • Set NW_AoE1 = 150.00
      • -------- ----------------------------------------------- --------
      • -------- Area of Effect of units that suppose to be stunned --------
      • -------- ----------------------------------------------- --------
      • Set NW_AoE2 = 300.00
      • -------- ----------------------------------------------- --------
      • -------- Setting dummy abilities --------
      • -------- ----------------------------------------------- --------
      • Set NW_DummyAbility[1] = Entangling Roots (Dummy)
      • Set NW_DummyAbility[2] = Stun (Dummy)
      • -------- ----------------------------------------------- --------
      • -------- Animation time, animation of "attack slam"!!! Every hero has it's own animation time so change this!!! --------
      • -------- ----------------------------------------------- --------
      • Set NW_Time = 1.13
      • -------- ----------------------------------------------- --------
      • -------- Max distance --------
      • -------- ----------------------------------------------- --------
      • Set NW_DistanceMax = 1000.00
  • Nature Walk Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to NW_Ability
    • Actions
      • -------- ----------------------------------------------- --------
      • -------- Indexing --------
      • -------- ----------------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • NW_Index Equal to 0
        • Then - Actions
          • Trigger - Turn on Nature Walk Loop <gen>
        • Else - Actions
      • Set NW_Index = (NW_Index + 1)
      • Set NW_Index2 = (NW_Index2 + 1)
      • -------- ----------------------------------------------- --------
      • -------- Setting caster --------
      • -------- ----------------------------------------------- --------
      • Set NW_Caster[NW_Index2] = (Triggering unit)
      • -------- ----------------------------------------------- --------
      • -------- Setting target point to calculate angle --------
      • -------- ----------------------------------------------- --------
      • Set NW_Point1 = (Target point of ability being cast)
      • Set NW_Point2 = (Position of NW_Caster[NW_Index2])
      • -------- ----------------------------------------------- --------
      • -------- Calculating angle --------
      • -------- ----------------------------------------------- --------
      • Set NW_Angle[NW_Index2] = (Angle from NW_Point2 to NW_Point1)
      • -------- ----------------------------------------------- --------
      • -------- Setting distance, if you want the maximum distance to be set where you target the ability set the next variable to true --------
      • -------- ----------------------------------------------- --------
      • Set NW_Check1 = True
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • NW_Check1 Equal to True
        • Then - Actions
          • Set NW_Distance[NW_Index2] = (Distance between NW_Point1 and NW_Point2)
        • Else - Actions
          • Set NW_Distance[NW_Index2] = (500.00 + ((Real((Level of NW_Ability for NW_Caster[NW_Index2]))) x 100.00))
      • -------- ----------------------------------------------- --------
      • -------- When we calculated angle we set the point where caster will stop --------
      • -------- ----------------------------------------------- --------
      • Set NW_EndPoint[NW_Index2] = (NW_Point2 offset by NW_Distance[NW_Index2] towards NW_Angle[NW_Index2] degrees)
      • -------- ----------------------------------------------- --------
      • -------- Change animation and collision --------
      • -------- ----------------------------------------------- --------
      • Animation - Change NW_Caster[NW_Index2]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 25.00% transparency
      • Unit - Turn collision for NW_Caster[NW_Index2] Off
      • Custom script: call RemoveLocation(udg_NW_Point1)
      • Custom script: call RemoveLocation(udg_NW_Point2)
  • Nature Walk Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer NW_Index3) from 1 to NW_Index2, do (Actions)
        • Loop - Actions
          • -------- ----------------------------------------------- --------
          • -------- Play the slam animation, only once! --------
          • -------- Credits for this formula go to defskull --------
          • -------- ----------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • NW_Check2[NW_Index3] Equal to False
            • Then - Actions
              • Animation - Play NW_Caster[NW_Index2]'s attack slam animation
              • Set NW_DistanceGain[NW_Index3] = (NW_DistanceMax / NW_Distance[NW_Index3])
              • Set NW_Speed2[NW_Index3] = (NW_Distance[NW_Index3] / NW_Time)
              • Set NW_Duration[NW_Index3] = (NW_Speed2[NW_Index3] x 0.03)
              • Set NW_Modifier[NW_Index3] = (100.00 x NW_DistanceGain[NW_Index3])
              • Set NW_SolidModifier[NW_Index3] = (NW_Modifier[NW_Index3] x 0.50)
              • Animation - Change NW_Caster[NW_Index3]'s animation speed to NW_SolidModifier[NW_Index3]% of its original speed
              • Set NW_Check2[NW_Index3] = True
            • Else - Actions
          • -------- ----------------------------------------------- --------
          • -------- Increasing speed --------
          • -------- ----------------------------------------------- --------
          • Set NW_Speed[NW_Index3] = (NW_Speed[NW_Index3] + NW_SpeedBase)
          • -------- ----------------------------------------------- --------
          • -------- Setting next point of moving --------
          • -------- ----------------------------------------------- --------
          • Set NW_Point3 = (Position of NW_Caster[NW_Index3])
          • Set NW_Point2 = (NW_Point3 offset by NW_Speed[NW_Index3] towards NW_Angle[NW_Index3] degrees)
          • -------- ----------------------------------------------- --------
          • -------- Check if the point is within map boundries --------
          • -------- ----------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Playable map area) contains NW_Point3) Equal to False
            • Then - Actions
              • -------- ----------------------------------------------- --------
              • -------- Removing Leaks, turning trigger off, recycling --------
              • -------- ----------------------------------------------- --------
              • Custom script: call RemoveLocation(udg_NW_Point2)
              • Custom script: call RemoveLocation(udg_NW_Point3)
              • Custom script: call RemoveLocation(udg_NW_EndPoint[udg_NW_Index3])
              • Set NW_Index = (NW_Index - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • NW_Index Equal to 0
                • Then - Actions
                  • Animation - Reset NW_Caster[NW_Index3]'s animation
                  • Animation - Change NW_Caster[NW_Index3]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                  • Set NW_Real[NW_Index3] = 0.00
                  • Set NW_X[NW_Index3] = 0.00
                  • Set NW_Y[NW_Index3] = 0.00
                  • Set NW_Speed[NW_Index3] = NW_SpeedBase
                  • Set NW_Check2[NW_Index3] = False
                  • Set NW_Index2 = 0
                  • Trigger - Turn off (This trigger)
                • Else - Actions
            • Else - Actions
              • -------- ----------------------------------------------- --------
              • -------- Moving caster to next point --------
              • -------- ----------------------------------------------- --------
              • Custom script: set udg_NW_X[udg_NW_Index3] = GetUnitX(udg_NW_Caster[udg_NW_Index3]) + udg_NW_Speed[udg_NW_Index3] * Cos(udg_NW_Angle[udg_NW_Index3] * bj_DEGTORAD)
              • Custom script: set udg_NW_Y[udg_NW_Index3] = GetUnitY(udg_NW_Caster[udg_NW_Index3]) + udg_NW_Speed[udg_NW_Index3] * Sin(udg_NW_Angle[udg_NW_Index3] * bj_DEGTORAD)
              • Custom script: call SetUnitX(udg_NW_Caster[udg_NW_Index3], udg_NW_X[udg_NW_Index3])
              • Custom script: call SetUnitY(udg_NW_Caster[udg_NW_Index3], udg_NW_Y[udg_NW_Index3])
              • Unit - Move NW_Caster[NW_Index3] instantly to NW_Point2
              • Special Effect - Create a special effect attached to the origin of NW_Caster[NW_Index3] using Abilities\Weapons\GreenDragonMissile\GreenDragonMissile.mdl
              • Special Effect - Destroy (Last created special effect)
              • -------- ----------------------------------------------- --------
              • -------- Here we make hero more invisible and faster --------
              • -------- ----------------------------------------------- --------
              • Animation - Change NW_Caster[NW_Index3]'s vertex coloring to (100.00%, 100.00%, 100.00%) with NW_Speed[NW_Index3]% transparency
              • -------- ----------------------------------------------- --------
              • -------- We chek if the distance expires, we stun the units --------
              • -------- ----------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between NW_Point3 and NW_EndPoint[NW_Index3]) Less than or equal to NW_Speed[NW_Index3]
                • Then - Actions
                  • Animation - Change NW_Caster[NW_Index3]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                  • Animation - Reset NW_Caster[NW_Index3]'s animation
                  • -------- ----------------------------------------------- --------
                  • -------- Check if unit is not on cliff --------
                  • -------- ----------------------------------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Terrain pathing at NW_Point3 of type Walkability is off) Equal to True
                    • Then - Actions
                      • Custom script: loop
                      • Set NW_Real[NW_Index3] = (NW_Real[NW_Index3] + 10.00)
                      • Set NW_Point1 = (NW_Point3 offset by NW_Real[NW_Index3] towards NW_Angle[NW_Index3] degrees)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Terrain pathing at NW_Point1 of type Walkability is off) Equal to True
                        • Then - Actions
                          • Unit - Move NW_Caster[NW_Index3] instantly to NW_Point1
                        • Else - Actions
                      • Custom script: call RemoveLocation(udg_NW_Point1)
                      • Custom script: exitwhen udg_NW_Real[udg_NW_Index3] > 300
                      • Custom script: endloop
                    • Else - Actions
                  • Unit - Turn collision for NW_Caster[NW_Index3] On
                  • Special Effect - Create a special effect at NW_EndPoint[NW_Index3] using Abilities\Spells\NightElf\Taunt\TauntCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- ----------------------------------------------- --------
                  • -------- Now we stun units --------
                  • -------- ----------------------------------------------- --------
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within NW_AoE2 of NW_EndPoint[NW_Index3] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of NW_Caster[NW_Index3])) Equal to True)))) and do (Actions)
                    • Loop - Actions
                      • Unit - Create 1 Dummy for (Owner of NW_Caster[NW_Index3]) at NW_EndPoint[NW_Index3] facing Default building facing degrees
                      • Unit - Add NW_DummyAbility[2] to (Last created unit)
                      • Unit - Set level of NW_DummyAbility[2] for (Last created unit) to (Level of NW_Ability for NW_Caster[NW_Index3])
                      • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                      • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                  • -------- ----------------------------------------------- --------
                  • -------- Removing Leaks --------
                  • -------- ----------------------------------------------- --------
                  • Custom script: call RemoveLocation(udg_NW_EndPoint[udg_NW_Index3])
                  • Set NW_Index = (NW_Index - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • NW_Index Equal to 0
                    • Then - Actions
                      • Set NW_Real[NW_Index3] = 0.00
                      • Set NW_X[NW_Index3] = 0.00
                      • Set NW_Y[NW_Index3] = 0.00
                      • Set NW_Speed[NW_Index3] = NW_SpeedBase
                      • Set NW_Check2[NW_Index3] = False
                      • Set NW_Index2 = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
              • -------- ----------------------------- --------
              • -------- Destroy Trees --------
              • -------- System by D4RK_G4ND4LF --------
              • -------- ----------------------------- --------
              • Destructible - Pick every destructible within NW_AoE1 of NW_Point2 and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Current life of (Picked destructible)) Greater than 0.00
                    • Then - Actions
                      • Unit - Order NW_Dummy to Harvest (Picked destructible)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Current order of NW_Dummy) Equal to (Order(harvest))
                        • Then - Actions
                          • Destructible - Kill (Picked destructible)
                          • Unit - Order NW_Dummy to Stop
                        • Else - Actions
                          • Unit - Order NW_Dummy to Stop
                    • Else - Actions
              • -------- ----------------------------------------------- --------
              • -------- Creating group in which units will be entangled --------
              • -------- ----------------------------------------------- --------
              • Custom script: set bj_wantDestroyGroup = true
              • Unit Group - Pick every unit in (Units within NW_AoE1 of NW_Point2 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of NW_Caster[NW_Index3])) Equal to True)))) and do (Actions)
                • Loop - Actions
                  • Unit - Create 1 Dummy for (Owner of NW_Caster[NW_Index3]) at NW_Point2 facing Default building facing degrees
                  • Unit - Add NW_DummyAbility[1] to (Last created unit)
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • Unit - Order (Last created unit) to Night Elf Keeper Of The Grove - Entangling Roots (Picked unit)
              • -------- ----------------------------------------------- --------
              • -------- Removing Leaks --------
              • -------- ----------------------------------------------- --------
              • Custom script: call RemoveLocation(udg_NW_Point2)
              • Custom script: call RemoveLocation(udg_NW_Point3)
Note

I wasn't keeping a track of changes i made in this spell, since it was my first MUI, so i can't tell you all the changes i've made, but i can write you changes i made in this version (1.6):
-removed arrays from some variables (Points, Angle, AoE, Speed);
-removed the UnitGroup variables and replaced with bj_wantDestroyGroup;
-the destructibles in your way will be killed;
-removed Index4 and the settings that were meant to run once added to new trigger (Nature Walk Settings).
v1.7:
-added option to check whether the unit should go full range or only to targeted point;
-when the spell is about to end and you're on a cliff, you'll be moved away from a cliff;
-now i check if i destroy only trees;
-made some variables into arrays;
-simplified the groups where i pick the units - removed the if/then/else;
v1.8:
-caster won't go out of map boundaries;
-added an animation when unit is moving.
Give credits if you use it in your map.
Credits: Dr. Boom, Adictuz, Maker, Bribe, defskull


Keywords:
Walk, nature, entangle, stomp, run
Contents

Nature Walk (Map)

Reviews
Bribe: These recent changes you've made have really set this in as a strong-quality spell. I like how it works and is now a very efficient GUI spell. Approved.

Moderator

M

Moderator

Bribe:

These recent changes you've made have really set this in as a strong-quality spell. I like how it works and is now a very efficient GUI spell.

Approved.
 
Well of course i can, i just didn't think of that, but anyone can do that if he wants, but i prefer to use effects in triggers.

I think the region leaks... not sure though... since the region's size is always (50,50) maybe you can create one global region and then just move its center (not sure if its doable in GUI)...
 
Level 12
Joined
Apr 16, 2010
Messages
584
So you say that i should create one region when ability is casted and then move it to the NW_EndPoint right, but i will still need to clear it and next time create another. I just think that it will be the same concept. But maybe i should just delete the region and come out with something else.
 
So you say that i should create one region when ability is casted and then move it to the NW_EndPoint right, but i will still need to clear it and next time create another. I just think that it will be the same concept. But maybe i should just delete the region and come out with something else.

nope, you wont need to clear it... just create one region on map init with size (50,50) and then just move it during the loop... just do the move before the if-then-else...

  • -------- --------------------------------------------------------- --------
  • -------- We chek if ending region contains caster, if yes we stomp there --------
  • -------- --------------------------------------------------------- --------
  • Region - Move Region to NW_EndPoint[NW_Index3]
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
The dummies don't need invulnerability ability because Locust already makes them invulnerable.

Leaks:
  • Set NW_Point2[NW_Index3] = ((Position of NW_Caster[NW_Index3]) offset by 30.00 towards NW_Angle[NW_Index3] degrees)
^Position of unit is one point, the offset point is another.
  • Special Effect - Create a special effect at (Position of NW_Caster[NW_Index3]) using Abilities\Spells\NightElf\Taunt\TauntCaster.mdl

Also picks dead units:
  • Unit Group - Pick every unit in NW_UnitGroup[NW_Index] 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) belongs to an enemy of (Owner of NW_Caster[NW_Index3])) Equal to True
        • Then - Actions
          • ....
Shouldn't be inside the loop:
  • Custom script: call DestroyGroup(udg_NW_UnitGroup[udg_NW_Index3])
This
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • NW_Index Equal to 0
    • Then - Actions
      • Set NW_Index2 = 0
      • Trigger - Turn off (This trigger)
    • Else - Actions
should be after this
  • Set NW_Index = (NW_Index - 1)
The tooltip should say what level the spell is, like this: Natur|c0020c000e|r Walk - [|cffffcc00Level 1|r]

Maybe add some collision detection, the caster can get stuck in the middle of trees.

I do like the effect, looks good. The concept is quite simple and not very original.

You could make the spell more configurable.

Regions leak ->
  • Custom script: call RemoveRect(udg_*region*)
Or you could just calculate the distance between points.

When you detect that the unit is in the region, it still gets moved once after that. Perhaps a bug.
 
Level 12
Joined
Apr 16, 2010
Messages
584
Ty, Maker, updating now
Edit: Updated
But now i have a problem, when i cast spell with other unit first units stops moving, its like not MUI, any solutions? It's must be something with
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • NW_Distance[NW_Index3] Less than or equal to 30.00
    • Then - Actions
      • ...
  • -------- --------------------------------------------------------- --------
  • -------- Subtarcting 30 range --------
  • -------- --------------------------------------------------------- --------
  • Set NW_Distance[NW_Index3] = (NW_Distance[NW_Index3] - 30.00)
Edit 2: updated, everything works fine. enjoy))
 
Last edited:
Level 15
Joined
Jul 4, 2008
Messages
1,106
You're most likely missing a boolean, which checks if the spell has ended.
Why to add a boolean for that? Well, when one instance stops running, it will start decreasing the index until the trigger collapses, to fix this, add for examble a existance boolean inside the loop, just before the actions happen in the spell.
 
Level 1
Joined
Oct 26, 2010
Messages
3
I'm trying to transfer this spell to a another map... but howw?????????????????? it's a;ways shows an error
 
Level 2
Joined
Oct 9, 2009
Messages
25
I think you should have the caster damaging an area instead of a dummy casting a spell,
So the caster gets Experience and Bounty. Also some player-made systems might not work (systems that counts kills for example). Just what I think...
 
I think you should have the caster damaging an area instead of a dummy casting a spell,
So the caster gets Experience and Bounty. Also some player-made systems might not work (systems that counts kills for example). Just what I think...

he can get exp and bounty if dummy is owned by him... and I think most kill meters use Player rather than a unit... at least for only one hero per player maps... anyway, its possible to link the dummy caster to the unit anyways using hashtables or index...

and I think he used the ability to simplify things, because it will produce both the stun and the damage...
 
Level 2
Joined
Oct 9, 2009
Messages
25
he can get exp and bounty if dummy is owned by him... and I think most kill meters use Player rather than a unit... at least for only one hero per player maps... anyway, its possible to link the dummy caster to the unit anyways using hashtables or index...

and I think he used the ability to simplify things, because it will produce both the stun and the damage...

Okay thnx, I guess I was the noob here. He could have made a stun ability without damage and made the hero damage. And what's the difference with stun and pause? But I guess he took the easy way.
 
Okay thnx, I guess I was the noob here. He could have made a stun ability without damage and made the hero damage. And what's the difference with stun and pause? But I guess he took the easy way.

well, I think its better to use the stomp for this, to reduce number of dummies created and functions called...

stun is used by buffs and just stops the unit... and pause causes a PAUSE...

example:

A unit has a timed life

if you stun him, the timed life will still be reduced, if you pause him, the timer will not get reduced...

and some damages do not immediately take effect on a paused unit, but rather after the pause...
 
Level 1
Joined
May 19, 2009
Messages
3
I am not a spell maker at all, i find this spell and all other stuff complicated -.-

But i cannot make it work with Nature Walk, can u plz upload one without leaks ;)
 

Bribe

Code Moderator
Level 48
Joined
Sep 26, 2009
Messages
9,274
Nature walk cast

(Real(100)) should just be 100.00. It slows down performance and is silly to convert integer to real in this case.

(Position of NW_Caster[NW_Index2]) leaks x2.

Nature Walk Loop

(Position of NW_Caster[NW_Index3]) leaks

  • Set NW_UnitGroup[NW_Index3] = (Units within 300.00 of NW_Point2[NW_Index3])
  • Unit Group - Pick every unit in NW_UnitGroup[NW_Index] 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
          • ((Picked unit) belongs to an enemy of (Owner of NW_Caster[NW_Index3])) Equal to True
        • Then - Actions
          • Unit - Create 1 Dummy 2 for (Owner of NW_Caster[NW_Index3]) at NW_Point2[NW_Index3] facing Default building facing degrees
          • Unit - Add Entangling Roots to (Last created unit)
          • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
          • Unit - Order (Last created unit) to Night Elf Keeper Of The Grove - Entangling Roots (Picked unit)
        • Else - Actions
          • Custom script: call RemoveLocation(udg_NW_Point2[udg_NW_Index3])
Should combine that "if" with the group-setting part. Just "Units in range matching conditions:"

  • Set NW_UnitGroup[NW_Index3] = (Units within 300.00 of NW_Point2[NW_Index3]) Matching ((Matching unit) is A structure) Equal to False And ((Matching unit) is alive) Equal to True And ((Matching unit) belongs to an enemy of (Owner of NW_Caster[NW_Index3])) Equal to True
  • Unit Group - Pick every unit in NW_UnitGroup[NW_Index3] and do (Actions)
    • Loop - Actions
      • Unit - Create 1 Dummy 2 for (Owner of NW_Caster[NW_Index3]) at NW_Point2[NW_Index3] facing Default building facing degrees
      • Unit - Add Entangling Roots to (Last created unit)
      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
      • Unit - Order (Last created unit) to Night Elf Keeper Of The Grove - Entangling Roots (Picked unit)
    • Else - Actions
  • Custom script: call RemoveLocation(udg_NW_Point2[udg_NW_Index3])
 
Level 12
Joined
Apr 16, 2010
Messages
584
Ok thanks Bribe, i'll fix it after i configure my new OS.

Edit: okay i updated the spell, fixed everything, hopefully. But i got a question for you,
Should combine that "if" with the group-setting part. Just "Units in range matching conditions:"
but is there any difference? I mean it's easier too see what conditions are used in If/Then/Else.
 
Last edited:

Bribe

Code Moderator
Level 48
Joined
Sep 26, 2009
Messages
9,274
Your triggers are a bit hard to read, so I want to make sure I'm not missing something

Set NW_UnitGroup2[NW_Index3] = (Units within NW_AoE[2] of NW_Point3[NW_Index3])

Where do you destroy that group? I think you need to add another custom script. I see you destroy udg_NW_UnitGroup but I don't see you destroy this one.

And I think this line:

Custom script: call DestroyGroup(udg_NW_UnitGroup[udg_NW_Index3])

Should go below the group - pick right underneath it instead of above it. Also, you use udg_NW_Index instead of udg_NW_Index3 right below it... all this is making it very hard for me to keep up with your work and track down leaks.
 
Level 12
Joined
Apr 16, 2010
Messages
584
Oh man, i think i just remembered something, the version that was uploaded here was 1.2 in which there wasn't any knockback, and when i uploaded this one, with fixed leaks, it had a knockback, where units that get stunned in the end will be knocked. But my problem is that after reinstalling my OS (i use windows 7 Ultimate now) i cannot test the map because my WC3 wont run (need reinstalling). So Bribe, i'd be glad if you could test this new version and tell me if units are knocked in right direction (from center), at looking at code, i think all fine but double checking is always fine.
In the next version i'll update the mistakes you saw and told in last post, you didn't see them before cuz the version was older, without the knockback.
(i created this version really LONG time ago, forgot about the changes and easily replaced with new one)
 
Level 12
Joined
Apr 16, 2010
Messages
584
Okay then, i'll see, for now the only option is too leave the spell as it is and reinstall my WarCraft, but as i don't have a CD, right now, i'll have to wait a bit. So let the spell status be Pending for now... As soon as i reinstall the game and update the spell without any leaks (hopefully) i'll contact you.
Thanks for help with leaks.
 
Level 12
Joined
Apr 16, 2010
Messages
584
Thanks, but i'm already downloading game from torrent with key :)
Tomorrow i'll try to update the spell, and test it.

Edit: reinstalling WC3 didn't help, i still get problems with the game, but well time passes and you just must go on, i mean that i retire from map making...
If i'll have more time, i'll try solve the problem, but i thought about quiting WarCraft III a really long time, anyway good luck everyone with their projects.
Just read the Bribe's signature and one line captured me: "No project is ever finished.", so true, cruel irony!
 
Last edited:
Level 12
Joined
Apr 16, 2010
Messages
584
I guess you're right! I played a lot of games too, quit a lot of them and never played again, but i really don't want to quit WarCraft III, permanently.
Anyway i guess i'll solve my problem with the game soon enough, if not i can still use just an editor and make maps, my friend will test them - yeah, that would be it.
 

Bribe

Code Moderator
Level 48
Joined
Sep 26, 2009
Messages
9,274
Looks very good.

In the loop trigger, I suggest doing the bj_wantDestroyGroup custom script as opposed to setting the group, using it, then destroying it. Three lines instead of two ;)

That's definitely not a requirement though. I will review the in-game performance of this spell later this evening and then I'll give it an approval.
 
Level 12
Joined
Apr 16, 2010
Messages
584
Orcnet said:
What a cool spell. but it doesn't look like a nature skill to me, rather chaos, good job!
Thanks!

Okay i updated spell, added a note where i said what i've changed in this version.
If you have anu suggestion feel free to tell 'em.

P.S. What's with that pony thing? I started seeing a lot of people here with pony avatars or sigs... Love ponies? :)
 
Level 16
Joined
May 1, 2008
Messages
1,605
Moin moin =)

Another check of mine of the approved spells and again I have to say this spell cannot be approved because it's buggy!

== Why buggy ==
When I cast the spell the first time, the rush starts slow and gets faster until the end.
Now every time I cast it the rush gets faster and faster. Also then the amount of crated effects is reduces. So your triggering is at some place wrong, but since I unlearn GUI, I can't saw where the fault is.

Also another point for not approval is, that the unit can rush over unpathable terrain and stuck there:
btns9edp6mt9wavxl.jpg

So you should check if the X and Y of the caster is on unpathable terrain (you can do it with a boolean so a user can choose it for his own)

2) Another thing is, that the caster plays at the end of the rush the attack animation. At the end of it if will freeze in this animation. Trigger it, that the animation is reseted after the attack animation back to normal.

3) Another tip: I saw the unit rush over the target point. Make a boolean variable if the unit should only rush to the target point or the full range.


Point 2 and 3 aren't high faults but point 1 is the reason that this spell cannot be approved - sorry!


btnsdojn0qehkiey1.jpg


Greetings and Peace
Dr. Boom
 

Bribe

Code Moderator
Level 48
Joined
Sep 26, 2009
Messages
9,274
I tested this spell dozens of times, the effect is consistent for me: starts slow, speeds up towards the end, but I don't notice any drop in special effects.

One thing that can be improved is actually to create fewer special effects, because it lags on low-performance computers like mine about 1 second after the spell is cast and right after the spell is cast (perhaps too many dummy units).
 
Level 16
Joined
May 1, 2008
Messages
1,605
Moin moin =)

Well, thanks. Okay i'll update it right away!
And yeah i see that it's buggy too, this is ny first MUI spell anyway =)

That's why I hope that you take my reviews as a help not as an attack^^.
Well but I tested the current map now, first I still can rush over the cliffs itself, didn't saw that I can set this.

2) Now there's another thing which didn't happen last testing or I just didn't get it, I can rush out of the map. When the caster is too far, then the game crash.


bto6b24j3ixm0d1u4.jpg


But I think you get this easily, that's why I take the "not approved" status away and this can be approved.

Greetings and Peace
Dr. Boom
 
Level 12
Joined
Apr 16, 2010
Messages
584
Well im' not sure if i can create less special effects... Not sure, i think they are pretty simple though, but if any ideas, come on in and tell 'em.
@Bribe, maybe it lags not because of dummies, but because of the action Move unit instantly to point. But i don't know, just a thought. Not sure what to improve... :S
Edit:
Dr. Boom said:
That's why I hope that you take my reviews as a help not as an attack^^.
Ofc, no problem and i'm always glad to hear more reviews!
Dr. Boom said:
2) Now there's another thing which didn't happen last testing or I just didn't get it, I can rush out of the map. When the caster is too far, then the game crash.
I'll fix this right away.
Edit2: should i make the check thingy same as when i check if caster not on cliff?
With this:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Terrain pathing at NW_Point3 of type Walkability is off) Equal to True
    • Then - Actions
      • Custom script: loop
      • Set NW_Real[NW_Index3] = (NW_Real[NW_Index3] + 10.00)
      • Set NW_Point1 = (NW_Point3 offset by NW_Real[NW_Index3] towards NW_Angle[NW_Index3] degrees)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Terrain pathing at NW_Point1 of type Walkability is off) Equal to True
        • Then - Actions
          • Unit - Move NW_Caster[NW_Index3] instantly to NW_Point1
        • Else - Actions
      • Custom script: call RemoveLocation(udg_NW_Point1)
      • Custom script: exitwhen udg_NW_Real[udg_NW_Index3] > 300
      • Custom script: endloop
    • Else - Actions
??

Nvm, found another way.
 
Level 9
Joined
May 14, 2011
Messages
524
It still rushes out of map and after that if you spam it the caster will fly backwards and goes out of map again,I personally prefer a slam in the end since missiles don't suit melee heroes :/
 
Top