Flare
Stops copies me!
- Reaction score
- 662
Battle Rage
The hero enters an absolute rage, and begins leaping around the battlefield slashing enemies for (100-150 + 25 per additional unit hit) damage to each target. Jumps 4/8/12 times. If there are no nearby units, the spell will end.
Details:
GUI/JASS? GUI
MUI? Yes, up to 100 instances
Leakless? As far as I know, yes
Laggy? With 2+ casts on a big cluster of creeps, yes. Single cast doesn't show only lag (for me at least)
Importing this spell:
In File -> Preferences, enable 'Automatically create unknown variables when pasting triggers'
Copy the base spell Battle Rage
Copy the triggers Cast and Slash located within the Omnislash category
Add the ability to a hero (preferably Blademaster model)
Enjoy ^^
If you find any bugs, have any suggestions or simply have an opinion on the spell, please post
The hero 'floating' through the air for the first jump is something I can't seem to fix. Reducing animation speed only takes effect after the first attack slam animation is played.
The hero enters an absolute rage, and begins leaping around the battlefield slashing enemies for (100-150 + 25 per additional unit hit) damage to each target. Jumps 4/8/12 times. If there are no nearby units, the spell will end.
Details:
GUI/JASS? GUI
MUI? Yes, up to 100 instances
Leakless? As far as I know, yes
Laggy? With 2+ casts on a big cluster of creeps, yes. Single cast doesn't show only lag (for me at least)
Importing this spell:
In File -> Preferences, enable 'Automatically create unknown variables when pasting triggers'
Copy the base spell Battle Rage
Copy the triggers Cast and Slash located within the Omnislash category
Add the ability to a hero (preferably Blademaster model)
Enjoy ^^
Code:
Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Battle Rage
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
CustomVal Less than or equal to 99
Then - Actions
Set CustomVal = (CustomVal + 1)
Else - Actions
Set CustomVal = CustomVal
Set Caster[CustomVal] = (Triggering unit)
Set Time[CustomVal] = 1.00
Unit Group - Add Caster[CustomVal] to OmniGroup
Set MaxHits[CustomVal] = (4 x (Level of Battle Rage for Caster[CustomVal]))
Animation - Change Caster[CustomVal]'s animation speed to 80.00% of its original speed
Unit - Pause Caster[CustomVal]
Special Effect - Create a special effect attached to the weapon of Caster[CustomVal] using Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl
Unit - Turn collision for Caster[CustomVal] Off
Set SpecialFX[CustomVal] = (Last created special effect)
Set RandomPt = (Random point in (Playable map area))
Unit - Create 1 Hidden Dummy for (Owner of Caster[CustomVal]) at RandomPt facing Default building facing degrees
Unit - Set the custom value of (Last created unit) to CustomVal
Unit Group - Add (Last created unit) to DummyGroup
Set UnusedDummy[CustomVal] = (Last created unit)
Custom script: call RemoveLocation (udg_RandomPt)
Code:
Slash
Events
Time - Every 0.01 seconds of game time
Conditions
(Number of units in OmniGroup) Greater than 0
Actions
Unit Group - Pick every unit in DummyGroup and do (Actions)
Loop - Actions
Set RandomPt = (Random point in (Playable map area))
Unit - Create 1 Hidden Dummy for (Owner of (Picked unit)) at RandomPt facing Default building facing degrees
Unit - Set the custom value of (Last created unit) to (Custom value of (Picked unit))
Unit - Add a 0.02 second Generic expiration timer to (Last created unit)
Set Time[(Custom value of (Last created unit))] = (Time[(Custom value of (Last created unit))] - 0.01)
Unit Group - Pick every unit in OmniGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
CurrentHits[(Custom value of (Last created unit))] Equal to MaxHits[(Custom value of (Last created unit))]
Then - Actions
Unit - Unpause Caster[(Custom value of (Last created unit))]
Animation - Reset Caster[(Custom value of (Last created unit))]'s animation
Animation - Change Caster[(Custom value of (Last created unit))]'s animation speed to 100.00% of its original speed
Unit Group - Remove Caster[(Custom value of (Last created unit))] from OmniGroup
Set CurrentHits[(Custom value of (Last created unit))] = 0
Special Effect - Destroy SpecialFX[(Custom value of (Last created unit))]
Unit - Kill UnusedDummy[(Custom value of (Last created unit))]
Unit Group - Remove UnusedDummy[(Custom value of (Last created unit))] from DummyGroup
Else - Actions
Set CasterLoc[(Custom value of (Last created unit))] = (Position of Caster[(Custom value of (Last created unit))])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TargPicked[(Custom value of (Last created unit))] Equal to False
Then - Actions
Set TargetGroup[(Custom value of (Last created unit))] = (Units within 500.00 of CasterLoc[(Custom value of (Last created unit))] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Ethereal) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belo
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in TargetGroup[(Custom value of (Last created unit))]) Greater than 0
Then - Actions
Set RandomUnit[(Custom value of (Last created unit))] = (Random 1 units from TargetGroup[(Custom value of (Last created unit))])
Unit Group - Pick every unit in RandomUnit[(Custom value of (Last created unit))] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TargPicked[(Custom value of (Last created unit))] Equal to False
Then - Actions
Animation - Play Caster[(Custom value of (Last created unit))]'s attack slam animation
Set Target[(Custom value of (Last created unit))] = (Picked unit)
Set TargetLoc[(Custom value of (Last created unit))] = (Position of Target[(Custom value of (Last created unit))])
Set TargInRange[(Custom value of (Last created unit))] = True
Set TargPicked[(Custom value of (Last created unit))] = True
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Flying[(Custom value of (Last created unit))] Equal to False
Then - Actions
Unit - Add Storm Crow Form to Caster[(Custom value of (Last created unit))]
Animation - Change Caster[(Custom value of (Last created unit))] flying height to 300.00 at 600.00
Unit - Remove Storm Crow Form from Caster[(Custom value of (Last created unit))]
Set Flying[(Custom value of (Last created unit))] = True
Else - Actions
Set Distance[(Custom value of (Last created unit))] = ((Distance between CasterLoc[(Custom value of (Last created unit))] and TargetLoc[(Custom value of (Last created unit))]) - 100.00)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Time[(Custom value of (Last created unit))] Equal to 0.50
Then - Actions
Unit - Add Storm Crow Form to Caster[(Custom value of (Last created unit))]
Animation - Change Caster[(Custom value of (Last created unit))] flying height to 0.00 at 600.00
Unit - Remove Storm Crow Form from Caster[(Custom value of (Last created unit))]
Else - Actions
Set Angle[(Custom value of (Last created unit))] = (Angle from CasterLoc[(Custom value of (Last created unit))] to TargetLoc[(Custom value of (Last created unit))])
Set CasterMoveLoc[(Custom value of (Last created unit))] = (CasterLoc[(Custom value of (Last created unit))] offset by ((Distance[(Custom value of (Last created unit))] / 100.00) / Time[(Custom value of (Last created unit))]) towards Angle[(Custom value of (Last created unit))] degrees)
Unit - Move Caster[(Custom value of (Last created unit))] instantly to CasterMoveLoc[(Custom value of (Last created unit))]
Unit - Make Caster[(Custom value of (Last created unit))] face Angle[(Custom value of (Last created unit))] over 0.00 seconds
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Time[(Custom value of (Last created unit))] Equal to 0.01
Then - Actions
Set Time[(Custom value of (Last created unit))] = 1.00
Set Damage[(Custom value of (Last created unit))] = ((Random real number between 100.00 and 150.00) + (25.00 x (Real(CurrentHits[(Custom value of (Last created unit))]))))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between CasterLoc[(Custom value of (Last created unit))] and TargetLoc[(Custom value of (Last created unit))]) Less than or equal to 120.00
Then - Actions
Set TargPicked[(Custom value of (Last created unit))] = False
Unit - Cause Caster[(Custom value of (Last created unit))] to damage Target[(Custom value of (Last created unit))], dealing Damage[(Custom value of (Last created unit))] damage of attack type Hero and damage type Normal
Special Effect - Create a special effect attached to the head of Target[(Custom value of (Last created unit))] using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Special Effect - Destroy (Last created special effect)
Floating Text - Create floating text that reads ((String((Integer(Damage[(Custom value of (Last created unit))])))) + !) at TargetLoc[(Custom value of (Last created unit))] with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the lifespan of (Last created floating text) to 2.50 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.75 seconds
Set CurrentHits[(Custom value of (Last created unit))] = (CurrentHits[(Custom value of (Last created unit))] + 1)
Else - Actions
Set Flying[(Custom value of (Last created unit))] = False
Custom script: call RemoveLocation (udg_CasterLoc[GetUnitUserData(GetLastCreatedUnit())])
Custom script: call DestroyGroup (udg_RandomUnit[GetUnitUserData(GetLastCreatedUnit())])
Custom script: call RemoveLocation (udg_TargetLoc[GetUnitUserData(GetLastCreatedUnit())])
Custom script: call DestroyGroup (udg_TargetGroup[GetUnitUserData(GetLastCreatedUnit())])
Else - Actions
Else - Actions
Unit - Unpause Caster[(Custom value of (Last created unit))]
Animation - Reset Caster[(Custom value of (Last created unit))]'s animation
Animation - Change Caster[(Custom value of (Last created unit))]'s animation speed to 100.00% of its original speed
Unit - Turn collision for Caster[(Custom value of (Last created unit))] On
Unit Group - Remove Caster[(Custom value of (Last created unit))] from OmniGroup
Set CurrentHits[(Custom value of (Last created unit))] = 0
Special Effect - Destroy SpecialFX[(Custom value of (Last created unit))]
Unit - Kill UnusedDummy[(Custom value of (Last created unit))]
Unit Group - Remove UnusedDummy[(Custom value of (Last created unit))] from DummyGroup
Else - Actions
If you find any bugs, have any suggestions or simply have an opinion on the spell, please post
The hero 'floating' through the air for the first jump is something I can't seem to fix. Reducing animation speed only takes effect after the first attack slam animation is played.