1. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  2. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  3. The Lich King demands your service! We've reached the 19th edition of the Icon Contest. Come along and make some chilling servants for the one true king.
    Dismiss Notice
  4. The 4th SFX Contest has started. Be sure to participate and have a fun factor in it.
    Dismiss Notice
  5. The poll for the 21st Terraining Contest is LIVE. Be sure to check out the entries and vote for one.
    Dismiss Notice
  6. The results are out! Check them out.
    Dismiss Notice
  7. Don’t forget to sign up for the Hive Cup. There’s a 555 EUR prize pool. Sign up now!
    Dismiss Notice
  8. The Hive Workshop Cup contest results have been announced! See the maps that'll be featured in the Hive Workshop Cup tournament!
    Dismiss Notice
  9. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

How to create Nova Spells [Reviewed: PurplePoot]

Discussion in '"Graveyard"' started by DenZel94, May 23, 2008.

  1. DenZel94

    DenZel94

    Joined:
    Jun 4, 2006
    Messages:
    127
    Resources:
    5
    Maps:
    3
    Tutorials:
    2
    Resources:
    5
    COULD SOME ADMIN / FM ATTACH THE IMAGES FOR ME? SOMEHOW, I CANT UPLOAD FROM THE ATTACHMENTS

    This is only the basics and nevery giving more!


    ORIGINAL LINK: http://www.thehelper.net/forums/showthread.php?p=751781#post751781

    Hello. This will be a tutorial where you'd be creating nova spells..

    What are Nova spells?


    Nova spells are spells where it will create a unit, or missiles, or any other thing that will go through a straight line in all diretions of the caster's position (at least) and then will disappear after finishing its job (at least).

    What you will need


    You will need, of course, the World Editor. It is recommended that you have at least 1.20a and The Frozen Throne

    Prepare:
    An instant cast spell (War Stomp, Thunder Clap) with removing the damage, buffs, duration to 0.01 (if it gives buff)

    Prepare these variables:
    Caster (unit) = casting unit
    CasLoc (Point) = position for the casting unit
    Real (Real) = essential to make locoffset
    LocOffset (Point) = points to where the cast will be target, or the dummy will be ordered to move


    • 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)] = (TSCasLoc offset by 700.00 towards TSReal degrees)
            • Set Real = (Real + (360.00 / 8.00))


    Now this will be the basic trigger.. Now we have 3 types of Nova spells.. The Unit spell, line cast spell and individual spell (unknown for it's real identification)

    UNIT NOVA SPELL


    A unit nova spell is where you use a dummy unit to be ordered to move to the certain location (LocOffset) with certain things that could damage an enemy unit or do any other effect. An example would be a Blademaster using Bladestorm, or in DotA, the Poison Nova's missiles are dummy units

    I will have the example of the Blademaster using Bladestrom..

    Prepare:
    A dummy unit with Locust and Invulnerability. Since we're having and example of the Blademaster using Bladestorm, it must have Bladestorm, model of the Blademaster, 0 collision, movespeed of about 220 and type Fly (if there are trees in the map, go to Destructibles and set the tree's Fly-Over Height to 0), sight radius to lower than 500 (to disable large sight for the dummy unit)

    • 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)


    Custom Scripts clean leaks btw..

    Then here you have: A succesful "Twisting Slash"

    [​IMG]

    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..

    • 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)


    And there you go, you have Massive Impale

    [​IMG]

    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..


    • 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:

    [​IMG]

    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)..

    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"
     
  2. PurplePoot

    PurplePoot

    Joined:
    Dec 14, 2005
    Messages:
    11,161
    Resources:
    3
    Maps:
    1
    Spells:
    1
    Tutorials:
    1
    Resources:
    3
    What about Channel? It's better in every way than any of those.

    Unneeded, just do 45*(Integer A) (or whatever other scale you want)

    Also, this is more of a trigger showcase than a tutorial; you don't explain the triggers or develop them during the tutorial, you just post them.