Thanks alot, does it work with 1.29.2?Might not be the best way to do it, but this should work. Made on version 1.31.1.
Ravage Config
Events
Map initialization
Conditions
Actions
-------- - --------
-------- Ravage ability based on Thunder Clap or any other instant cast ability for your hero --------
-------- - --------
Set Ravage_SpellId = Ravage
-------- - --------
-------- Ravage ability based on impale for your dummy --------
-------- - --------
Set Ravage_DummySpellId = Ravage (Dummy)
-------- - --------
-------- RavageDummy unit from object editor --------
-------- - --------
Set Ravage_DummyId = RavageDummy
-------- - --------
-------- The number of ravage waves --------
-------- - --------
Set Ravage_WaveNumber[1] = 18
Set Ravage_WaveNumber[2] = 18
Set Ravage_WaveNumber[3] = 18
-------- - --------
-------- DO NOT TOUCH ANYTHING BELOW THIS --------
-------- Preloading purposes to avoid lag spike on first cast --------
-------- - --------
Set Ravage_Loc = (Center of (Playable map area))
Unit - Create 1 Ravage_DummyId for Player 1 (Red) at Ravage_Loc facing Default building facing degrees
Unit - Add Ravage_SpellId to (Last created unit)
Unit - Add Ravage_DummySpellId to (Last created unit)
Unit - Kill (Last created unit)
Game - Preload all files listed in Abilities\Spells\Undead\Impale\ImpaleMissTarget.mdl
Game - Preload all files listed in Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
Ravage Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Ravage_SpellId
Actions
-------- - --------
-------- Store the caster into a variable --------
-------- - --------
Set Ravage_Caster = (Triggering unit)
-------- - --------
-------- Store the level into a variable --------
-------- - --------
Set Ravage_Level = (Level of Ravage_SpellId for Ravage_Caster)
-------- - --------
-------- Store caster's current position --------
-------- - --------
Set Ravage_Loc = (Position of Ravage_Caster)
-------- - --------
-------- Loop for "number of waves" times --------
-------- - --------
For each (Integer Ravage_TempInteger) from 1 to Ravage_WaveNumber[Ravage_Level], do (Actions)
Loop - Actions
-------- - --------
-------- Setup the correct angle to form a circle --------
-------- - --------
Set Ravage_Angle = ((Real(Ravage_TempInteger)) x (360.00 / (Real(Ravage_WaveNumber[Ravage_Level]))))
-------- - --------
-------- Setup the point where the dummy should cast the ability while taking the angle into consideration --------
-------- - --------
Set Ravage_Loc2 = (Ravage_Loc offset by 128.00 towards Ravage_Angle degrees)
-------- - --------
-------- Create the dummy unit to cast impale --------
-------- - --------
Unit - Create 1 Ravage_DummyId for (Owner of Ravage_Caster) at Ravage_Loc facing Default building facing degrees
-------- - --------
-------- Store the dummy into a variable --------
-------- - --------
Set Ravage_Dummy = (Last created unit)
-------- - --------
-------- Add "impale" ability to the dummy --------
-------- - --------
Unit - Add Ravage_DummySpellId to Ravage_Dummy
-------- - --------
-------- Set the level to match your hero's ability --------
-------- - --------
Unit - Set level of Ravage (Dummy) for Ravage_Dummy to Ravage_Level
-------- - --------
-------- Gives the dummy an expiration timer so it doesn't stay in the map permanently --------
-------- But still has enough time to cast impale --------
-------- - --------
Unit - Add a 1.00 second Generic expiration timer to Ravage_Dummy
-------- - --------
-------- Order the dummy to cast impale at target location around the caster --------
-------- - --------
Unit - Order Ravage_Dummy to Undead Crypt Lord - Impale Ravage_Loc2
-------- - --------
-------- Remove location reference to prevent memory leak --------
-------- - --------
Custom script: call RemoveLocation(udg_Ravage_Loc2)
-------- - --------
-------- Remove location reference to prevent memory leak --------
-------- - --------
Custom script: call RemoveLocation(udg_Ravage_Loc)
You can change most of the values from object editor.
One thing to note is since this relies on dummy unit to cast the spell, the kill credit doesn't go to the caster, you can work around this by using damage detection, though. I hope it satisfies your need.
Edit: Forgot to mention, you can press ESC to refresh your cooldown and restore HP/Mana in the testmap.![]()