• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

The Shockwave v0.01

I've been reading DotA forums once and I seed a suggestion to make Akasha's, the Queen of Pain ultimate not just another stupid Shockwave, but something greater. So here you go, I decided to make something Interesting of Shockwave.

This spell isn't based of Shochwave, as I want the spell to 'stun' enemies it hit, so I made this Shockwave's sliding triggered.
Note that once hit by this Shockwave, enemies are immune to it until the duration of the 'Stun' is over.

Remember, the Original Shockwave of Warcraft III is not an Eye-Candy spell, so I won't make it to one.
I will update this spell to have all the models and Names of the DotA, exept for the Akasha's hero name, there will be written 'Made by G00dG4m3' to remind you who made this spell ^^

This is not an simple Shockwave we are used to see.
This Shockwave stuns things, but that stun lasts less time the longer the wave moves.
Well, actually it doesn't even stun, as the dummy skill is based of Aerial Shackles, a channeled spell.
That is why in trigger comments I will say 'stun' and 'stunning', because that 'stun' isn't really a stun xD

Have fun with this spell.
Don't forget to give me credits if you use this on your map.


  • Shockwave Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shockwave
    • Actions
      • -------- Stores Caster into a variable --------
      • Set Caster = (Triggering unit)
      • -------- Finds the locations of Caster, target point and Wave spawn point --------
      • Set Points[1] = (Position of Caster)
      • Set Points[2] = (Target point of ability being cast)
      • Set Points[3] = (Points[1] offset by 70.00 towards (Angle from Points[1] to Points[2]) degrees)
      • -------- Distance which the wave will travel --------
      • -------- NOTE 1: Change your MAX wave distance here --------
      • Set Real[1] = 950.00
      • -------- Here put your 'stun' duration --------
      • -------- NOTE 3: If you put a higher amount, then the 'stun' will last longer --------
      • Set Real[2] = (2.00 + (Real((Level of Shockwave for Caster))))
      • -------- Counts the damage dealt by wave --------
      • -------- NOTE 3: Calculate your damage here --------
      • Set Real[3] = (20.00 + (70.00 x (Real((Level of Shockwave for Caster)))))
      • -------- Creates a wave unit --------
      • -------- NOTE 4: Change your wave model in the Object editor, unit The Shockwave --------
      • Unit - Create 1 The Shockwave for (Owner of Caster) at Points[3] facing (Angle from Points[1] to Points[2]) degrees
      • -------- Stores the information required into hashtable --------
      • -------- NOTE 5: All infromation is attached to the wave unit --------
      • Hashtable - Save Handle OfCaster as 0 of (Key (Last created unit)) in Hashtable
      • Hashtable - Save Real[1] as 1 of (Key (Last created unit)) in Hashtable
      • Hashtable - Save Real[1] as 2 of (Key (Last created unit)) in Hashtable
      • Hashtable - Save Real[2] as 3 of (Key (Last created unit)) in Hashtable
      • Hashtable - Save Real[3] as 4 of (Key (Last created unit)) in Hashtable
      • -------- Checks if there is any instance of spell already running --------
      • -------- If not, then turns the sliding trigger on --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Shockwaves is empty) Equal to True
        • Then - Actions
          • Trigger - Turn on Shockwave Slide <gen>
        • Else - Actions
      • -------- Adds wave unit to the Waves' group --------
      • Unit Group - Add (Last created unit) to Shockwaves
      • -------- Clears the Leaks --------
      • Custom script: call RemoveLocation(udg_Points[1])
      • Custom script: call RemoveLocation(udg_Points[2])
      • Custom script: call RemoveLocation(udg_Points[3])
  • Shockwave Slide
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Shockwaves and do (Actions)
        • Loop - Actions
          • -------- Loads the Caster --------
          • Set Caster = (Load 0 of (Key (Picked unit)) in Hashtable)
          • -------- Loads the Distance-to-Travel and reduces it by 'speed' --------
          • Set Real[1] = (Load 1 of (Key (Picked unit)) from Hashtable)
          • -------- NOTE 1: The real number substracted must be equal to the one below (I'll remind it to you) --------
          • Set Real[1] = (Real[1] - 27.00)
          • -------- Loads the total Distance-to-Travel and counts the % of the way left --------
          • -------- This will be used to shorten the duration of 'stun' --------
          • -------- NOTE 3: This doesn't allow you to have the max duration of 'stun', but the difference is not too noticable --------
          • Set Real[2] = (Load 2 of (Key (Picked unit)) from Hashtable)
          • Set Real[3] = (Real[1] / Real[2])
          • -------- Loads the total Duration of 'stun' --------
          • Set Real[4] = (Load 3 of (Key (Picked unit)) from Hashtable)
          • -------- Counts how long will 'stun' last on enemies enumerated during this loop --------
          • Set Real[4] = (Real[3] x Real[4])
          • -------- Loads the damage-to-deal --------
          • Set Real[5] = (Load 4 of (Key (Picked unit)) from Hashtable)
          • -------- Finds the location of wave unit and calculates the point to which will it will move --------
          • Set Points[1] = (Position of (Picked unit))
          • Set Points[2] = (Points[1] offset by 27.00 towards (Facing of (Picked unit)) degrees)
          • -------- Enumerates enemies for damaging and 'stunning' --------
          • -------- NOTE 4: Enumerates visible enemy ground units which are still alive and are not mechanical nor magic immune --------
          • Set Enemies = (Units within 200.00 of Points[2] matching (((((Matching unit) is A structure) Not equal to True) and (((Matching unit) has buff Stun ) Not equal to True)) and ((((Matching unit) is Mechanical) Not equal to True) and ((((Matching unit) is Magic Immune) Not eq
          • -------- Moves the wave unit to the further it's location --------
          • Unit - Move (Picked unit) instantly to Points[2]
          • -------- Does the damaging and 'stunning' --------
          • Unit Group - Pick every unit in Enemies and do (Actions)
            • Loop - Actions
              • Unit - Create 1 Dummy Caster for (Owner of Caster) at Points[2] facing Default building facing degrees
              • Unit - Add Dummy Stun to (Last created unit)
              • Unit - Set level of Dummy Stun for (Last created unit) to (Level of Shockwave for Caster)
              • Unit - Order (Last created unit) to Human Dragonhawk Rider - Aerial Shackles (Picked unit)
              • Unit - Add a Real[4] second Generic expiration timer to (Last created unit)
              • Unit - Cause Caster to damage (Picked unit), dealing Real[5] damage of attack type Spells and damage type Normal
          • -------- Checks if the distance-to-travel left isn't over --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Real[1] Less than or equal to 0.00
            • Then - Actions
              • -------- If it is, then... --------
              • -------- Rids the hashtable of all information attached to the Wave unit --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in Hashtable
              • -------- Removes wave unit from Waves' group --------
              • Unit Group - Remove (Picked unit) from Shockwaves
              • -------- Removes Wave unit from game --------
              • Unit - Remove (Picked unit) from the game
            • Else - Actions
              • -------- If it isn't, then... --------
              • -------- Updates the Distance-to-Travel left --------
              • Hashtable - Save Real[1] as 1 of (Key (Picked unit)) in Hashtable
          • -------- Clears the leaks --------
          • Custom script: call DestroyGroup(udg_Enemies)
          • Custom script: call RemoveLocation(udg_Points[1])
          • Custom script: call RemoveLocation(udg_Points[2])
      • -------- Checks if there is any Instance of spell still runing --------
      • -------- If there isn't any, then turns this trigger off --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Shockwaves is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions


v0.01 - First upload


Keywords:
Shock, wave, shockwave, dota, akasha, simple, eye, candy, boom, stun, reducing, duration
Contents

The Shockwave v0.01 (Map)

Reviews
10:50, 4th Sep 2010 TriggerHappy: Coding looked fine and I suppose this could be useful if the user wanted to know how to make a shockwave like spell, but the spell itself is useless since it can be recreated with the object editor. Anyways...

Moderator

M

Moderator

10:50, 4th Sep 2010
TriggerHappy:

Coding looked fine and I suppose this could be useful if the user wanted to know how to make a shockwave like spell, but the spell itself is useless since it can be recreated with the object editor. Anyways, approved.
 
Level 10
Joined
Aug 21, 2010
Messages
316
Note:
When you first throw comes to memory leaks.It should solve the problem, there are many functions to solve at the first throw.

Here are a function:

function NoLagOnFirstCast takes integer "someInteger" returns nothing
local player "someplayer"//should be Player(15)=NeutralPassivePlayer
local unit "someunit"
set "someunit"=CreateUnit("someplayer",'addyourdummyhere',addcoordinateshere.,addcoordinateshere.,270)
call UnitAddAbility("someunit","someInteger")
call UnitRemoveAbility("someunit","someInteger")
call RemoveUnit("someunit")
endfunction
 
Level 9
Joined
Oct 31, 2009
Messages
121
Here are a function:

function NoLagOnFirstCast takes integer "someInteger" returns nothing
local player "someplayer"//should be Player(15)=NeutralPassivePlayer
local unit "someunit"
set "someunit"=CreateUnit("someplayer",'addyourdummyhere',addcoordinateshere.,addcoordinateshere.,270)
call UnitAddAbility("someunit","someInteger")
call UnitRemoveAbility("someunit","someInteger")
call RemoveUnit("someunit")
endfunction

Well, it could also be done in GUI in, at the map init.
Also, please don't double post? :) merge posts and delete this one
 
Level 2
Joined
Aug 15, 2009
Messages
13
Lol, it's not MUI(True, it's not)
I will rate it if you make it GUI(read about hashtables my friend)
 
Level 4
Joined
Jul 24, 2010
Messages
85
I have seen other trigger which is AS SAME AS this trigger before on other website before you have post here last 2+ month ago. You only add stun to that trigger and the other code is the same. (Sorry if you didn't really copy that code but there are so many people doing this skill)

No rate...
 
Top