Same ol' Dash spells

Archideas

Active Member
Reaction score
32
Right. As you probably figured out by the title alone here's another desperate cry for help for a dash spell. I've tried to search on this site for any kind of complete dash spell I could copy & paste and edit to my liking but to no avail. This is the spell description and what it's supposed to do.
icons_7741_btn.jpg


Dethecus dissolves into a black mist, forcing his way through enemy lines dealing damage as well as reducing their attack speed for 10 seconds.

Level 1 - 100 damage, 25% attack speed reduction.
Level 2 - 145 damage, 30% attack speed reduction.
Level 3 - 190 damage, 35% attack speed reduction.
Level 4 - 235 damage, 40% attack speed reduction.
Basically it's alot like Morphling's Waveform from DotA but just with a little modification. I'm trying to make this in GUI as I suck ass with JASS. The outcome of this in my head would be a Dreadlord turning into a black mist/wave, cruising his way through enemies for a distance of 500.

I'd also like him to actually move through the enemies and not just instantly teleport to the target point, which I managed to do with my failure of an attempt.

Trigger:
  • Vampiric Wave
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ability being cast) Equal to Vampiric Wave
        • Then - Actions
          • Set TempPoint = (Target point of ability being cast)
          • Set CastingUnitPoint = (Position of (Casting unit))
          • Unit - Pause (Casting unit)
          • Unit - Make (Casting unit) Invulnerable
          • Unit - Create 1 Dummy for (Owner of (Casting unit)) at CastingUnitPoint facing Default building facing degrees
          • Unit - Add Vampiric Wave (Dummy) to (Last created unit)
          • Unit - Set level of Vampiric Wave (Dummy) for (Last created unit) to (Level of Vampiric Wave for (Casting unit))
          • Unit - Order (Last created unit) to Undead Dreadlord - Carrion Swarm TempPoint
          • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
          • Wait 0.10 seconds
          • Unit - Move (Casting unit) instantly to TempPoint, facing (Facing of (Casting unit)) degrees
          • Unit - Unpause (Casting unit)
          • Unit - Make (Casting unit) Vulnerable
        • Else - Actions


Waits are baaad in spell triggers I know, but my brain capacity is very limited in this area. Help is appreciated. Thanks in advance!

*EDIT*

Tried to follow this GUI trigger to make my custom made dash spell, but it seems it won't fire off.
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
I'd also like him to actually move through the enemies and not just instantly teleport to the target point

Then order the dummy to move to TempPoint instead of:
Trigger:
  • Unit - Move (Casting unit) instantly to TempPoint, facing (Facing of (Casting unit)) degrees

You can set it's maximum speed to idk 512? Probably not as fast as the carrion swarm missile but still....

So maybe you could set carrion swarm's model to nothing and speed equal to the speed of the dummy and change the dummy's model to the model of carrion swarm.
 

Archideas

Active Member
Reaction score
32
Well, it doesn't have to be so the unit follows the carrion swarm missile. I'd be as happy if the hero turned into the black/dark mist and damaged them by triggers as well.
 

Ayanami

칼리
Reaction score
288
I've made the spell. Posted the code and the map.

Trigger:
  • Vampiric Wave
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Vampiric Wave
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CustomValue Less than 100
        • Then - Actions
          • Set CustomValue = (CustomValue + 1)
        • Else - Actions
          • Set CustomValue = 1
      • Set Caster[CustomValue] = (Triggering unit)
      • Set CasterLoc[CustomValue] = (Position of Caster[CustomValue])
      • Set TargetPoint[CustomValue] = (Target point of ability being cast)
      • Animation - Change Caster[CustomValue]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
      • Unit - Create 1 Vampiric Wave Effect Dummy for (Owner of Caster[CustomValue]) at CasterLoc[CustomValue] facing TargetPoint[CustomValue]
      • Set Dummy[CustomValue] = (Last created unit)
      • Set TempPoint = (Center of (Playable map area))
      • Unit - Create 1 Hidden Dummy for (Owner of Caster[CustomValue]) at TempPoint facing Default building facing degrees
      • Unit - Set the custom value of (Last created unit) to CustomValue
      • Unit Group - Add (Last created unit) to DummyGroup
      • Custom script: call RemoveLocation(udg_TempPoint)


Trigger:
  • Vampiric Wave Periodic
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
      • (DummyGroup is empty) Equal to False
    • Actions
      • Unit Group - Pick every unit in DummyGroup and do (Actions)
        • Loop - Actions
          • Set TempInt = (Custom value of (Picked unit))
          • Set TempPoint = (Position of Caster[TempInt])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between TempPoint and TargetPoint[TempInt]) Less than or equal to 80.00
            • Then - Actions
              • Animation - Change Caster[TempInt]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
              • Unit - Turn collision for Caster[TempInt] On
              • Unit - Remove Dummy[TempInt] from the game
              • Unit Group - Remove all units from DamagedGroup[TempInt]
              • Custom script: call RemoveLocation(udg_CasterLoc[udg_TempInt])
              • Custom script: call RemoveLocation(udg_TargetPoint[udg_TempInt])
              • Custom script: call RemoveLocation(udg_TempPoint)
              • Unit - Remove (Picked unit) from the game
            • Else - Actions
              • Set Offset[TempInt] = (TempPoint offset by 40.00 towards (Angle from TempPoint to TargetPoint[TempInt]) degrees)
              • Unit - Move Caster[TempInt] instantly to Offset[TempInt]
              • Unit - Move Dummy[TempInt] instantly to Offset[TempInt]
              • Set TempGroup = (Units within 200.00 of Offset[TempInt] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of
              • Custom script: call RemoveLocation(udg_TempPoint)
              • Unit Group - Pick every unit in TempGroup and do (Actions)
                • Loop - Actions
                  • Unit - Cause Caster[TempInt] to damage (Picked unit), dealing (55.00 + (45.00 x (Real((Level of Vampiric Wave for Caster[TempInt]))))) damage of attack type Spells and damage type Magic
                  • Unit Group - Add (Picked unit) to DamagedGroup[TempInt]
                  • Set TempPoint = (Position of (Picked unit))
                  • Unit - Create 1 Vampiric Wave Dummy for (Owner of Caster[TempInt]) at TempPoint facing Default building facing degrees
                  • Unit - Set level of Vampiric Wave (Slow) for (Last created unit) to (Level of Vampiric Wave for Caster[TempInt])
                  • Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • Custom script: call RemoveLocation(udg_TempPoint)
              • Custom script: call DestroyGroup(udg_TempGroup)
              • Special Effect - Create a special effect at Offset[TempInt] using Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
              • Special Effect - Destroy (Last created special effect)
              • Special Effect - Create a special effect at Offset[TempInt] using Abilities\Spells\Undead\CarrionSwarm\CarrionSwarmDamage.mdl
              • Special Effect - Destroy (Last created special effect)
              • Unit - Turn collision for Caster[TempInt] Off
              • Custom script: call RemoveLocation(udg_Offset[udg_TempInt])


Hope this helps.

Glenphir
 

Archideas

Active Member
Reaction score
32
I don't see any map but I'll try to copy the triggers. Thanks alot for your help! Now to try it out. +rep
 

eXirrah

New Member
Reaction score
51
Hmm... There is no way this trigger will be MUI you know(except done using JASS).
I'll just explain to you some steps you need to follow to do what you want.
There are two ways to make a visible illusion of the unit passing through.

First is to create periodic trigger which will move the unit by a small distance
to the destination point over a tiny period of time. This method probably will look
like the Void's Timewalk from dota.

The second method I can think of is to replace the spell animation with a model
of your unit. When the unit casts the spell hide it and wait till the spell get to
the destination point then move it there and unhide it. This method is more
complex cause you will need to synchronize the time at which the spell animation
arrives at the destination point with the trigger that needs to move the unit at that point.
 

Archideas

Active Member
Reaction score
32
eXirrah: Yeah, I think the first option is the one I want. It'd save alot of trouble and possibly even look better.
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
opasnoste.gif

I still don't get it what's so bad about this way?
Less scripting/leaks/memory usage/etc. just plain OE work.
So maybe you could set carrion swarm's model to nothing and speed equal to the speed of the dummy and change the dummy's model to the model of carrion swarm.
 

Archideas

Active Member
Reaction score
32
Quick question Glenphir; exactly how much damage does the wave do? I tried it out and I instantly killed a Knight with one wave. xP Otherwise it's really nice!

*EDIT*

Might have been me who screwed up somewhere in the code so I'll post what I got just incase.

Trigger:
  • Vampiric Wave
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Vampiric Wave
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CustomValue Less than 100
        • Then - Actions
          • Set CustomValue = (CustomValue + 1)
        • Else - Actions
          • Set CustomValue = 1
      • Set Caster[CustomValue] = (Triggering unit)
      • Set CasterLoc[CustomValue] = (Position of Caster[CustomValue])
      • Set TargetPoint[CustomValue] = (Target point of ability being cast)
      • Animation - Change Caster[CustomValue]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
      • Unit - Create 1 Vampiric Wave Dummy for (Owner of Caster[CustomValue]) at CasterLoc[CustomValue] facing TargetPoint[CustomValue]
      • Set Dummy[CustomValue] = (Last created unit)
      • Set TempPoint = (Center of (Playable map area))
      • Unit - Create 1 Dummy for (Owner of Caster[CustomValue]) at TempPoint facing Default building facing degrees
      • Unit - Set the custom value of (Last created unit) to CustomValue
      • Unit Group - Add (Last created unit) to DummyGroup
      • Custom script: call RemoveLocation( udg_TempPoint )


Trigger:
  • Vampiric Wave Periodic
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
      • (DummyGroup is empty) Equal to False
    • Actions
      • Unit Group - Pick every unit in DummyGroup and do (Actions)
        • Loop - Actions
          • Set TempInt = (Custom value of (Picked unit))
          • Set TempPoint = (Position of Caster[TempInt])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between TempPoint and TargetPoint[TempInt]) Less than or equal to 80.00
            • Then - Actions
              • Animation - Change Caster[TempInt]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
              • Unit - Turn collision for Caster[TempInt] On
              • Unit - Remove Dummy[TempInt] from the game
              • Unit Group - Remove all units from DamagedGroup[TempInt]
              • Custom script: call RemoveLocation( udg_CasterLoc[ udg_TempInt ])
              • Custom script: call RemoveLocation( udg_TargetPoint[udg_TempInt])
              • Custom script: call RemoveLocation( udg_TempPoint )
              • Unit - Remove (Picked unit) from the game
            • Else - Actions
              • Set Offset[TempInt] = (TempPoint offset by 40.00 towards (Angle from TempPoint to TargetPoint[TempInt]) degrees)
              • Unit - Move Caster[TempInt] instantly to Offset[TempInt]
              • Unit - Move Dummy[TempInt] instantly to Offset[TempInt]
              • Set TempGroup = (Units within 200.00 of Offset[TempInt] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of
              • Custom script: call RemoveLocation( udg_TempPoint )
              • Unit Group - Pick every unit in TempGroup and do (Actions)
                • Loop - Actions
                  • Unit - Cause Caster[TempInt] to damage (Picked unit), dealing (55.00 + (45.00 x (Real((Level of Vampiric Wave for Caster[TempInt]))))) damage of attack type Spells and damage type Magic
                  • Unit Group - Add (Picked unit) to DamagedGroup[TempInt]
                  • Unit - Create 1 Vampiric Wave Dummy for (Owner of Caster[TempInt]) at TempPoint facing Default building facing degrees
                  • Unit - Set level of Vampiric Wave (Slow) for (Last created unit) to (Level of Vampiric Wave for Caster[TempInt])
                  • Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • Custom script: call RemoveLocation( udg_TempPoint )
          • Custom script: call DestroyGroup( udg_TempGroup )
          • Special Effect - Create a special effect at Offset[TempInt] using Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
          • Special Effect - Destroy (Last created special effect)
          • Special Effect - Create a special effect at Offset[TempInt] using Abilities\Spells\Undead\CarrionSwarm\CarrionSwarmDamage.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Turn collision for Caster[TempInt] Off
          • Custom script: call RemoveLocation( udg_Offset[udg_TempInt])
 

Ayanami

칼리
Reaction score
288
Sorry about the map. Didn't realize that I didn't upload it. It should deal the amount of damage stated in your description.

Edit
Ensure that your arrays for the variables have size of 100.
 

Archideas

Active Member
Reaction score
32
All of them? Oh and also, something is weird with the ability. Once I've used it once, I can walk through anything. Collision stays off, apparently.
 

Ayanami

칼리
Reaction score
288
All of them? Oh and also, something is weird with the ability. Once I've used it once, I can walk through anything. Collision stays off, apparently.

Only the variables with arrays. I think your problem about the collision lies in the array as well. Just change your variable with array to size 100.
 

Summoned

New Member
Reaction score
51
Trigger:
  • Custom script: call DestroyGroup( udg_TempGroup )
    • Special Effect - Create a special effect at Offset[TempInt] using Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
    • Special Effect - Destroy (Last created special effect)
    • Special Effect - Create a special effect at Offset[TempInt] using Abilities\Spells\Undead\CarrionSwarm\CarrionSwarmDamage.mdl
    • Special Effect - Destroy (Last created special effect)
    • Unit - Turn collision for Caster[TempInt] Off
    • Custom script: call RemoveLocation( udg_Offset[udg_TempInt])

^ This portion should be under the Else section, like in the original posted trigger.

As for the damage being dealt, you need to add a condition in the following section as (Matching unit) is in DamagedGroup[TempInt] Equal to False (I suspect this got cut off from Glenphir's original trigger because it was too long). The reason it becomes an insta-gib is because if you don't check if the unit is in that group, your character will damage it once every 0.03 second, which really really hurts. You really don't need to check if it's Magic Immune, because spell damage and the slow effect won't affect them anyway.
Trigger:
  • Set TempGroup = (Units within 200.00 of Offset[TempInt] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top