Spells - Making Nova Spells

denmax

You can change this now in User CP.
Reaction score
155
PS: Double slash (//) in triggers are self comments and are not intended to be part of the trigger

This is only the basics and never giving more!

Novas defined

Novas are a special brand of abilities where a set of projectiles, other abilities, or units, are spawned and made around the casting unit, or casting target, for the purpose of doing tasks similar to that of War Stomp, Thunder Clap, et cetera, but with more eyecandy and, in essence, greater options of delivering effects (such as damage over time, greater potency on closer targets, and more). If you're an avid fan of Dota, abilities such as Shadow Fiend's Requim of Souls, Tidehunter's Ravage, and Venomancer's Poison Nova.

What you will need

It is important to note that keeping your Frozen Throne copy updated allows you to have these triggers without much problems. It is recommended that the version be 1.20a or greater.

Prepare:
An instant, no target, ability (War Stomp, Thunder Clap) with damage, buffs, and duration removed. Please remember that setting duration to 0 does not technically mean it is removed. Just to be safe, it is best to set it at 0.01. The best ability to base ourselves on, however, is Channel with the appropriate options.

Variables- please be reminded that you may be able to rename them however you please
Caster (unit) = this will refer to our casting unit - e.g. the Hero
CasLoc (Point) = the position for the casting unit
LocOffset (Point) = points to where the cast will be target, or the dummy will be ordered to move
Real (Real) = an essential variable to make locoffset output without problems


Trigger:
  • Basic
    • Events
    • Unit - A unit Starts the effect of an ability
    • Conditions
    • (Ability being cast) Equal to Nova Spell
    • Actions
    • Set Caster = (Triggering Unit)
    • Set CasLoc = (Position of (Triggering unit))
    • Set Real = 0.00
    • For each (Integer A) from 1 to 8, do (Actions)
    • Loop - Actions
    • Unit - Create 1 Dummy Unit for (Owner of Caster) at CasLoc facing default building facing degrees
    • Set LocOffset[(Integer A)] = (CasLoc offset by 700.00 towards Real degrees)
    • Set Real = (Real + (360.00 / 8.00))


This trigger will prove to be the basis for most of the other different types of nova spells.

Using units

This type of Nova utilizes in creating a dummy unit and ordering to move to a certain location (LocOffset), innately dealing damage using a passive ability (Tornado, Permanent Immolation), or activated by means of triggers (Bladestorm), or other effects. For Dota fans, Poison Nova serves as the best example.

In this trigger, I will be creating eight dummy Blademasters to cast Bladestorm around the casting unit.

Prepare:
A dummy unit with Locust and Invulnerability. For our sample, the unit must have Bladestorm and the model of the Blademaster. It should have 0 collision, movespeed of about 220 and movement-type Fly. These units will usually float over trees. To solve this, go to Destructibles and set the tree's Fly-Over Height to 0. If the dummy unit offers too much sight, reduce its sight radius to lower than 500.

Please remember that the first part of the trigger is based on the main in the very beginning of the tutorial.

Trigger:
  • Twisting Slash
    • Events
    • Unit - A unit Starts the effect of an ability
    • Conditions
    • (Ability being cast) Equal to Twisting Slash (Hero)
    • Actions
    • Set Caster = (Triggering Unit)
    • Set CasLoc = (Position of (Triggering unit))
    • Set Real = 0.00
    • For each (Integer A) from 1 to 8, do (Actions)
    • Loop - Actions
    • Unit - Create 1 Spinning Illusion (Dummy) for (Owner of Caster) at CasLoc facing default building facing degrees
    • Unit - Turn collision for (Last created unit) Off
    • Unit - Set level of Twisting Slash (Dummy) for (Last created unit) to (Level of Twisting Slash (Hero) for Caster)
    • Animation - Change (Last created unit)'s vertex coloring to (50.00%, 50.00%, 50.00%) with 50.00% transparency
    • Unit - Order (Last created unit) to Orc Blademaster - Bladestorm
    • Set LocOffset[(Integer A)] = (CasLoc offset by 700.00 towards Real degrees)
    • Unit - Order (Last created unit) to Move To LocOffset[(Integer A)]
    • Unit - Add a 3.50 second Generic expiration timer to (Last created unit)
    • Set Real = (Real + (360.00 / 8.00))
    • Custom script: call RemoveLocation(udg_LocOffset[bj_forLoopAIndex])
    • Custom script: call RemoveLocation(udg_CasLoc)


If you want a detailed information for every use of the action, open this "SPOILER"
Code:
Twisting Slash
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Twisting Slash (Hero)
    Actions
        Set Caster = (Triggering Unit)
        Set CasLoc = (Position of (Triggering unit))
        Set Real = 0.00
        For each (Integer A) from 1 to 8, do (Actions)
            Loop - Actions
                Unit - Create 1 Spinning Illusion (Dummy) for (Owner of Caster) at CasLoc facing default building facing degrees-------------//Create's the dummy unit
                Unit - Turn collision for (Last created unit) Off ---------------------------------------------------------------------------------------------------------------// Turns off the collision fo the dummy unit
                Unit - Set level of Twisting Slash (Dummy) for (Last created unit) to (Level of Twisting Slash (Hero) for Caster)-----------------------------------------------//Sets the level of twisting slash dummy (based on bladestorm) to the level of twisting slash to the hero
                Animation - Change (Last created unit)'s vertex coloring to (50.00%, 50.00%, 50.00%) with 50.00% transparency-----------------------------------------//Optional, just to make the dummies transparent
                Unit - Order (Last created unit) to Orc Blademaster - Bladestorm ------------------------------------------------------//orders the dummy to do twisting slash dummy (ts dummy is based on bladestorm)
                Set LocOffset[(Integer A)] = (CasLoc offset by 700.00 towards Real degrees)----------------------------------------//sets locoffset
                Unit - Order (Last created unit) to Move To LocOffset[(Integer A)]--------------------------------------------------//orders the dummy to move to locoffset
                Unit - Add a 3.50 second Generic expiration timer to (Last created unit)-------------------------------------------------//after "3.5 seconds", the dummy will die
                Set Real = (Real + (360.00 / 8.00)) ------------------------------------------------------------------------------//essentially sets itself to make locoffset do it's greatest work
                Custom script: call RemoveLocation(udg_LocOffset[bj_forLoopAIndex]) ------------------------------------------------------------------------------------------------------------------------------//destroys leak
        Custom script:  call RemoveLocation(udg_CasLoc) ---------------------------------------------------------------------//destroys leak

Custom Scripts clean these so called "memory leaks".

Then here you have: A succesful "Twisting Slash"

twistingslash2pd3.png


Another way to use this is to "slide" these units. Look for the sliding tutorial around here and you might know what I mean.

LINE NOVA SPELLS

Line nova spells are spells where a dummy unit casts a linear spell (shockwave, impale, etc.)

Our example now is using impale as a linear spell..

Prepare:
A dummy unit with no model, no attack enabled, invulnerable, locust, no shadow..

Trigger:
  • Massive Impale
    • Events
    • Unit - A unit Starts the effect of an ability
    • Conditions
    • (Ability being cast) Equal to Massive Impale
    • Actions
    • Set Caster = (Triggering unit)
    • Set Real = 0.00
    • Set CasLoc = (Position of (Triggering unit))
    • For each (Integer A) from 1 to 8, do (Actions)
    • Loop - Actions
    • Unit - Create 1 Dummy Unit for (Owner of Caster) at CasLoc facing default building facing degrees
    • Unit - Turn collision for (Last created unit) Off
    • Unit - Add Massive Impale (Dummy) to (Last created unit)
    • Unit - Set level of Massive Impale (Dummy) for (Last created unit) to (Level of Massive Impale (Hero) for (Triggering unit))
    • Set LocOffset[(Integer A)] = (CasLoc offset by 700.00 towards Real degrees)
    • Unit - Order (Last created unit) to Undead Crypt Lord - Impale LocOffset[(Integer A)]
    • Set Real = (Real + (360.00 / 8.00))
    • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
    • Custom script: call RemoveLocation(udg_LocOffset[bj_forLoopAIndex])
    • Custom script: call RemoveLocation(udg_CasLoc)

If you want information about the actions within the trigger, you may look under the "SPOILER"
Code:
Massive Impale
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Massive Impale
    Actions
        Set Caster = (Triggering unit)
        Set Real = 0.00
        Set CasLoc = (Position of (Triggering unit))
        For each (Integer A) from 1 to 8, do (Actions)
            Loop - Actions
                Unit - Create 1 Dummy Unit for (Owner of Caster) at CasLoc facing default building facing degrees
                Unit - Turn collision for (Last created unit) Off
                Unit - Add Massive Impale (Dummy) to (Last created unit) -----------------------------------------------------------------------------------------------//adds the ability massive impale (dummy) -based on impale- to the dummy
                Unit - Set level of Massive Impale (Dummy) for (Last created unit) to (Level of Massive Impale (Hero)  for (Triggering unit))
                Set LocOffset[(Integer A)] = (CasLoc offset by 700.00 towards Real degrees)
                Unit - Order (Last created unit) to Undead Crypt Lord - Impale LocOffset[(Integer A)] -----------------------------------------------------------------------------------------------//massive impale dummy is based on impale and so orders the dummy to cast massive impale dummy to locoffset
                Set Real = (Real + (360.00 / 8.00))
                Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                Custom script: call RemoveLocation(udg_LocOffset[bj_forLoopAIndex])
        Custom script:  call RemoveLocation(udg_CasLoc)

And there you go, you have Massive Impale

massiveimpaleou6.png


INDIVIDUAL SPELL CAST NOVA

Individual Spell Cast Novas are novas of which different spells (flame strike, warstomp, etc.) will be used to 2, 3, 4 times (or more) around the hero to look alot like a linear spell.

EXAMPLE: Flame Strike

Prepare:
A dummy unit with no model, no attack enabled, invulnerable, locust, no shadow..


Trigger:
  • Sufferings of Hell
    • Events
    • Unit - A unit Starts the effect of an ability
    • Conditions
    • (Ability being cast) Equal to Sufferings of Hell (Hero)
    • Actions
    • Set Real = 0.00
    • Set Caster = (Triggering unit)
    • Set CasLoc = (Position of (Triggering unit))
    • For each (Integer A) from 1 to 8, do (Actions)
    • Loop - Actions
    • -------- first --------
    • Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at CasLoc facing default building facing degrees
    • Unit - Add Sufferings of Hell (Dummy) to (Last created unit)
    • Unit - Set level of Sufferings of Hell (Dummy) for (Last created unit) to (Level of Sufferings of Hell (Hero) for (Triggering unit))
    • Set LocOffset[(Integer A)] = (CasLoc offset by 400.00 towards Real degrees)
    • Unit - Order (Last created unit) to Human Blood Mage - Flame Strike LocOffset[(Integer A)]
    • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
    • -------- second --------
    • Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at CasLoc facing default building facing degrees
    • Unit - Add Sufferings of Hell (Dummy) to (Last created unit)
    • Unit - Set level of Sufferings of Hell (Dummy) for (Last created unit) to (Level of Sufferings of Hell (Hero) for (Triggering unit))
    • Set LocOffset[((Integer A) + 3)] = (CasLoc offset by 800.00 towards Real degrees)
    • Unit - Order (Last created unit) to Human Blood Mage - Flame Strike LocOffset[((Integer A) + 3)]
    • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
    • -------- third --------
    • Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at CasLoc facing default building facing degrees
    • Unit - Add Sufferings of Hell (Dummy) to (Last created unit)
    • Unit - Set level of Sufferings of Hell (Dummy) for (Last created unit) to (Level of Sufferings of Hell (Hero) for (Triggering unit))
    • Set LocOffset[((Integer A) + 6)] = (CasLoc offset by 1200.00 towards Real degrees)
    • Unit - Order (Last created unit) to Human Blood Mage - Flame Strike LocOffset[((Integer A) + 6)]
    • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
    • Set Real = (Real + (360.00 / 8.00))
    • Custom script: call RemoveLocation(udg_LocOffset[bj_forLoopAIndex])
    • Custom script: call RemoveLocation(udg_LocOffset[bj_forLoopAIndex + 3])
    • Custom script: call RemoveLocation(udg_LocOffset[bj_forLoopAIndex + 6])
    • Custom script: call RemoveLocation(udg_CasLoc)


And here you go, a succestul indi cast nova:

sufferingsofhelljg7.png


FAQs:
Q: Since you said that DotA's Poison Nova is a Unit Nova, how did they make that?
A: They did that via unit group. To do so, you would have to force the unit to move via triggers and set a unit group for every ... second (see Sliding Tutorial).. In the unitgroup, you will pick everyone in that group and make another dummy unit cast a spell that does continuous damage..

I know how, but I'm not telling because I'm only giving the basics (besides, I'm too lazy).. maybe in the future I would IF abt a high ratio of ppl want

Q: Could I use a different one than Bladestorm?
A: Of course you can. You could do the one in Q[1] or use Permanent Immolation

Q: What if I use war stomp in the individual spell cast nova?
A: You'd have to set LocOffset first, then create the unit ON LocOffset

Q: Can we use a dummy unit that already has the dummy spell (in Line and Indi Cast)
A: Of course you could. Just remove "Unit - Add Ability"

Q: Could we use another spell besides the first or second spell casted in indi cast nova?
A: Of course you could. The output would be that the nearest will be something, then mid range is another, and the farther will be another and if there is one more farther, then another one etc..

Q: Could we use another distance other than 400 in Indi Cast Nova?
A: Yes you could. Just asking if you would do it >.>

From Windwalk:
Q:hi can you help me here cuz i really don't understand this part

Code:
Set LocOffset[(Integer A)] = (CasLoc offset by 400.00 towards Real degrees)
A: LocOffset is a Point Array Variable. CasLoc offset by.... is "Point with Polar Offset"...



`TheHated`denmax / denzel94 Productions™
Genesis of the 3 J's Maximus © 2008 (Gens, James, Junmil, Jomar, Denzel)
 

vypur85

Hibernate
Reaction score
803
Code:
Set LocOffset[(Integer A)]

Haven't entirely read the code but I think you don't need arrays for the point variables.



I think this can be looped again to shorten it:
Code:
                -------- first --------
                Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at CasLoc facing default building facing degrees
                Unit - Add Sufferings of Hell (Dummy) to (Last created unit)
                Unit - Set level of Sufferings of Hell (Dummy) for (Last created unit) to (Level of Sufferings of Hell (Hero)  for (Triggering unit))
                Set LocOffset[(Integer A)] = (CasLoc offset by 400.00 towards Real degrees)
                Unit - Order (Last created unit) to Human Blood Mage - Flame Strike LocOffset[(Integer A)]
                Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
                -------- second --------
                Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at CasLoc facing default building facing degrees
                Unit - Add Sufferings of Hell (Dummy) to (Last created unit)
                Unit - Set level of Sufferings of Hell (Dummy) for (Last created unit) to (Level of Sufferings of Hell (Hero)  for (Triggering unit))
                Set LocOffset[((Integer A) + 3)] = (CasLoc offset by 800.00 towards Real degrees)
                Unit - Order (Last created unit) to Human Blood Mage - Flame Strike LocOffset[((Integer A) + 3)]
                Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
                -------- third --------
                Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at CasLoc facing default building facing degrees
                Unit - Add Sufferings of Hell (Dummy) to (Last created unit)
                Unit - Set level of Sufferings of Hell (Dummy) for (Last created unit) to (Level of Sufferings of Hell (Hero)  for (Triggering unit))
                Set LocOffset[((Integer A) + 6)] = (CasLoc offset by 1200.00 towards Real degrees)
                Unit - Order (Last created unit) to Human Blood Mage - Flame Strike LocOffset[((Integer A) + 6)]
                Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
But you probably do it longer for the tutorial sake, so I think it should be still OK.
 

denmax

You can change this now in User CP.
Reaction score
155
I don't use For Loop Intger B.. If you want to then go then..

Try using with no arrays.. Look at the outcome ^_^...
 

darkRae

Ueki Fan (Ueki is watching you)
Reaction score
173
You can do it without arrays by setting the Location variable, do whatever you want with it, then Remove it, then set it again, rinse and repeat until the end of the trigger.

Just a suggestion.
Although, I have a question.
Why do you add 3 and 6 to the array in the last code?
Adding 1 and 2 should also work, shouldn't it?
 

XeNiM666

I lurk for pizza
Reaction score
138
But how can you make a,
maybe,
a nova of shockwaves with only one damage.??
 

denmax

You can change this now in User CP.
Reaction score
155
@darkRae

Since that 2 and 3 are for the 2nd and 3rd point.. I have a problem with locations that has no arrays though T_T...

@XeNiM666

You would have to equaly change the area damage of shockwave.. If you dont want, then use unit novas and place incineration to the unit..
 

denmax

You can change this now in User CP.
Reaction score
155
BUMP!

When you need help, ask me while you still can. I might have a hiatus (or permanent) on mapping again :D

~

Yours Truly,

Thy FuKiN n0oB
 

BANANAMAN

Resident Star Battle Expert.
Reaction score
150
is it possible to use thunder clap,Chainlighting and forked lighting in a nova spell?
 

denmax

You can change this now in User CP.
Reaction score
155
Thunder Clap, yes. One Target Spells, NO..

It's already picking every unit around you and casting CL or FL to each..
 

cr4xzZz

Also known as azwraith_ftL.
Reaction score
51
> An instant cast spell (War Stomp, Thunder Clap) with removing the damage, buffs, duration to 0.01 (if it gives buff)
Fan of Knives, Howl of Terror, Berserk ... And plenty more. I never use War Stomp due to the mini stun. Some people may not want a mini stun, so it's better to choose a spell like Fan of Knives :p
 

Romek

Super Moderator
Reaction score
963
Can you attach a Sample? Or a map with the 3 spells you created?

I want to see what the spells look like >.<

As for the tutorial, It's not bad. You could improve the grammer and cut down on abbreviations. (For example: btw, afaik, etc)
 
R

Ricky

Guest
Hey~Ricky

I like it, simple, easy to read and it really helps :thup:
 

denmax

You can change this now in User CP.
Reaction score
155
Can you attach a Sample? Or a map with the 3 spells you created?

I want to see what the spells look like >.<

As for the tutorial, It's not bad. You could improve the grammer and cut down on abbreviations. (For example: btw, afaik, etc)

Fine I'll make one :D..


No wait I'm too lazy and it is placed in my map =P.. (AoC)

@cr4xzZz

That's why those are examples =P.. Any that's why i placed "0.01 (if it gives buffs)"
 

denmax

You can change this now in User CP.
Reaction score
155
LocOffset is a Point Array Variable..

CasLoc offset by.... is "Point with Polar Offset"...
 

DK's Pride

New Member
Reaction score
7
...

I cant make it work :(

Heres the trigger, ive tried to follow the guide as much as possible. But it still dont work :(

Code:
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Firenova 
Actions
Set CastingUnit = (Triggering unit)
Set Real = 0.00
Set CasterLoc = (Position of (Triggering unit))
For each (Integer A) from 1 to 8, do (Actions)
    Loop - Actions
        Unit - Create 1 Knight for (Owner of (Triggering unit)) at CasterLoc facing Default building facing degrees
        Unit - Turn collision for (Last created unit) Off
        Unit - Add Fire Nova - (Dummy)  to (Last created unit)
        Unit - Set level of Fire Nova - (Dummy)  for (Last created unit) to (Level of Firenova  for (Triggering unit))
        Set Locoffset[(Integer A)] = ((Center of (Playable map area)) offset by 700.00 towards Real degrees)
        Unit - Order (Last created unit) to Orc Tauren Chieftain - Shockwave Locoffset[(Integer A)]
        Set Real = (Real + (360.00 / 8.00))
        Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
        Custom script:   call RemoveLocation(udg_Locoffset[bj_forLoopAIndex])
        Custom script:   call RemoveLocation(udg_CasterLoc)

Mhm what is wrong? :(
 

denmax

You can change this now in User CP.
Reaction score
155
Sorry...

• Locoffset[Integer A] = you offset on the CENTER OF THE PLAYABLE MAP AREA instead of CasLoc..
• Destruction of CasLoc shouldn't be under the loop
 

Tyman2007

Ya Rly >.
Reaction score
74
Thanks denmax, i used this tutorial a while ago and made my first efficiant nova sets of spells.

In my personal opinion, i hope this gets approved.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top