Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
You are using an out of date browser. It may not display this or other websites correctly. You should upgrade or use an alternative browser.
Triggers
The Shockwave v0.01.w3x
Variables
Initialization
Initialization
Spell
Read ME!
Shockwave Cast
Shockwave Slide
Enter map-specific custom script code below. This text will be included in the map script after variables are declared and before any trigger code.
Name
Type
is_array
initial_value
Caster
unit
No
Enemies
group
No
Hashtable
hashtable
No
Integer
integer
Yes
Points
location
Yes
Real
real
Yes
Shockwaves
group
No
Target
unit
No
Initialization
Events
Map initialization
Conditions
Actions
Visibility - Disable fog of war
Visibility - Disable black mask
Hashtable - Create a hashtable
Set Variable Set Hashtable = (Last created hashtable)
Game - Display to (All players) for 0.00 seconds the text: Don't worry about health, it will restore it self.
Hello, I'm G00dG4m3, but you I gues already know that.
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 Variable Set Caster = (Triggering unit)
-------- Finds the locations of Caster, target point and Wave spawn point --------
Set Variable Set Points[1] = (Position of Caster)
Set Variable Set Points[2] = (Target point of ability being cast)
Set Variable 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 Variable 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 Variable Set Real[2] = (2.00 + (Real((Level of Shockwave for Caster))))
-------- Counts the damage dealt by wave --------
-------- NOTE 3: Calculate your damage here --------
Set Variable 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 Of Caster 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 Variable Set Caster = (Load 0 of (Key (Picked unit).) in Hashtable.)
-------- Loads the Distance-to-Travel and reduces it by 'speed' --------
Set Variable 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 Variable 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 Variable Set Real[2] = (Load 2 of (Key (Picked unit).) from Hashtable.)
Set Variable Set Real[3] = (Real[1] / Real[2])
-------- Loads the total Duration of 'stun' --------
Set Variable Set Real[4] = (Load 3 of (Key (Picked unit).) from Hashtable.)
-------- Counts how long will 'stun' last on enemies enumerated during this loop --------
Set Variable Set Real[4] = (Real[3] x Real[4])
-------- Loads the damage-to-deal --------
Set Variable 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 Variable Set Points[1] = (Position of (Picked unit))
Set Variable 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 Variable Set Enemies = (Units within 200.00 of Points[2] matching (((((Matching unit) is A structure) Not equal to True) and (((Matching unit) has buff Aerial Shackles) Not equal to True)) and ((((Matching unit) is Mechanical) Not equal to True) and ((((Matching unit) is Magic Immune) Not equal to True) and ((((Matching unit) is A ground unit) Equal to True) and ((((Matching unit) is dead) Not equal to True) and (((Matching unit) belongs to an enemy of (Owner of Caster).) Equal to True)))))).)
-------- 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)
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.