This spell is very customizable and with some modifications, you can do many things.
The spell is totally MUI, leakless (i think) and without bugs (i don't guarantee it 100% free bug, since minors bugs are also possible on every spell).
Spell Description :
The Tauren hit the ground with a powerful attack, creating a shock wave. The shock wave propagates up to the place aimed before creating an explosion which stuns the close enemies and deals them damages, while sending rocks everything around one. These rocks deal damage and stun the enemies close to the place where they land.
Level 1 - Explosion deals 100 damages and stun for 2 seconds. The rocks deal 25 damages and stun for 1 seconds.
Level 2 - Explosion deals 150 damages and stun for 2 seconds. The rocks deal 50 damages and stun for 1 seconds.
Level 3 - Explosion deals 200 damages and stun for 2 seconds. The rocks deal 75 damages and stun for 1 seconds.
Level 4 - Explosion deals 250 damages and stun for 2 seconds. The rocks deal 100 damages and stun for 1 seconds.
The Triggers :
SE Init
Events
Map initialization
Conditions
Actions
-------- Setting the Unit-Type of the Sand Wave's Dummy. --------
-------- Définis le Type-Unité du Dummy de la Vague de Sable. --------
Set SE_SandUnitType = SE SandWave Dummy
-------- Setting the Speed of the Sand Wave for each Level. --------
-------- Définis la Vitesse de la Vague de Sable pour chaque Niveau. --------
Set SE_SandSpeed[1] = 25.00
Set SE_SandSpeed[2] = 25.00
Set SE_SandSpeed[3] = 25.00
Set SE_SandSpeed[4] = 25.00
-------- Set the Interval of the Creation of the Sand Effects for each Level. --------
-------- Définis l'Intervalle de Création des Effets de Sable pour chaque Niveau. --------
Set SE_SandInterval[1] = 2
Set SE_SandInterval[2] = 2
Set SE_SandInterval[3] = 2
Set SE_SandInterval[4] = 2
-------- Setting the Model of the Sand Wave special effects. --------
-------- Définis le Modèle des effets spéciaux de la Vague de Sable. --------
Set SE_SandModel = Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
-------- Setting the Damages dealt by the Explosion for each Level. --------
-------- Définis les Dommages infligés par l'Explosion pour chaque Niveau. --------
Set SE_ExplosionDamages[1] = 100.00
Set SE_ExplosionDamages[2] = 150.00
Set SE_ExplosionDamages[3] = 200.00
Set SE_ExplosionDamages[4] = 250.00
-------- Setting the AOE of the Damages dealt by the Explosion for each Level. --------
-------- Définis l'AOE des Dommages infligés par l'Explosion pour chaque Niveau. --------
Set SE_ExplosionDamagesAoe[1] = 300.00
Set SE_ExplosionDamagesAoe[2] = 300.00
Set SE_ExplosionDamagesAoe[3] = 300.00
Set SE_ExplosionDamagesAoe[4] = 300.00
-------- Setting the Model of the Explosion special effects. --------
-------- Définis le Modèle des effets spéciaux de l'Explosion. --------
Set SE_ExplosionModel = Abilities\Spells\Other\Volcano\VolcanoDeath.mdl
-------- Setting the Unit-Type of the Rocks Dummys. --------
-------- Définis le Type-Unité des Rochers Dummys. --------
Set SE_RocksUnitType = SE Rock Dummy
-------- Setting the Number of Flying Rocks for each Level. --------
-------- Définis le Nombre de Rochers Volants pour chaque Niveau. --------
Set SE_RocksNumber[1] = 9
Set SE_RocksNumber[2] = 12
Set SE_RocksNumber[3] = 15
Set SE_RocksNumber[4] = 18
-------- Setting the Minimum and Maximum Scale of the Rocks for each Level. (maybe more natural looking). --------
-------- Définis la Taille Minimum et la Taille Maximum des Rochers pour chaque Niveau. (éventuellement, plus naturel) --------
Set SE_RockScaleMin[1] = 90.00
Set SE_RockScaleMin[2] = 90.00
Set SE_RockScaleMin[3] = 90.00
Set SE_RockScaleMin[4] = 90.00
Set SE_RockScaleMax[1] = 110.00
Set SE_RockScaleMax[2] = 110.00
Set SE_RockScaleMax[3] = 110.00
Set SE_RockScaleMax[4] = 110.00
-------- Setting the Total Angle covered by the Rocks. --------
-------- Définis l'Angle Total couvert par les Rocks. --------
-------- Set it to 360 to have a Circle. If you set it to 180, the rocks will be sent only facing the wave. --------
-------- Setting the Angle between each Rocks, depending of the 2 precedents variables. --------
-------- Définis l'Angle entre chaque Rocher, dépendant des 2 variables précédentes. --------
For each (Integer A) from 1 to 4, do (Actions)
Loop - Actions
Set SE_RocksIntervalAngle[(Integer A)] = (SE_RocksAngle[(Integer A)] / (Real(SE_RocksNumber[(Integer A)])))
-------- Setting the Maximum Random Angle's Offset for the Rocks for each Level. --------
-------- Définis le Décalement Maximum Aléatoire de l'Angle d'un Rocher pour chaque Niveau. --------
Set SE_RocksAngleRandom[1] = 4.50
Set SE_RocksAngleRandom[2] = 4.50
Set SE_RocksAngleRandom[3] = 4.50
Set SE_RocksAngleRandom[4] = 4.50
-------- Setting the Speed of the Rocks for each Level. --------
-------- Définis la Vitesse des Rochers pour chaque Niveau. --------
Set SE_RockSpeed[1] = 5.00
Set SE_RockSpeed[2] = 5.00
Set SE_RockSpeed[3] = 5.00
Set SE_RockSpeed[4] = 5.00
-------- Setting the Base Height Speed of the Rocks for each Level. --------
-------- Définis la Vitesse de Base en Hauteur des Rochers pour chaque Niveau. --------
Set SE_RockHeightSpeed[1] = 18.00
Set SE_RockHeightSpeed[2] = 18.00
Set SE_RockHeightSpeed[3] = 18.00
Set SE_RockHeightSpeed[4] = 18.00
-------- Setting the Height Speed Decrement of the Rocks for each Level. --------
-------- Définis la Decrémentation de la Vitesse en Hauteur des Rochers pour chaque Niveau. --------
Set SE_RockHeightDecrement[1] = 0.45
Set SE_RockHeightDecrement[2] = 0.45
Set SE_RockHeightDecrement[3] = 0.45
Set SE_RockHeightDecrement[4] = 0.45
-------- Setting the Damages dealt by the Rocks for each Level. --------
-------- Définis les Dommages infligés par les Rochers pour chaque Niveau. --------
Set SE_RocksDamages[1] = 25.00
Set SE_RocksDamages[2] = 50.00
Set SE_RocksDamages[3] = 75.00
Set SE_RocksDamages[4] = 100.00
-------- Setting the AOE of the Damages dealt by the Rocks for each Level. --------
-------- Définis l'AOE des Dommages infligés par les Rochers pour chaque Niveau. --------
Set SE_RocksDamagesAoe[1] = 75.00
Set SE_RocksDamagesAoe[2] = 75.00
Set SE_RocksDamagesAoe[3] = 75.00
Set SE_RocksDamagesAoe[4] = 75.00
-------- Both of these set the Damages Types of the damages inflicted by the Spell. --------
-------- Les deux suivant définissent les Types de Dommages des dégâts infligés par le Sort. --------
Set SE_AttackType = Spells
Set SE_DamageType = Magic
-------- Creating Hashtable and storing it in a Variable. --------
-------- Creation de la Hashtable et stockage dans une Variable. --------
Hashtable - Create a hashtable
Set SE_Hash = (Last created hashtable)
SE Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Shock Explosion
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(SE Loop <gen> is on) Equal to False
Then - Actions
Trigger - Turn on SE Loop <gen>
Else - Actions
Set SE_Point = (Position of (Triggering unit))
Set SE_Point2 = (Target point of ability being cast)
Unit - Create 1 SE_SandUnitType for (Triggering player) at SE_Point facing SE_Point2
Set SE_Unit = (Last created unit)
Custom script: set udg_SE_Integer = GetHandleId(udg_SE_Unit)
Unit Group - Add SE_Unit to SE_WaveGroup
Hashtable - Save (Level of Shock Explosion for (Triggering unit)) as 0 of SE_Integer in SE_Hash
Hashtable - Save Handle Of(Triggering unit) as 1 of SE_Integer in SE_Hash
Hashtable - Save (Angle from SE_Point to SE_Point2) as 2 of SE_Integer in SE_Hash
Hashtable - Save (Distance between SE_Point and SE_Point2) as 3 of SE_Integer in SE_Hash
Hashtable - Save 1 as 4 of SE_Integer in SE_Hash
Custom script: call RemoveLocation(udg_SE_Point)
Custom script: call RemoveLocation(udg_SE_Point2)
SE Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in SE_WaveGroup and do (Actions)
Loop - Actions
Set SE_Unit = (Picked unit)
Custom script: set udg_SE_Integer = GetHandleId(udg_SE_Unit)
Set SE_Integer2 = (Load 0 of SE_Integer from SE_Hash)
Set SE_Integer3 = (Load 4 of SE_Integer from SE_Hash)
Set SE_Real = ((Load 3 of SE_Integer from SE_Hash) - SE_SandSpeed[SE_Integer2])
Set SE_Real2 = (Load 2 of SE_Integer from SE_Hash)
Set SE_Point = (Position of SE_Unit)
Set SE_Point2 = (SE_Point offset by SE_SandSpeed[SE_Integer2] towards SE_Real2 degrees)
Unit - Move SE_Unit instantly to SE_Point2
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SE_Integer3 Equal to SE_SandInterval[SE_Integer2]
Then - Actions
Special Effect - Create a special effect at SE_Point2 using SE_SandModel
Special Effect - Destroy (Last created special effect)
Hashtable - Save 1 as 4 of SE_Integer in SE_Hash
Else - Actions
Hashtable - Save (SE_Integer3 + 1) as 4 of SE_Integer in SE_Hash
Hashtable - Save SE_Real as 3 of SE_Integer in SE_Hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SE_Real Less than or equal to SE_SandSpeed[SE_Integer2]
Then - Actions
Unit - Set level of Stun Explosion for SE_Unit to SE_Integer2
Unit - Order SE_Unit to Orc Tauren Chieftain - War Stomp
Unit - Add a 1.00 second Generic expiration timer to SE_Unit
Unit Group - Remove SE_Unit from SE_WaveGroup
Special Effect - Create a special effect at SE_Point2 using SE_ExplosionModel
Special Effect - Destroy (Last created special effect)
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within SE_ExplosionDamagesAoe[SE_Integer2] of SE_Point2 matching (((Matching unit) belongs to an enemy of (Owner of SE_Unit)) Equal to True)) and do (Actions)
Loop - Actions
Unit - Cause (Load 1 of SE_Integer in SE_Hash) to damage (Picked unit), dealing SE_ExplosionDamages[SE_Integer2] damage of attack type SE_AttackType and damage type SE_DamageType
For each (Integer SE_Integer3) from 0 to (SE_RocksNumber[SE_Integer2] - 1), do (Actions)
Loop - Actions
Set SE_Real = (((SE_RocksIntervalAngle[SE_Integer2] x (Real(SE_Integer3))) - (SE_RocksAngle[SE_Integer2] / 2.00)) + (SE_Real2 + (Random real number between (0.00 - SE_RocksAngleRandom[SE_Integer2]) and SE_RocksAngleRandom[SE_Integer2])))
Unit - Create 1 SE_RocksUnitType for (Owner of SE_Unit) at SE_Point2 facing SE_Real degrees
Set SE_Unit2 = (Last created unit)
Custom script: set udg_SE_Integer4 = GetHandleId(udg_SE_Unit2)
Set SE_Real3 = (Random real number between SE_RockScaleMin[SE_Integer2] and SE_RockScaleMax[SE_Integer2])
Unit Group - Add SE_Unit2 to SE_RockGroup
Animation - Change SE_Unit2 flying height to SE_RockHeightSpeed[SE_Integer2] at 0.00
Animation - Change SE_Unit2's size to (SE_Real3%, SE_Real3%, SE_Real3%) of its original size
Hashtable - Save SE_Integer2 as 0 of SE_Integer4 in SE_Hash
Hashtable - Save Handle Of(Load 1 of SE_Integer in SE_Hash) as 1 of SE_Integer4 in SE_Hash
Hashtable - Save SE_Real as 2 of SE_Integer4 in SE_Hash
Hashtable - Save SE_RockHeightSpeed[SE_Integer2] as 3 of SE_Integer4 in SE_Hash
Unit Group - Pick every unit in SE_RockGroup and do (Actions)
Loop - Actions
Set SE_Unit = (Picked unit)
Custom script: set udg_SE_Integer = GetHandleId(udg_SE_Unit)
Set SE_Integer2 = (Load 0 of SE_Integer from SE_Hash)
Set SE_Real = ((Load 3 of SE_Integer from SE_Hash) - SE_RockHeightDecrement[SE_Integer2])
Set SE_Real2 = (Load 2 of SE_Integer from SE_Hash)
Set SE_Point = (Position of SE_Unit)
Set SE_Point2 = (SE_Point offset by SE_RockSpeed[SE_Integer2] towards SE_Real2 degrees)
Unit - Move SE_Unit instantly to SE_Point2
Animation - Change SE_Unit flying height to ((Current flying height of SE_Unit) + SE_Real) at 0.00
Hashtable - Save SE_Real as 3 of SE_Integer in SE_Hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current flying height of SE_Unit) Less than SE_RockHeightSpeed[SE_Integer2]
Then - Actions
Unit - Set level of Stun Rocks for SE_Unit to SE_Integer2
Unit - Order SE_Unit to Orc Tauren Chieftain - War Stomp
Unit - Add a 0.01 second Generic expiration timer to SE_Unit
Unit Group - Remove SE_Unit from SE_RockGroup
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within SE_RocksDamagesAoe[SE_Integer2] of SE_Point2 matching (((Matching unit) belongs to an enemy of (Owner of SE_Unit)) Equal to True)) and do (Actions)
Loop - Actions
Unit - Cause (Load 1 of SE_Integer in SE_Hash) to damage (Picked unit), dealing SE_RocksDamages[SE_Integer2] damage of attack type SE_AttackType and damage type SE_DamageType
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(SE_WaveGroup is empty) Equal to True
(SE_RockGroup is empty) Equal to True
Then - Actions
Trigger - Turn off SE Loop <gen>
Else - Actions
Else - Actions
Custom script: call RemoveLocation(udg_SE_Point)
Custom script: call RemoveLocation(udg_SE_Point2)
Some Credits :
Ty to Psyrim and his Impossibles Bosses, which inspired me for this spell (yes, yes, boss 3 ^^)
Ty to Maddeem for detect 2forgotten leaks, for gave me the english triggers and for had the idea of add a random scale configurable for the rocks.
Changelog :
1.00 : Initial release. 1.01 : Removed 2forgotten groups leaks. Added 2variables to configure a random scale of the rocks. 1.02 : Added a Variable for the Interval of Creation of the Sand Wave effects. Upgraded test map.
I can't cauz' i haven't any editor in english on this comp. And you can also open the map in WE to have the triggers in english (or in your language ^^)
-------- Setting the Angle between each Rocks, depending of the 2 precedents variables. --------
-------- Définis l'Angle entre chaque Rocher, dépendant des 2 variables précédentes. --------
For each (Integer A) from 1 to 4, do (Actions)
Loop - Actions
Set SE_RocksIntervalAngle[(Integer A)] = (SE_RocksAngle[(Integer A)] / (Real(SE_RocksNumber[(Integer A)])))
-------- Setting the Maximum Random Angle's Offset for the Rocks for each Level. --------
-------- Définis le Décalement Maximum Aléatoire de l'Angle d'un Rocher pour chaque Niveau. --------
Set SE_RocksAngleRandom[1] = 4.50
Set SE_RocksAngleRandom[2] = 4.50
Set SE_RocksAngleRandom[3] = 4.50
Set SE_RocksAngleRandom[4] = 4.50
-------- Setting the Speed of the Rocks for each Level. --------
-------- Définis la Vitesse des Rochers pour chaque Niveau. --------
Set SE_RockSpeed[1] = 5.00
Set SE_RockSpeed[2] = 5.00
Set SE_RockSpeed[3] = 5.00
Set SE_RockSpeed[4] = 5.00
-------- Setting the Base Height Speed of the Rocks for each Level. --------
-------- Définis la Vitesse de Base en Hauteur des Rochers pour chaque Niveau. --------
Set SE_RockHeightSpeed[1] = 18.00
Set SE_RockHeightSpeed[2] = 18.00
Set SE_RockHeightSpeed[3] = 18.00
Set SE_RockHeightSpeed[4] = 18.00
-------- Setting the Height Speed Decrement of the Rocks for each Level. --------
-------- Définis la Decrémentation de la Vitesse en Hauteur des Rochers pour chaque Niveau. --------
Set SE_RockHeightDecrement[1] = 0.45
Set SE_RockHeightDecrement[2] = 0.45
Set SE_RockHeightDecrement[3] = 0.45
Set SE_RockHeightDecrement[4] = 0.45
-------- Setting the Damages dealt by the Rocks for each Level. --------
-------- Définis les Dommages infligés par les Rochers pour chaque Niveau. --------
Set SE_RocksDamages[1] = 25.00
Set SE_RocksDamages[2] = 50.00
Set SE_RocksDamages[3] = 75.00
Set SE_RocksDamages[4] = 100.00
-------- Setting the AOE of the Damages dealt by the Rocks for each Level. --------
-------- Définis l'AOE des Dommages infligés par les Rochers pour chaque Niveau. --------
Set SE_RocksDamagesAoe[1] = 75.00
Set SE_RocksDamagesAoe[2] = 75.00
Set SE_RocksDamagesAoe[3] = 75.00
Set SE_RocksDamagesAoe[4] = 75.00
-------- Both of these set the Damages Types of the damages inflicted by the Spell. --------
-------- Les deux suivant définissent les Types de Dommages des dégâts infligés par le Sort. --------
Set SE_AttackType = Spells
Set SE_DamageType = Magic
-------- Creating Hashtable and storing it in a Variable. --------
-------- Creation de la Hashtable et stockage dans une Variable. --------
Hashtable - Create a hashtable
Set SE_Hash = (Last created hashtable)
SE Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Shock Explosion
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(SE Loop <gen> is on) Equal to False
Then - Actions
Trigger - Turn on SE Loop <gen>
Else - Actions
Set SE_Point = (Position of (Triggering unit))
Set SE_Point2 = (Target point of ability being cast)
Unit - Create 1 SE_SandUnitType for (Triggering player) at SE_Point facing SE_Point2
Set SE_Unit = (Last created unit)
Custom script: set udg_SE_Integer = GetHandleId(udg_SE_Unit)
Unit Group - Add SE_Unit to SE_WaveGroup
Hashtable - Save (Level of Shock Explosion for (Triggering unit)) as 0 of SE_Integer in SE_Hash
Hashtable - Save Handle Of(Triggering unit) as 1 of SE_Integer in SE_Hash
Hashtable - Save (Angle from SE_Point to SE_Point2) as 2 of SE_Integer in SE_Hash
Hashtable - Save (Distance between SE_Point and SE_Point2) as 3 of SE_Integer in SE_Hash
Custom script: call RemoveLocation(udg_SE_Point)
Custom script: call RemoveLocation(udg_SE_Point2)
SE Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in SE_WaveGroup and do (Actions)
Loop - Actions
Set SE_Unit = (Picked unit)
Custom script: set udg_SE_Integer = GetHandleId(udg_SE_Unit)
Set SE_Integer2 = (Load 0 of SE_Integer from SE_Hash)
Set SE_Real = ((Load 3 of SE_Integer from SE_Hash) - SE_SandSpeed[SE_Integer2])
Set SE_Real2 = (Load 2 of SE_Integer from SE_Hash)
Set SE_Point = (Position of SE_Unit)
Set SE_Point2 = (SE_Point offset by SE_SandSpeed[SE_Integer2] towards SE_Real2 degrees)
Unit - Move SE_Unit instantly to SE_Point2
Special Effect - Create a special effect at SE_Point2 using SE_SandModel
Special Effect - Destroy (Last created special effect)
Hashtable - Save SE_Real as 3 of SE_Integer in SE_Hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SE_Real Less than or equal to SE_SandSpeed[SE_Integer2]
Then - Actions
Unit - Set level of Stun Explosion for SE_Unit to SE_Integer2
Unit - Order SE_Unit to Orc Tauren Chieftain - War Stomp
Unit - Add a 1.00 second Generic expiration timer to SE_Unit
Unit Group - Remove SE_Unit from SE_WaveGroup
Special Effect - Create a special effect at SE_Point2 using SE_ExplosionModel
Special Effect - Destroy (Last created special effect)
Unit Group - Pick every unit in (Units within SE_ExplosionDamagesAoe[SE_Integer2] of SE_Point2 matching (((Matching unit) belongs to an enemy of (Owner of SE_Unit)) Equal to True)) and do (Actions)
Loop - Actions
Unit - Cause (Load 1 of SE_Integer in SE_Hash) to damage (Picked unit), dealing SE_ExplosionDamages[SE_Integer2] damage of attack type SE_AttackType and damage type SE_DamageType
For each (Integer SE_Integer3) from 0 to (SE_RocksNumber[SE_Integer2] - 1), do (Actions)
Loop - Actions
Set SE_Real = (((SE_RocksIntervalAngle[SE_Integer2] x (Real(SE_Integer3))) - (SE_RocksAngle[SE_Integer2] / 2.00)) + (SE_Real2 + (Random real number between (0.00 - SE_RocksAngleRandom[SE_Integer2]) and SE_RocksAngleRandom[SE_Integer2])))
Unit - Create 1 SE_RocksUnitType for (Owner of SE_Unit) at SE_Point2 facing SE_Real degrees
Set SE_Unit2 = (Last created unit)
Custom script: set udg_SE_Integer4 = GetHandleId(udg_SE_Unit2)
Unit Group - Add SE_Unit2 to SE_RockGroup
Animation - Change SE_Unit2 flying height to SE_RockHeightSpeed[SE_Integer2] at 0.00
Hashtable - Save SE_Integer2 as 0 of SE_Integer4 in SE_Hash
Hashtable - Save Handle Of(Load 1 of SE_Integer in SE_Hash) as 1 of SE_Integer4 in SE_Hash
Hashtable - Save SE_Real as 2 of SE_Integer4 in SE_Hash
Hashtable - Save SE_RockHeightSpeed[SE_Integer2] as 3 of SE_Integer4 in SE_Hash
Unit Group - Pick every unit in SE_RockGroup and do (Actions)
Loop - Actions
Set SE_Unit = (Picked unit)
Custom script: set udg_SE_Integer = GetHandleId(udg_SE_Unit)
Set SE_Integer2 = (Load 0 of SE_Integer from SE_Hash)
Set SE_Real = ((Load 3 of SE_Integer from SE_Hash) - SE_RockHeightDecrement[SE_Integer2])
Set SE_Real2 = (Load 2 of SE_Integer from SE_Hash)
Set SE_Point = (Position of SE_Unit)
Set SE_Point2 = (SE_Point offset by SE_RockSpeed[SE_Integer2] towards SE_Real2 degrees)
Unit - Move SE_Unit instantly to SE_Point2
Animation - Change SE_Unit flying height to ((Current flying height of SE_Unit) + SE_Real) at 0.00
Hashtable - Save SE_Real as 3 of SE_Integer in SE_Hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current flying height of SE_Unit) Less than SE_RockHeightSpeed[SE_Integer2]
Then - Actions
Unit - Set level of Stun Rocks for SE_Unit to SE_Integer2
Unit - Order SE_Unit to Orc Tauren Chieftain - War Stomp
Unit - Add a 0.01 second Generic expiration timer to SE_Unit
Unit Group - Remove SE_Unit from SE_RockGroup
Unit Group - Pick every unit in (Units within SE_RocksDamagesAoe[SE_Integer2] of SE_Point2 matching (((Matching unit) belongs to an enemy of (Owner of SE_Unit)) Equal to True)) and do (Actions)
Loop - Actions
Unit - Cause (Load 1 of SE_Integer in SE_Hash) to damage (Picked unit), dealing SE_RocksDamages[SE_Integer2] damage of attack type SE_AttackType and damage type SE_DamageType
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(SE_WaveGroup is empty) Equal to True
(SE_RockGroup is empty) Equal to True
Then - Actions
Trigger - Turn off SE Loop <gen>
Else - Actions
Else - Actions
Custom script: call RemoveLocation(udg_SE_Point)
Custom script: call RemoveLocation(udg_SE_Point2)
The spell is nice but the rocks look too uniform to be natural, perhaps have their scale be random, and the location be a bit randomized as well.
You leak unit group here:
Unit Group - Pick every unit in (Units within SE_ExplosionDamagesAoe[SE_Integer2] of SE_Point2 matching (((Matching unit) belongs to an enemy of (Owner of SE_Unit)) Equal to True)) and do (Actions)
Loop - Actions
And
Unit Group - Pick every unit in (Units within SE_RocksDamagesAoe[SE_Integer2] of SE_Point2 matching (((Matching unit) belongs to an enemy of (Owner of SE_Unit)) Equal to True)) and do (Actions)
Loop - Actions
Unit - Cause (Load 1 of SE_Integer in SE_Hash) to damage (Picked unit), dealing SE_RocksDamages[SE_Integer2] damage of attack type SE_AttackType and damage type SE_DamageType
Can you make them to attack units / hero only ?
When i tried use this spell on buildings / towers, it is also damage them, even the rocks after explosion too.
y, but you'll need to modify the SE_Loop triggers, in the two little pick every units (those Within X Range of Point), change the matching to this : Matching unit belongs to an enemi to Owner of SE_Unit Equal to TRUE and Matching unit is a Building Equal to FALSE.
But, i thought it was more realist with building damages. If a big meteor fall on your hause, your hause will been entirely or not destroyed. Same princip for the catapults xD
y, but you'll need to modify the SE_Loop triggers, in the two little pick every units (those Within X Range of Point), change the matching to this : Matching unit belongs to an enemi to Owner of SE_Unit Equal to TRUE and Matching unit is a Building Equal to FALSE.
But, i thought it was more realist with building damages. If a big meteor fall on your hause, your hause will been entirely or not destroyed. Same princip for the catapults xD
Ah yes, i found them.
Well i agree in your opinion, but most in a AoS type map you really don't want your towers got rid by a One Huge spell like this.
Thanks for your great spell, i vote it 5/5.
Ah yes, i found them.
Well i agree in your opinion, but most in a AoS type map you really don't want your towers got rid by a One Huge spell like this.
Thanks for your great spell, i vote it 5/5.
You should filter the damage action from "SE Loop" trigger like this:
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within SE_ExplosionDamagesAoe[SE_Integer2] of SE_Point2 matching (((Matching unit) belongs to an enemy of (Owner of SE_Unit)) Equal to True)) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is A structure) Equal to False
Then - Actions
Unit - Cause (Load 1 of SE_Integer in SE_Hash) to damage (Picked unit), dealing SE_ExplosionDamages[SE_Integer2] damage of attack type SE_AttackType and damage type SE_DamageType
Else - Actions
If you want a more efficient group action, do it like this:
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within SE_ExplosionDamagesAoe[SE_Integer2] of SE_Point2) and do (Actions)
Loop - Actions
Set SE_TempUnit = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(SE_TempUnit is alive) Equal to True
(SE_TempUnit is A structure) Equal to False
(SE_TempUnit belongs to an enemy of (Owner of SE_Unit)) Equal to True
Then - Actions
Unit - Cause (Load 1 of SE_Integer in SE_Hash) to damage SE_TempUnit, dealing SE_ExplosionDamages[SE_Integer2] damage of attack type SE_AttackType and damage type SE_DamageType
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.