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!
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"
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
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:
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:
A: LocOffset is a Point Array Variable. CasLoc offset by.... is "Point with Polar Offset"...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)
`TheHated`denmax / denzel94 Productions™
Genesis of the 3 J's Maximus © 2008 (Gens, James, Junmil, Jomar, Denzel)