[Trigger] Basic Spell Question

Level 6
Joined
Aug 1, 2009
Messages
159
Hi, I am new to spell making and I want to start off with basic nova spells. I already tried to make one but in game it doesn't work (nothing is going on), I was making a mass impale but I cant get it to work. If you guys know a tutorial about Nova Spells, please link me.

Or show me an example please.
 
Level 6
Joined
Aug 1, 2009
Messages
159
I did it but nothing really happens, I am getting confused with the abilities part, I have read Daelin's tutorial about dummy units and I know how to make one, I added the ability that I made to the dummy and use triggers, but nothing works in-game.

Can you show me a trigger here? Or just provide me a map with it.

(Off Topic: Sorry for double posting.)

Edit: Hey, can you show me the things that I should edit in a custom ability? Like the cooldown and duration stuffs, maybe I'm wrong in the customs I made.

I got 2 Abilities, 1 Mass Impale [Impale - Hero Type Skill] and a Mass Impale for Dummy Unit, its same settings but its just an Unit Type Skill, and for my Dummy Unit, I made one by using Daelin's Tutorial about Dummy Units. I followed all the triggers in this tutorial so its actually the same.

* Massive Impale
o Events
+ Unit - A unit Starts the effect of an ability
o Conditions
+ (Ability being cast) Equal to Massive Impale
o 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)

Thank you.

Again Test Map is much appreciated.
 
Level 14
Joined
Nov 18, 2007
Messages
1,084
  • MassImpale
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Mass Impale
    • Actions
      • Set CasterUnit = (Triggering unit)
      • Set CasterLoc = (Position of CasterUnit)
      • For each (Integer A) from 0 to 7, do (Actions)
        • Loop - Actions
          • Unit - Create 1 xe unit (Modified) for (Owner of (Triggering unit)) at CasterLoc facing Default building facing degrees
          • Set DummyUnit = (Last created unit)
          • Unit - Add Impale (Neutral Hostile) to DummyUnit
          • Unit - Add a 2.00 second Generic expiration timer to DummyUnit
          • Set PolarPoint = (CasterLoc offset by 200.00 towards (45.00 x (Real((Integer A)))) degrees)
          • Unit - Order DummyUnit to Undead Crypt Lord - Impale PolarPoint
          • Custom script: call RemoveLocation(udg_PolarPoint)
      • Custom script: call RemoveLocation(udg_CasterLoc)
I was too lazy to make this scale with level.
For the sake of having easier angle calculations, I made it loop from 0 to 7.
45 is calculated from 360/8.
200 is just a random offset number.
 

Attachments

  • MassImpale.w3x
    17.9 KB · Views: 58
Level 6
Joined
Aug 1, 2009
Messages
159
Thank you for your responses, I'll try to study then right now. I'm going to reply here if somethings have gone wrong. Thank you.

+rep!
 
Level 6
Joined
Aug 1, 2009
Messages
159
Okay, as far as I know, I just tested yours and works like a charm. But mine isn't could you check it out on whats the problem?

GUI
  • MassImpale
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Mass Impale
    • Actions
      • Set CasterUnit = (Triggering unit)
      • Set CasterLoc = (Position of CasterUnit)
      • For each (Integer A) from 0 to 7, do (Actions)
        • Loop - Actions
          • Unit - Create 1 xe unit (Modified) for (Owner of (Triggering unit)) at CasterLoc facing Default building facing degrees
          • Set DummyUnit = (Last created unit)
          • Unit - Add Impale (Neutral Hostile) to DummyUnit
          • Unit - Add a 2.00 second Generic expiration timer to DummyUnit
          • Set PolarPoint = (CasterLoc offset by 200.00 towards (45.00 x (Real((Integer A)))) degrees)
          • Unit - Order DummyUnit to Undead Crypt Lord - Impale PolarPoint
          • Custom script: call RemoveLocation(udg_PolarPoint)
      • Custom script: call RemoveLocation(udg_CasterLoc)
Heres the map:
 

Attachments

  • MassImapale_.w3x
    9.7 KB · Views: 27
Level 14
Joined
Nov 18, 2007
Messages
1,084
For some reason, the trigger in the map you provided does not have
  • Unit - Order DummyUnit to Undead Crypt Lord - Impale PolarPoint
What the trigger should look like:
  • Mass Impale Start
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Mass Impale
    • Actions
      • Set CasterUnit = (Triggering unit)
      • Set CasterLoc = (Position of CasterUnit)
      • For each (Integer A) from 0 to 7, do (Actions)
        • Loop - Actions
          • Unit - Create 1 xe unit (edited) for (Owner of CasterUnit) at CasterLoc facing Default building facing degrees
          • Set DummyUnit = (Last created unit)
          • Unit - Add Impale (Neutral Hostile) to DummyUnit
          • Unit - Add a 2.00 second Generic expiration timer to DummyUnit
          • Set PolarPoint = (CasterLoc offset by 200.00 towards (45.00 x (Real((Integer A)))) degrees)
          • Unit - Order DummyUnit to Undead Crypt Lord - Impale PolarPoint
          • Custom script: call RemoveLocation(udg_PolarPoint)
      • Custom script: call RemoveLocation(udg_CasterLoc)
 
Level 6
Joined
Aug 1, 2009
Messages
159
There I did some quick edits but still it didn't work for me. I added the one that you said that I don't have. Right now still nothings going on. I also did try giving the dummy unit the Mass Impale ability and its based on the skill "Howl of Terror" but when I select it or use it, it appears as an single target for me (like storm bolt), on your map its not an single target ability. Could you check my dummy and my custom ability?
 

Attachments

  • MassImapale_.w3x
    9.7 KB · Views: 29
Level 14
Joined
Nov 18, 2007
Messages
1,084
Frankly, I'm a bit befuddled why this doesn't work for you yet fine for me. :p I thought maybe it was because I was using JNGP, but it worked fine for me even with the normal world editor.

Anyway, the dummy unit doesn't need to have the Mass Impale ability. The ability that it uses to impale enemy units is the ability, Impale (Neutral Hostile), whose raw code is ACmp. That ability is added to the dummy unit in the trigger with
  • Unit - Add Impale (Neutral Hostile) to DummyUnit
If you wish, you could add that ability via object editor so that you could remove that line.

I looked at your test-map and I only removed the Mass Impale Ability you added to the dummy unit. It still works fine for me.
Anyways, I'll try again. If it doesn't work for you, I don't know if I can help you anymore... :O
  • Mass Impale Start
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Mass Impale
    • Actions
      • Set CasterUnit = (Triggering unit)
      • Set CasterLoc = (Position of CasterUnit)
      • For each (Integer A) from 0 to 7, do (Actions)
        • Loop - Actions
          • Unit - Create 1 xe unit (edited) for (Owner of CasterUnit) at CasterLoc facing Default building facing degrees
          • Set DummyUnit = (Last created unit)
          • Unit - Add Impale (Neutral Hostile) to DummyUnit
          • Unit - Add a 2.00 second Generic expiration timer to DummyUnit
          • Set PolarPoint = (CasterLoc offset by 200.00 towards (45.00 x (Real((Integer A)))) degrees)
          • Unit - Order DummyUnit to Undead Crypt Lord - Impale PolarPoint
          • Custom script: call RemoveLocation(udg_PolarPoint)
      • Custom script: call RemoveLocation(udg_CasterLoc)
 

Attachments

  • MassImapale_.w3x
    9.7 KB · Views: 97
Level 8
Joined
Apr 30, 2009
Messages
338
your error was not in the trigger, it was in the ability editor

The Order String of your dummy spell is "Howl of Terror" which means you cannot target a point with the custom spell.

You have to make a new spell and base the spell on Impale

Here is the new map and it works now

The ability that you trigger must match the "Text Order String Use" field in the ability editor

So Crypt Lord - Impale will trigger the ability with the order string "impale"

It looks cool and I lowered the cast point of the paladin so you can spam it now instead of waiting for the cast animation

oh and here is another quirk with the impale ability - it will not affect a unit that is already stunned by impale. The impale effects in DotA are 100% triggered for this reason (the impale spell is never actually cast - the trigger actually changes the unit's flying height in order to make it look like the real impale spells. the dummy spell actually cast is probably storm bolt on each individual unit for the stun effect)
 

Attachments

  • mass_impale_work.w3x
    9.8 KB · Views: 38
Level 6
Joined
Aug 1, 2009
Messages
159
Thank you, it worked. But I tried it for Shockwave, it worked but suddenly when I cast it ultra lag. Can you check it out?

+rep to watermelon & tml616
 

Attachments

  • mass_impale_work.w3x
    10.3 KB · Views: 34
Level 14
Joined
Nov 18, 2007
Messages
1,084
The lag can come from either Shockwave being casted for the first time or because of the terrain deformations caused by Shockwave.
If it keeps lagging all the time whenever you cast the spell, it would be because of the latter reason. If you want to avoid lagging all the time, you should use Carrion Swarm instead.
 
Level 8
Joined
Apr 30, 2009
Messages
338
1. you added an expiration timer to the triggering unit instead of the dummy units

2. your dummy units are casting the hero version of shockwave because you gave them the hero ability instead of the dummy ability. this means when they cast shockwave it will also start the trigger again in an infinite loop. you must have a DUMMY version of the spell for the dummy units to cast, you cannot give them the same spell the hero is casting.

3. you dont have to "add ability" to the dummy units since you will give them the ability via the ability editor

82014d1274032013-basic-spell-question-shock.jpg


4. again, your biggest mistake was in the object editor, your triggers are generally fine and easy to fix

5. you probably know this since you based mass impale on howl, but for instant AOE nova spells, it is best to use a base ability with no target

  • Mass Shockwave Start
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Mass Shockwave
    • Actions
      • Set CasterUnit = (Triggering unit)
      • Set CasterLoc = (Position of CasterUnit)
      • For each (Integer A) from 0 to 7, do (Actions)
        • Loop - Actions
          • Unit - Create 1 Dummy (Mass Shockwave) for (Owner of (Triggering unit)) at CasterLoc facing Default building facing degrees
          • Set DummyUnit = (Last created unit)
          • -------- ---------------------------------------------- --------
          • -------- Dont add the ability to the unit, just give them the ability in the object editor --------
          • Unit - Add Shockwave (Neutral Hostile) to DummyUnit
          • -------- ---------------------------------------------- --------
          • -------- ---------------------------------------------- --------
          • -------- You are putting a timer on the triggering unit (hero) instead of your dummy units --------
          • Unit - Add a 2.00 second Generic expiration timer to (Triggering unit)
          • -------- ---------------------------------------------- --------
          • Set PolarPoint = (CasterLoc offset by 200.00 towards (45.00 x (Real((Integer A)))) degrees)
          • Unit - Order DummyUnit to Orc Tauren Chieftain - Shockwave PolarPoint
          • Custom script: call RemoveLocation(udg_PolarPoint)
      • Custom script: call RemoveLocation(udg_CasterLoc)
 

Attachments

  • shock.jpg
    shock.jpg
    180.6 KB · Views: 168
  • shock_work.w3x
    10.3 KB · Views: 51
Level 6
Joined
Aug 1, 2009
Messages
159
Thank you very much, I created my next spell and it worked. Thanks for everyone. I used howl of terror just as you said, and used carrion swarm.

+rep!
 
Top