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

NeverMore Ability Pack [GUI] v1.3

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
i am a beginner at all this
but this is what i got. and i wanted to share it with people coz i know that their might be people who havent even reached this way
i know i suck a little but its a try am proud of
anyway this pack includes NeverMore's . shadow fiend's abilities from DotA
Although they are a little different "NOT TO COPY EVERYTHING IN THE EXACT SAME WAY"
but the main Thing stays as it is

Raise : 3 raises Range :250\450\750
Gather : harvest souls from killed unit to add damage to a variable "integer"
Terror : which reduces the Armor of enemy units around
Channel : which is converting the "Gather" integer value into a real . and deal Real Damage of that variable to units in 500 AOE around the NeverMore

[GUI]= yes
[Leakless]= yes
[MUI]=No

------------------------------ChangeLog-------------------------------
Version 1.0 Created the Map and Uploaded it to Hive Workshop
____________
Version 1.1 Fixed All the Leaks and triggers that the moderator pointed at.
____________
Version 1.2 Fixed the last leaky things and proud to make it leakless
____________
Version 1.3 Fixed all the leaks that my dear friend pointed me at. remade some triggers to make them more efficient and leakless . Credits to Magtheridon96 thank him for the help :)
-----------------------------------------------------------------------

Raise Damage
  • RaiseDamage
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- -----------in here i defined the damage that the raises will deal according to their level---------------- --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • Set RaiseDamage[0] = 200.00
      • Set RaiseDamage[1] = 300.00
      • Set RaiseDamage[2] = 350.00
Shadow Raises - all the raises are made the same way so that i will post only 1 trigger
  • Spell Casting1
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to ShadowRaise 1 (z)
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of ShadowRaise 1 (z) for (Triggering unit)) Equal to 1
        • Then - Actions
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- i put the units in variabels so that it would lag lesser and be faster --------
          • -------- in here we put the locations of the units old\new units in variables to clean the leaks later --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • Set TempUnit = (Triggering unit)
          • Set TempPlayer = (Triggering player)
          • Set Location = (Position of TempUnit)
          • Set Location2 = (Location offset by 256.00 towards (Facing of TempUnit) degrees)
          • Unit - Create 1 Coil for (Owner of TempUnit) at Location2 facing Default building facing degrees
          • Set TempUnit2 = (Last created unit)
          • Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- in here we are removing the leaks and assigning new values to some variables --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • Custom script: call RemoveLocation(udg_Location)
          • Custom script: call RemoveLocation(udg_Location2)
          • Set Location = (Position of TempUnit2)
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- destroying the group leak automaticaly after we are finished using it --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in (Units within 300.00 of Location) and do (Actions)
            • Loop - Actions
              • Set TempUnit3 = (Picked unit)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((TempUnit3 is A structure) Not equal to True) and ((TempPlayer is an enemy of (Owner of TempUnit3)) Equal to True)
                • Then - Actions
                  • -------- ------------------------------------------------------------------------------------------------------ --------
                  • -------- dealing damage to the units around the raise --------
                  • -------- ------------------------------------------------------------------------------------------------------ --------
                  • Unit - Cause TempUnit to damage TempUnit3, dealing RaiseDamage[0] damage of attack type Spells and damage type Normal
                • Else - Actions
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- cleaning the leak of the location of the raise --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • Custom script: call RemoveLocation(udg_Location)
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of ShadowRaise 1 (z) for (Triggering unit)) Equal to 2
            • Then - Actions
              • Set TempUnit = (Triggering unit)
              • Set TempPlayer = (Triggering player)
              • Set Location = (Position of TempUnit)
              • Set Location2 = (Location offset by 256.00 towards (Facing of TempUnit) degrees)
              • Unit - Create 1 Coil for (Owner of TempUnit) at Location2 facing Default building facing degrees
              • Set TempUnit2 = (Last created unit)
              • Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_Location)
              • Custom script: call RemoveLocation(udg_Location2)
              • Set Location = (Position of TempUnit2)
              • Custom script: set bj_wantDestroyGroup = true
              • Unit Group - Pick every unit in (Units within 300.00 of Location) and do (Actions)
                • Loop - Actions
                  • Set TempUnit3 = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((TempUnit3 is A structure) Not equal to True) and ((TempPlayer is an enemy of (Owner of TempUnit3)) Equal to True)
                    • Then - Actions
                      • Unit - Cause TempUnit to damage TempUnit3, dealing RaiseDamage[1] damage of attack type Spells and damage type Normal
                    • Else - Actions
              • Custom script: call RemoveLocation(udg_Location)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Level of ShadowRaise 1 (z) for (Triggering unit)) Equal to 3
                • Then - Actions
                  • Set TempUnit = (Triggering unit)
                  • Set TempPlayer = (Triggering player)
                  • Set Location = (Position of TempUnit)
                  • Set Location2 = (Location offset by 256.00 towards (Facing of TempUnit) degrees)
                  • Unit - Create 1 Coil for (Owner of TempUnit) at Location2 facing Default building facing degrees
                  • Set TempUnit2 = (Last created unit)
                  • Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
                  • Custom script: call RemoveLocation(udg_Location)
                  • Custom script: call RemoveLocation(udg_Location2)
                  • Set Location = (Position of TempUnit2)
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within 300.00 of Location) and do (Actions)
                    • Loop - Actions
                      • Set TempUnit3 = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((TempUnit3 is A structure) Not equal to True) and ((TempPlayer is an enemy of (Owner of TempUnit3)) Equal to True)
                        • Then - Actions
                          • Unit - Cause TempUnit to damage TempUnit3, dealing RaiseDamage[2] damage of attack type Spells and damage type Normal
                        • Else - Actions
                  • Custom script: call RemoveLocation(udg_Location)
                • Else - Actions
Ultimate ability
  • Death Pact
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Channel
    • Actions
      • Set u = (Triggering unit)
      • Custom script: call SetUnitAnimationByIndex(udg_u, 7)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Triggering unit) is A Hero) Equal to True
        • Then - Actions
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- Creating Souls around nevermore to damage the units in 500 range around him --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- i am making 15 souls . for me it seems enough "these souls are just effect and nothing more" --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • For each (Integer A) from 1 to 15, do (Actions)
            • Loop - Actions
              • Unit - Create 1 Explosion for (Owner of (Triggering unit)) at (((Position of (Triggering unit)) offset by ((Random real number between -250.00 and 250.00), (Random real number between -500.00 and 500.00))) offset by (Random real number between -250.00 and 250.00) towards (Facing of (Triggering unit)) degrees) facing Default building facing degrees
              • Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
              • Set Location = (Position of (Last created unit))
              • Custom script: call RemoveLocation(udg_Location)
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- Setting the group into a variable to clean it . avoiding the leaks --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------ --------
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in (Units within 500.00 of (Position of (Triggering unit))) and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (((Triggering unit) is A structure) Not equal to True) and (((Triggering player) is an enemy of (Owner of (Picked unit))) Equal to True)
                • Then - Actions
                  • -------- ------------------------------------------------------------------------------------------------------ --------
                  • -------- ------------------------------------------------------------------------------------------------------ --------
                  • -------- Dealing damage based on the souls consumed to all the enemy units in 500 AOE around Nevermore --------
                  • -------- ------------------------------------------------------------------------------------------------------ --------
                  • -------- ------------------------------------------------------------------------------------------------------ --------
                  • Unit - Cause (Triggering unit) to damage (Picked unit), dealing (Real(Damage)) damage of attack type Spells and damage type Normal
                • Else - Actions
        • Else - Actions
Gather Ability
  • Learns Gather
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Gather
    • Actions
      • Trigger - Turn on Kills a Unit <gen>
  • Kills a Unit
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Killing unit)) Equal to Firelord
    • Actions
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- i create a soul at position of the killed unit which will go towards the nevermore blow it self and add him damage for the ult --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- setting the unit location in a variable to clean it later avoiding the leaks --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • Set Location = (Position of (Triggering unit))
      • Unit - Create 1 Soul for (Owner of (Killing unit)) at Location facing Default building facing degrees
      • Unit - Order (Last created unit) to Neutral - Kaboom! (Killing unit)
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- clearing the location which means that we are removing the leak --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • Custom script: call RemoveLocation(udg_Location)
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- adding the damage to the variable that will be used in the damage of the ultimate ability --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • Set Damage = (Damage + (10 x (Level of Gather for (Killing unit))))
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- Adding gold to the killing unit based on the level of the ability we have --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • Player - Add (5 x (Level of Gather for (Triggering unit))) to (Owner of (Triggering unit)) Current gold
  • Consume Soul
    • Events
      • Unit - A unit comes within 150.00 of Firelord 0000 <gen>
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Soul
    • Actions
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • -------- Just Creating the effect of souls consuming and removing the Souls from the game --------
      • -------- ------------------------------------------------------------------------------------------------------ --------
      • Special Effect - Create a special effect attached to the overhead of Firelord 0000 <gen> using Objects\Spawnmodels\NightElf\EntBirthTarget\EntBirthTarget.mdl
      • Special Effect - Destroy (Last created special effect)
      • Unit - Remove (Triggering unit) from the game


Keywords:
NeverMore,Shadow,Fiend,shadow fiend,DotA,Triggers,GUI, Beginner
Contents

NeverMore Pack [GUI] (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Already checked the ability at main condition: ((Learned Hero Skill) Equal to (==) ShadowRaise 1 (z)) and ... Spell Casting 1,2 and 3 have too much code, redundant actions. Only the...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

Maker, NeverMore Ability Pack v1.3, 19th Oct 2011

Already checked the ability at main condition:
  • ((Learned Hero Skill) Equal to (==) ShadowRaise 1 (z)) and ...
Spell Casting 1,2 and 3 have too much code, redundant actions. Only the damage changes. Use the level of the ability to determine the array index.
Shadow Raise shouldn't add three abilities since it limits max number of abilities the hero can have.
The ability could be point targeted.
Kills a unit trigger should not check unit type. Check ability.
Consume soul trigger isn't MUI.
SetUnitAnimationIndex(unit, 7) isn't MUI. Models have different indexes for different animations.
Death Pact leaks locations.
10:17, 24th Sep 2011
Pharaoh_: Has a lot of leaks and it is not MUI. Lack of documentation and in-game screenshot.
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Level of Gather for Firelord 0000 <gen>) Equal to 1
    • Then - Actions
      • Player - Add 5 to (Owner of Firelord 0000 <gen>) Current gold
    • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Gather for Firelord 0000 <gen>) Equal to 3
        • Then - Actions
          • Player - Add 15 to (Owner of Firelord 0000 <gen>) Current gold
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of Gather for Firelord 0000 <gen>) Equal to 2
            • Then - Actions
              • Player - Add 10 to (Owner of Firelord 0000 <gen>) Current gold
            • Else - Actions
This can be sorted as "Player - Add 5 x (Level of Gather for (Picked unit)) Current gold

I use (Picked unit) for the trigger it should actually be used in. This event you're currently using affects the preset hero of the map only.

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • ((Learned Hero Skill) Equal to ShadowRaise 1 (z)) and ((Level of ShadowRaise 1 (z) for (Triggering unit)) Equal to 2)
    • Then - Actions
      • Unit - Set level of ShadowRaise 2 (x) for (Triggering unit) to 2
      • Unit - Set level of ShadowRaise 3 (c) for (Triggering unit) to 2
    • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Learned Hero Skill) Equal to ShadowRaise 1 (z)) and ((Level of ShadowRaise 1 (z) for (Triggering unit)) Equal to 3)
        • Then - Actions
          • Unit - Set level of ShadowRaise 2 (x) for (Triggering unit) to 3
          • Unit - Set level of ShadowRaise 3 (c) for (Triggering unit) to 3
        • Else - Actions
Just use:
  • Unit - Set level of ShadowRaise 2 (x) for (Triggering unit) to (Level of Shadow Raze 1 (z))
  • Unit - Set level of ShadowRaise 3 (c) for (Triggering unit) to (Level of Shadow Raze 1 (z))
 
Level 5
Joined
Feb 6, 2011
Messages
177
Please tell me about anything wrong in it
and i will fix it as soon as possible :)

Edit: for the leaks you mean the unit place's ? it could be done :)
and for the leveling yup i'll do it as you said xD
Documintation : i actually ddnt have much time coz uni started so that am barely on inet but i try to be here as much as i can :)
and i will redo everything
just point me on my wrong things
oh and btw thank you pharoh for seeing it :D
 
Last edited by a moderator:
Level 5
Joined
Feb 6, 2011
Messages
177
thx for the support my friend :D
am actually a newbie in world editor .. but i learned a lot from this site and am still learnin :)
that thread of things that leak .. i'll start reading it right now
and for the hashtables and that stuff do u have a good link for it too ?

Edit: after reading that thread i do really understand that i have Tons of leaks in there hehehehe
screw me
i'll start fixing the leaks today.. so tod i'll have the first changelog :)
 
Level 5
Joined
Feb 6, 2011
Messages
177
Fixed

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
  • If - Conditions
  • (Level of Gather for Firelord 0000 <gen>) Equal to 1
  • Then - Actions
  • Player - Add 5 to (Owner of Firelord 0000 <gen>) Current gold
  • Else - Actions
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
  • If - Conditions
  • (Level of Gather for Firelord 0000 <gen>) Equal to 3
  • Then - Actions
  • Player - Add 15 to (Owner of Firelord 0000 <gen>) Current gold
  • Else - Actions
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
  • If - Conditions
  • (Level of Gather for Firelord 0000 <gen>) Equal to 2
  • Then - Actions
  • Player - Add 10 to (Owner of Firelord 0000 <gen>) Current gold
  • Else - Actions
  • This can be sorted as "Player - Add 5 x (Level of Gather for (Picked unit)) Current gold
  • I use (Picked unit) for the trigger it should actually be used in. This event you're currently using affects the preset hero of the map only.
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
    • ((Learned Hero Skill) Equal to ShadowRaise 1 (z)) and ((Level of ShadowRaise 1 (z) for (Triggering unit)) Equal to 2)
    • Then - Actions
    • Unit - Set level of ShadowRaise 2 (x) for (Triggering unit) to 2
    • Unit - Set level of ShadowRaise 3 (c) for (Triggering unit) to 2
    • Else - Actions
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
    • ((Learned Hero Skill) Equal to ShadowRaise 1 (z)) and ((Level of ShadowRaise 1 (z) for (Triggering unit)) Equal to 3)
    • Then - Actions
    • Unit - Set level of ShadowRaise 2 (x) for (Triggering unit) to 3
    • Unit - Set level of ShadowRaise 3 (c) for (Triggering unit) to 3
    • Else - Actions
  • Just use:
    • Unit - Set level of ShadowRaise 2 (x) for (Triggering unit) to (Level of Shadow Raze 1 (z))
    • Unit - Set level of ShadowRaise 3 (c) for (Triggering unit) to (Level of Shadow Raze 1 (z))
that all is fixed now :) now am going for leaks :S

for the leaks .. in the raises i added a 10 sec exparation timer for the dummies . does this leak ?
i mean the unit will be removed from game after 10 sec by itself or should i remove the leak manually by using a custome script ?
 
Level 5
Joined
Feb 6, 2011
Messages
177
Unit groups and locations for this spell.

in here u mean that even the dummy with 10 sec exp. timer
i must clear the location of it to avoid the leaks ?

this is my last question , coz am almost done with fixing the main things in the map :D

all the "Unit Group" leaks are fixed
all that i need now is answering the question above and the one i messeged u :D
 
Level 12
Joined
Aug 12, 2008
Messages
349
Check the "Recommended" at my signature to learn how to make it MUI. :)
As well as learn the link that Pharaoh_ gave you. It's useful.
For hashtable tutorial, here goes a good tutorial. A Complete Beginners Guide to Hashtables

UnHolyDarKness said:
lol ya i know i suck :D
Don't look down on yourself. :) I was worst when I was a beginner. Ask for help here and there, causing so much troubles XD
 
Level 5
Joined
Feb 6, 2011
Messages
177
Big Thanks

Check the "Recommended" at my signature to learn how to make it MUI. :)
As well as learn the link that Pharaoh_ gave you. It's useful.
For hashtable tutorial, here goes a good tutorial. A Complete Beginners Guide to Hashtables

thank you a lot for the help

now i wish that Pharaoh_ would take an another look at it. as i fixed all the leaks from the link he gave me :D
and fixed the triggers that he pointed me at.
 
Level 5
Joined
Feb 6, 2011
Messages
177
reply to everyone :)

At least give him some constructive criticism.
All that's gonna do is start a flame-war that will end like this:

attachment.php
thank you .. it wont lead to a war .. am not a fighter am just a beginner

Agree with Magtheridon96 :) Beginners need to try an error and learn from mistake in order to learn faster, just like how a baby does; persistent. :D
you got that right :) although the baby part :D >>lol
Although if they want constructive critism, it should be posted in the trigger and scripts forum. Period.
sorry i ddnt know that . i'll do it next time
Beginners wouldn't know they did something wrong though :/
Thus, they wouldn't think that constructive criticism is needed.
It's okay for now. Beginners always do this.

constructive criticism is very appreciated . coz its the thing that helps out the most . as well as in life and in any other things

Still leaks. Use the created variable for reference to the respective points.

you mean use it instead of making the point again ... how stupid am i :goblin_cry:
i'll do it right away
You said:
yes he should :)
 
Tips:

In the Spell leveling, when you add an ability, it will be at level 1 by default, so you can remove these:
  • Unit - Set level of ShadowRaise 2 (x) for (Triggering unit) to 1
  • Unit - Set level of ShadowRaise 3 (c) for (Triggering unit) to 1
You can also create a unit variable called TempUnit and set it to (Triggering Unit), then use it instead (This will be more efficient since stuff like (Triggering Unit) and (Last Created Unit) is very slow and costly.

Note:
  • Set Location = ((Position of (Triggering unit)) offset by 256.00 towards (Facing of (Triggering unit)) degrees)
This leaks :p
You should have 2 locations instead ^_^

  • Set Location = (Position of (Triggering unit))
  • Set Location2 = Location offset by 256.00 towards (Facing of (Triggering unit)) degrees
That's better :D

You'll remove both locations like this:

  • Custom script: call RemoveLocation(udg_Location)
  • Custom script: call RemoveLocation(udg_Location2)
Here's a better version of your trigger with no leaks:

  • Spell Casting1
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to ShadowRaise 1 (z)
    • Actions
      • Set TempUnit = (Triggering unit)
      • Set TempPlayer = (Triggering player)
      • Set Location = (Position of TempUnit)
      • Set Location2 = Location offset by 256.00 towards (Facing of TempUnit) degrees)
      • Unit - Create 1 Coil for TempPlayer at Location2 facing Default building facing degrees
      • Set TempUnit2 = (Last created unit)
      • Unit - Add a 0.10 second Generic expiration timer to TempUnit2
      • Custom script: call RemoveLocation(udg_Location)
      • Custom script: call RemoveLocation(udg_Location2)
      • Set Location = (Position of TempUnit2)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 300.00 of Location) and do (Actions)
        • Loop - Actions
          • Set TempUnit3 = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((TempUnit3 is A structure) Not equal to True) and ((TempPlayer is an enemy of (Owner of TempUnit3)) Equal to True)
            • Then - Actions
              • Unit - Cause TempUnit to damage TempUnit3 dealing ShadowRaiseDamage[(Level of ShadowRaise 1 (z))] damage of attack type Spells and damage type Normal
            • Else - Actions
      • Custom script: call RemoveLocation(udg_Location)
See, whenever you use something in an action like (Position of xxx) in a line, it's a leak.

Leaks:
- Locations
- Special Effects
- Groups

See this:
  • Custom script: set bj_wantDestroyGroup = true
This makes it so that the group you 'Picked' is going to be destroyed immediately after you finish using it.

You should be doing this in this case instead of setting the group in a variable, picking it and running code, then destroying it.
This is because it's more efficient.

You need a real array called ShadowRaiseDamage
In a trigger that will run on Map Initialization, you'll set the damage for each level.

  • MapInit
    • Events
      • Map Initialization
    • Conditions
    • Actions
      • Set ShadowRaiseDamage[1] = 200.00
      • Set ShadowRaiseDamage[2] = 300.00
      • Set ShadowRaiseDamage[3] = 350.00
It's pretty easy :p

Also, here's a note:
In a trigger in GUI, never repeat stuff like (Triggering unit) or (Last created unit) or etc..
You should save them into variables and use those variables instead.
UNLESS: You're using the thing exactly once.
Pretty easy right? :p

You should do something similar for the other triggers too :)

I hope this really long post helps ^_^
 
Level 5
Joined
Feb 6, 2011
Messages
177
Tips:

In the Spell leveling, when you add an ability, it will be at level 1 by default, so you can remove these:
  • Unit - Set level of ShadowRaise 2 (x) for (Triggering unit) to 1
  • Unit - Set level of ShadowRaise 3 (c) for (Triggering unit) to 1
You can also create a unit variable called TempUnit and set it to (Triggering Unit), then use it instead (This will be more efficient since stuff like (Triggering Unit) and (Last Created Unit) is very slow and costly.

Note:
  • Set Location = ((Position of (Triggering unit)) offset by 256.00 towards (Facing of (Triggering unit)) degrees)
This leaks :p
You should have 2 locations instead ^_^

  • Set Location = (Position of (Triggering unit))
  • Set Location2 = Location offset by 256.00 towards (Facing of (Triggering unit)) degrees
That's better :D

You'll remove both locations like this:

  • Custom script: call RemoveLocation(udg_Location)
  • Custom script: call RemoveLocation(udg_Location2)
Here's a better version of your trigger with no leaks:

  • Spell Casting1
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to ShadowRaise 1 (z)
    • Actions
      • Set TempUnit = (Triggering unit)
      • Set TempPlayer = (Triggering player)
      • Set Location = (Position of TempUnit)
      • Set Location2 = Location offset by 256.00 towards (Facing of TempUnit) degrees)
      • Unit - Create 1 Coil for TempPlayer at Location2 facing Default building facing degrees
      • Set TempUnit2 = (Last created unit)
      • Unit - Add a 0.10 second Generic expiration timer to TempUnit2
      • Custom script: call RemoveLocation(udg_Location)
      • Custom script: call RemoveLocation(udg_Location2)
      • Set Location = (Position of TempUnit2)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 300.00 of Location) and do (Actions)
        • Loop - Actions
          • Set TempUnit3 = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((TempUnit3 is A structure) Not equal to True) and ((TempPlayer is an enemy of (Owner of TempUnit3)) Equal to True)
            • Then - Actions
              • Unit - Cause TempUnit to damage TempUnit3 dealing ShadowRaiseDamage[(Level of ShadowRaise 1 (z))] damage of attack type Spells and damage type Normal
            • Else - Actions
      • Custom script: call RemoveLocation(udg_Location)
See, whenever you use something in an action like (Position of xxx) in a line, it's a leak.

Leaks:
- Locations
- Special Effects
- Groups

See this:
  • Custom script: set bj_wantDestroyGroup = true
This makes it so that the group you 'Picked' is going to be destroyed immediately after you finish using it.

You should be doing this in this case instead of setting the group in a variable, picking it and running code, then destroying it.
This is because it's more efficient.

You need a real array called ShadowRaiseDamage
In a trigger that will run on Map Initialization, you'll set the damage for each level.

  • MapInit
    • Events
      • Map Initialization
    • Conditions
    • Actions
      • Set ShadowRaiseDamage[1] = 200.00
      • Set ShadowRaiseDamage[2] = 300.00
      • Set ShadowRaiseDamage[3] = 350.00
It's pretty easy :p

Also, here's a note:
In a trigger in GUI, never repeat stuff like (Triggering unit) or (Last created unit) or etc..
You should save them into variables and use those variables instead.
UNLESS: You're using the thing exactly once.
Pretty easy right? :p

You should do something similar for the other triggers too :)

I hope this really long post helps ^_^

i love you hehehehehehe
 
Level 10
Joined
Apr 13, 2005
Messages
630
Its a nice spell to start out with. Couple of things i would suggest is
1. Add a description to your lvl 6 spell. Nobody knows what it does if they are new to triggering or dont read the spell triggers.
2. your shadowraise seems to deals damage WAY before the effect shows. So to fix this in your event
  • Events
    • Unit - A unit Begins casting an ability
if you see here it would basiclly do damage before anything in the ability fires off. This could be bad for channaling spells due to people canceling the spell and still damaging the creep. So i would suggest changing it this
  • Events
    • Unit - A unit Finishes casting an ability
3. Shadowraise tooltip doesnt show the range of how far each one goes. Add that in
4. Fix up the tooltips on all the spells (no one likes a sloppy tooltip)
5. You can condense all the spell casting1-3 for shadowraise bydoing another if/then/else in one trigger and just bringing all the actions up and condiction to the if.
6. Add some documentation to the trigger to allow people to understand where to mess with the trigger and where not to if your not suppose to. (also makes it easier for your spell to get scored higher)

Hope my review helped :D
 
Level 5
Joined
Feb 6, 2011
Messages
177
Its a nice spell to start out with. Couple of things i would suggest is
1. Add a description to your lvl 6 spell. Nobody knows what it does if they are new to triggering or dont read the spell triggers.
2. your shadowraise seems to deals damage WAY before the effect shows. So to fix this in your event
  • Events
    • Unit - A unit Begins casting an ability
if you see here it would basiclly do damage before anything in the ability fires off. This could be bad for channaling spells due to people canceling the spell and still damaging the creep. So i would suggest changing it this
  • Events
    • Unit - A unit Finishes casting an ability
3. Shadowraise tooltip doesnt show the range of how far each one goes. Add that in
4. Fix up the tooltips on all the spells (no one likes a sloppy tooltip)
5. You can condense all the spell casting1-3 for shadowraise bydoing another if/then/else in one trigger and just bringing all the actions up and condiction to the if.
6. Add some documentation to the trigger to allow people to understand where to mess with the trigger and where not to if your not suppose to. (also makes it easier for your spell to get scored higher)

Hope my review helped :D

for the idea .. its just that i searched the internet and found the nevermore's pack on hive only 1 pack and its in Jass so i dont think that many people would like it :D
for the damage .. ya but i guess it should be just like Magtheridon96 said .
Unit - A unit Starts the effects of an ability :D
but i'll try everything .. but for the condencing i dont think it will be a good idea. because as you said later on that people need to read. and there are even worse newbies than me. who would just not get a shit unless i do so :)<<just my openion
for documintation and tooltips i'll do as soon as possible :)

Actually, it should be changed to
  • Events
    • Unit - A unit Starts the effects of an ability
Sorry I didn't point that out earlier ;)

guess you'r right.. i'll try right away
 
Level 5
Joined
Feb 6, 2011
Messages
177
You will move on to Jass in the near future ;)
Download JNGP, Convert a trigger to custom text, and you'll love playing around with it ;)
That's how I learned Jass ^_^

i wish i start it soon :D
but wt do u think of the pack now ?
its all fixed up but still not mui :(
and am tired of even thinking now ,, i have uni which DISTRACTS me from hive
looooooooooooooooooooooooooool
 
Level 10
Joined
Apr 13, 2005
Messages
630
Hey Unholy dont always believe jass is better than GUI. for example there are plenty of maps that prove Magtheridon96 plenty wrong.

Ive had a chance to help with the map "rollercoaster" and the dude stuck to the idea he could do everything in GUI and did it prove ya wrong with warcraft defining material? HELL YA. There are now code system and core system people are posting that really do a banging job of what jass could do. Yes jass has features that make it easier to use and know but its the fun to show people what you think it aint possible. I'm a GUI coder and I've seen people actually make different programs LIKE vJASS that is needed to run systems, spells, and maps better so look around. idk if eGUI is still around but never give up.

About your spell MUI isnt always needed if you do MPI. Though HIVE only cares about spells being in MUI due to their "purpose" or w.e they wanna say. Good luck and I'm not starting another war with GUI and JASS user so dont comment back please with this quote lol
 
Level 7
Joined
Aug 31, 2011
Messages
125
Dont use (Integer A) it is need to be a variable. Use this "For Eatch Integer (Variable) do bla bla bla and stuff... This place is right here
  • For each (Integer A) from 1 to 15, do (Actions)
    • Loop - Actions
      • Unit - Create 1 Explosion for (Owner of (Triggering unit)) at (((Position of (Triggering unit)) offset by ((Random real number between -250.00 and 250.00), (Random real number between -500.00 and 500.00))) offset by (Random real number between -250.00 and 250.00) towards (Facing of (Triggering unit)) degrees) facing Default building facing degrees
      • Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
      • Set Location = (Position of (Last created unit))
      • Custom script: call RemoveLocation(udg_Location)
Correct it like this:
  • For each (Integer Variable) from 1 to 15, do (Actions) -I hope this helps a little... ~xIceShotx
 
Last edited:
Top