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

Mana Form 0.01

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
This is my first spell 0.0,if have leaks please tell me.
Here is the Describe:
Transforms into a wave of water and charges towards the target location, damaging enemy units in its path. In this state, logically water is able to cross obstacles,it also gives mana to the caster.
Level - 1 - Gives .5 mana,cause 100 - 130 damage.
Level - 2 - Gives 1 mana,cause 200 - 230 damage.
Level - 3 - Gives 1.5 mana,cause 300 - 330 damage.
Level - 4 - Gives 2 mana,cause 400 - 430 damage.
  • Mana Form
  • Events
    • Unit - A unit Starts the effect of an ability
  • Conditions
    • (Ability being cast) Equal to Mana Form
  • Actions
    • Set ManaFormUnit[1] = (Casting unit)
    • Set ManaFormLoc[1] = (Position of ManaFormUnit[1])
    • Set ManaFormLoc[2] = (Target point of ability being cast)
    • Animation - Change ManaFormUnit[1]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
    • Unit - Turn collision for ManaFormUnit[1] Off
    • Unit - Make ManaFormUnit[1] Invulnerable
    • Trigger - Turn on MF Charge <gen>
    • Wait ((Distance between ManaFormLoc[1] and ManaFormLoc[2]) / 2500.00) seconds
    • Trigger - Turn off MF Charge <gen>
    • Unit - Make ManaFormUnit[1] Vulnerable
    • Unit - Turn collision for ManaFormUnit[1] On
    • Animation - Change ManaFormUnit[1]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
    • Custom script: call RemoveLocation(udg_ManaFormLoc[1])
    • Custom script: call RemoveLocation(udg_ManaFormLoc[2])
    • Custom script: call RemoveLocation(udg_ManaFormLoc[3])
    • Custom script: call DestroyGroup(udg_ManaFormGroup)
  • MF Charge
  • Events
    • Time - Every 0.01 seconds of game time
  • Actions
    • Set ManaFormLoc[3] = (ManaFormLoc[1] offset by 20.00 towards (Angle from ManaFormLoc[1] to ManaFormLoc[2]) degrees)
    • Set ManaFormGroup = (Units within 150.00 of (Position of ManaFormUnit[1]) matching (((((Matching unit) belongs to an enemy of (Owner of ManaFormUnit[1])) Equal to True) and (((Matching unit) is alive) Equal to True)) and (((Matching unit) is A structure) Equal to False)))
    • Unit - Move ManaFormUnit[1] instantly to ManaFormLoc[3]
    • Unit - Set mana of ManaFormUnit[1] to ((Mana of ManaFormUnit[1]) + (0.50 + (0.50 x (Real((Level of Mana Form for ManaFormUnit[1]))))))
    • Special Effect - Create a special effect at ManaFormLoc[1] using Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
    • Special Effect - Destroy (Last created special effect)
    • Unit Group - Pick every unit in ManaFormGroup and do (Actions)
      • Loop - Actions
        • Unit - Cause ManaFormUnit[1] to damage (Picked unit), dealing (10.00 + (10.00 x (Real((Level of Mana Form for ManaFormUnit[1]))))) damage of attack type Spells and damage type Normal
        • Unit - Set mana of (Picked unit) to ((Mana of (Picked unit)) - (2.00 - (2.00 x (Real((Level of Mana Form for ManaFormUnit[1]))))))
    • Destructible - Pick every destructible within 150.00 of ManaFormLoc[3] and do (Actions)
      • Loop - Actions
        • Destructible - Kill (Picked destructible)
    • Set ManaFormLoc[1] = ManaFormLoc[3]
Keywords:
Mana,Form
Contents

Mana Form (Map)

Reviews
12th Dec 2015 IcemanBo: Too long time as NeedsFix. Rejected. 14:03, 16th Nov 2010 TriggerHappy: Your spell must be MUI.

Moderator

M

Moderator

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

14:03, 16th Nov 2010
TriggerHappy:

Your spell must be MUI.
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
To answer your Map Initialization question...
Rep is earned by our hardwork
It's people who decide whether to rep you or not
If he/she thinks that you are good in any way (positive way), maybe you get repped, maybe you don't

Btw, nice spell
But it's not original as it copies from Waveform of Morphling =D
3/5 good for starter =D
 
Level 13
Joined
Oct 25, 2009
Messages
995
To answer your Map Initialization question...
Rep is earned by our hardwork
It's people who decide whether to rep you or not
If he/she thinks that you are good in any way (positive way), maybe you get repped, maybe you don't

Btw, nice spell
But it's not original as it copies from Waveform of Morphling =D
3/5 good for starter =D

Thanks,i want ask 1 more things too,how the people can let describe open and close and trigger?:goblin_sleep:
 
Level 28
Joined
Jan 26, 2007
Messages
4,789
The spell does not support multiple uses (aka it's not MUI or MPI).
Also, every 0.01 second is too fast: use every 0.03 or 0.04 second instead.

I believe this spell basically does the same thing by the way (and I've seen other variations of this spell, including one I created myself).

Another thing: I believe you do have leaks.
At the end, you do Set ManaFormLoc[1] = ManaFormLoc[3] ==> The original ManaFormLoc[1] will leak as you never removed the point (as long as a variable is not changed, it will not leak - but you changed the variable, thus creating a leak).
And you created a group in the loop but never removed that group either (aside from the end), creating another leak.

Edit: further info on the leaks.

So in the init trigger you set ManaFormLoc[1] to something, let's say Location(0., 0.) (coordinates).
The loop will set ManaFormLoc[3] to (let's say) Location(0., 1.).
Then at the end, you set ManaFormLoc[1] to Location(0., 1.), while the original location Location(0., 0.) was never removed and warcraft will keep remembering it.
The same goes for the unit group which is never removed in the loop while the variable does change.

how the people can let describe open and close and trigger?
What? O_O
I honestly didn't understand a word of this.
 
Level 13
Joined
Oct 25, 2009
Messages
995
The spell does not support multiple uses (aka it's not MUI or MPI).
Also, every 0.01 second is too fast: use every 0.03 or 0.04 second instead.

I believe this spell basically does the same thing by the way (and I've seen other variations of this spell, including one I created myself).

Another thing: I believe you do have leaks.
At the end, you do Set ManaFormLoc[1] = ManaFormLoc[3] ==> The original ManaFormLoc[1] will leak as you never removed the point (as long as a variable is not changed, it will not leak - but you changed the variable, thus creating a leak).
And you created a group in the loop but never removed that group either (aside from the end), creating another leak.


What? O_O

I means the open and close is this :
triggeropenorclose.jpg


and i use wrong the trigger after the MF trigger turn off?
  • Custom script: call RemoveLocation(udg_ManaFormLoc[1])
    • Custom script: call RemoveLocation(udg_ManaFormLoc[2])
    • Custom script: call RemoveLocation(udg_ManaFormLoc[3])
    • Custom script: call DestroyGroup(udg_ManaFormGroup)
It cannot fix the leaks like that?If i use this 4 Custom Script at the MF Charge,it will auto go to middle.:goblin_jawdrop:
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Auto Middle is when the function returns a NULL function
Meaning the existing location had been removed/cleaned OR it doesn't even exist
It will ALWAYS return to normal location (Center of playable map area)

I think for every time you update the caster's position, then, for every time you're gonna need to clean the leak
0.03 per leak-cleaning

For the Hidden Tag (IT IS CALLED HIDDEN TAG)
Just use this command:
[ HIDDEN="Title" ]YOUR TRIGGER[ /HIDDEN ]
Don't space out the [], like I did
I did that for only example
Look at this:
You just got pwned.
 
Level 28
Joined
Jan 26, 2007
Messages
4,789
and i use wrong the trigger after the MF trigger turn off?
  • Custom script: call RemoveLocation(udg_ManaFormLoc[1])
    • Custom script: call RemoveLocation(udg_ManaFormLoc[2])
    • Custom script: call RemoveLocation(udg_ManaFormLoc[3])
    • Custom script: call DestroyGroup(udg_ManaFormGroup)
It cannot fix the leaks like that?If i use this 4 Custom Script at the MF Charge,it will auto go to middle.:goblin_jawdrop:

They're correct, but the problem lies in the other trigger (by the way: what you posted are actions, triggers are the whole of events, conditions and actions).

I edited my previous post to make it more clear (hopefully).
 
Level 13
Joined
Oct 25, 2009
Messages
995
The spell does not support multiple uses (aka it's not MUI or MPI).
Also, every 0.01 second is too fast: use every 0.03 or 0.04 second instead.

I believe this spell basically does the same thing by the way (and I've seen other variations of this spell, including one I created myself).

Another thing: I believe you do have leaks.
At the end, you do Set ManaFormLoc[1] = ManaFormLoc[3] ==> The original ManaFormLoc[1] will leak as you never removed the point (as long as a variable is not changed, it will not leak - but you changed the variable, thus creating a leak).
And you created a group in the loop but never removed that group either (aside from the end), creating another leak.

Edit: further info on the leaks.

So in the init trigger you set ManaFormLoc[1] to something, let's say Location(0., 0.) (coordinates).
The loop will set ManaFormLoc[3] to (let's say) Location(0., 1.).
Then at the end, you set ManaFormLoc[1] to Location(0., 1.), while the original location Location(0., 0.) was never removed and warcraft will keep remembering it.
The same goes for the unit group which is never removed in the loop while the variable does change.


What? O_O
I honestly didn't understand a word of this.

o_O?
Still don't understand 0.0,can say clearly?0.0
or use trigger :goblin_boom:
 
Level 28
Joined
Jan 26, 2007
Messages
4,789
Location(X, Y) actually comes from the JASS function, but I'll try to explain it a bit better ^^


  • Melee Initialization
    • Events
      • Time - Every 0.01 seconds of game time
    • Conditions
    • Actions
      • Set TempLoc[3] = (TempLoc[1] offset by 1.00 towards 0.00 degrees)
      • -------- Actions go here --------
      • Set TempLoc[1] = TempLoc[3]
This is your trigger in a simple way.

These are the settings before this trigger runs:
TempLoc[1] is set to a certain point.
TempLoc[3] isn't set up yet.

The first time this trigger runs, TempLoc[3] will be set to a value.
Right after this, you change TempLoc[1]:
  • Set TempLoc[1] = TempLoc[3]
The previous value, however, was never removed. (It does not get automatically removed if you change the value of a variable).
Now the original value of TempLoc[1] is lost, forever (you can never recall the same pointer again, thus creating a leak).

And this continues.
As you change TempLoc[3] to TempLoc[1] + blabla, the original TempLoc[3] is also lost! You never use that point again, yet you never removed it either ( = leak).


Really, I can't explain it better.
If you still didn't get it, then learn why variables leak.
Most people just know which variables leak (unit groups, locations, special effects etc) and how to fix them, but if you don't know what's causing those leaks you're just shooting in the dark and bound to miss some day (just like you did with this trigger).
 
Level 1
Joined
Nov 15, 2010
Messages
2
Blur...

Anyone can help me? i dunno how to edit skills...And trigger...truly say,i noe nothing about world editor.Who can teach me ? :goblin_cry:
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Who can teach you is the one who is the most nearest to you (probably your friends...)
If your friends doesn't even interested in Warcraft III or even Warcraft III World Editor, then you're gonna start ready yourself for a SELF-LEARNING lesson
You download a map, and start checking the trigger, the work, the art, the doodads, the models, the Object Editor values, the ALL !
Once you get used to it, you'll be fun making something out of it =D
Second suggestion is that you do some browsing over on YouTube
Some user there posted a lesson how to do some basic spells in warcraft
 
Top