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!
Level Information
"Summons 10,12,14 spinning axes around Rexxar(optional) which serve as a spinning shield for Rexxar.The axes cause damage as it slice through an enemy.The circle of axes will become wider and higher.Lasts 15 secs."
Changelogs
-----------------
Version 0.1
Uploaded
-----------------
Version 0.2
Removed the refreshing axes
The Axes will now go wider.
---------------------------
TRiGGeRs
AS Config
Events
Map initialization
Conditions
Actions
Set AS_AbilityDuration = 15.00
Set AS_Model_1 = Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
Set AS_Model_2 = Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
Set AS_Model_3 = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Set AS_GoingIn_Speed = 0.50
Set AS_Spin_Speed = 10.00
Set AS_Size = 150.00
-------- The spawning distance of the Axe from the caster --------
Set AS_AxeDistance = 200.00
-------- The distance that the sliced unit will be pushed --------
Set AS_Hit_MoveSpeed = 10.00
Set AS_Height_Increase = 0.50
[/hidden=AS Cast]
AS Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Axe Spiral
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AS_Index_Listener Equal to 0
Then - Actions
Trigger - Turn on AS Loop <gen>
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AS_Recycle_Size Greater than 0
Then - Actions
Set AS_Recycle_Size = (AS_Recycle_Size - 1)
Set AS_Current_Index = AS_Recycle_Container[AS_Recycle_Size]
Else - Actions
Set AS_Current_Index = AS_Index_Size
Set AS_Index_Size = (AS_Index_Size + 1)
Set AS_Caster[AS_Current_Index] = (Casting unit)
Set AS_Point = (Position of AS_Caster[AS_Current_Index])
Set AS_Height = 0.00
Set AS_Total_Axes[AS_Current_Index] = (4 + ((Level of Axe Spiral for AS_Caster[AS_Current_Index]) x 2))
Set AS_Damage = (3.00 x (Real((Level of Axe Spiral for AS_Caster[AS_Current_Index]))))
Set AS_Timer = AS_AbilityDuration
For each (Integer AS_Integer) from 1 to AS_Total_Axes[AS_Current_Index], do (Actions)
Loop - Actions
Unit - Create 1 Axe Spiral Unit for (Owner of AS_Caster[AS_Current_Index]) at (AS_Point offset by AS_AxeDistance towards ((360.00 / (Real(AS_Total_Axes[AS_Current_Index]))) x (Real(AS_Integer))) degrees) facing Default building facing degrees
Set AS_Dummy[AS_Integer] = (Last created unit)
Unit - Add Storm Crow Form to AS_Dummy[AS_Integer]
Unit - Remove Storm Crow Form from AS_Dummy[AS_Integer]
Animation - Change AS_Dummy[AS_Integer]'s size to (AS_Size%, 0.00%, 0.00%) of its original size
Custom script: call RemoveLocation(udg_AS_Point)
Set AS_Index_Container[AS_Index_Listener] = AS_Current_Index
Set AS_Index_Listener = (AS_Index_Listener + 1)
[/hidden]
AS Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Set AS_Timer = (AS_Timer - 0.03)
For each (Integer AS_Loop) from 0 to (AS_Index_Listener - 1), do (Actions)
Loop - Actions
Set AS_Current_Index = AS_Index_Container[AS_Loop]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AS_Timer Greater than 0.00
Then - Actions
Set AS_Height = (AS_Height + AS_Height_Increase)
Set AS_Point = (Position of AS_Caster[AS_Current_Index])
For each (Integer AS_Integer) from 1 to AS_Total_Axes[AS_Current_Index], do (Actions)
Loop - Actions
Animation - Change AS_Dummy[AS_Integer] flying height to AS_Height at 0.00
Set AS_Dummy_Point[AS_Integer] = (Position of AS_Dummy[AS_Integer])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AS_Angle[AS_Integer] Greater than or equal to 359.00
Then - Actions
Set AS_Angle[AS_Integer] = 0.00
Else - Actions
Set AS_Distance[AS_Integer] = (Distance between AS_Dummy_Point[AS_Integer] and AS_Point)
Set AS_Angle[AS_Integer] = (Angle from AS_Point to AS_Dummy_Point[AS_Integer])
Set AS_Move[AS_Integer] = (AS_Point offset by (AS_Distance[AS_Integer] + AS_GoingIn_Speed) towards (AS_Angle[AS_Integer] - AS_Spin_Speed) degrees)
Unit - Move AS_Dummy[AS_Integer] instantly to AS_Move[AS_Integer], facing (AS_Angle[AS_Integer] - 90.00) degrees
Set AS_Hit_Group[AS_Integer] = (Units within 100.00 of AS_Dummy_Point[AS_Integer] matching (((((Matching unit) is A structure) Not equal to True) and (((Matching unit) is Magic Immune) Not equal to True)) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an e
Unit Group - Pick every unit in AS_Hit_Group[AS_Integer] and do (Actions)
Loop - Actions
Set AS_Picked_Unit[AS_Integer] = (Picked unit)
Set AS_PickedPoint[AS_Integer] = (Position of AS_Picked_Unit[AS_Integer])
Set AS_Hit_Move[AS_Integer] = (AS_PickedPoint[AS_Integer] offset by AS_Hit_MoveSpeed towards (Angle from AS_Point to AS_PickedPoint[AS_Integer]) degrees)
Unit - Cause AS_Caster[AS_Current_Index] to damage AS_Picked_Unit[AS_Integer], dealing AS_Damage damage of attack type Spells and damage type Normal
Unit - Move AS_Picked_Unit[AS_Integer] instantly to AS_Hit_Move[AS_Integer]
Set AS_Point = (Position of AS_Caster[AS_Current_Index])
For each (Integer AS_Integer) from 1 to AS_Total_Axes[AS_Current_Index], do (Actions)
Loop - Actions
Unit - Kill AS_Dummy[AS_Integer]
Special Effect - Create a special effect at (AS_Point offset by AS_AxeDistance towards ((360.00 / (Real(AS_Total_Axes[AS_Current_Index]))) x (Real(AS_Integer))) degrees) using AS_Model_2
Special Effect - Destroy (Last created special effect)
Custom script: call RemoveLocation(udg_AS_Point)
Set AS_Index_Listener = (AS_Index_Listener - 1)
Set AS_Index_Container[AS_Loop] = AS_Index_Container[AS_Index_Listener]
Set AS_Recycle_Container[AS_Recycle_Size] = AS_Current_Index
Set AS_Recycle_Size = (AS_Recycle_Size + 1)
Set AS_Loop = (AS_Loop - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AS_Index_Listener Equal to 0
Then - Actions
Trigger - Turn off AS Loop <gen>
Skip remaining actions
Else - Actions
[/hidden]
AS Dummy Dies
Events
Unit - A unit Dies
Conditions
(Unit-type of (Dying unit)) Equal to Axe Spiral Unit
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
19:24, 28th Oct 2012
Magtheridon96:
The total axes should be configurable in the initialization trigger
The configuration should support multiple levels.
(Casting unit) ->...
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
19:24, 28th Oct 2012
Magtheridon96:
The total axes should be configurable in the initialization trigger
The configuration should support multiple levels.
(Casting unit) -> (Triggering unit)
You're leaking a location inside the Cast trigger:
Unit - Create 1 Axe Spiral Unit for (Owner of AS_Caster[AS_Current_Index]) at (AS_Point offset by AS_AxeDistance towards ((360.00 / (Real(AS_Total_Axes[AS_Current_Index]))) x (Real(AS_Integer))) degrees) facing Default building facing degrees
Over here, the location:
(AS_Point offset by AS_AxeDistance towards ((360.00 / (Real(AS_Total_Axes[AS_Current_Index]))) x (Real(AS_Integer))) degrees)
should be stored into a point variable and removed directly after you create the unit.
This location is also being leaked inside the Loop trigger.
Your spell is not MUI because AS_Timer and AS_Height must be arrays. AS_Timer should not be decreased at the top outside of the loop, you must decrease it inside the loop for each instance after making it an array.
When you pick units in the "Hit" group, the 100.00 radius should be configurable, not constant.
Can't Fix the description cuz can't update it
The Triggers
----------------
v-0.2 TRiGGeRs
-----------------
AS Config
Events
Map initialization
Conditions
Actions
Set AS_AbilityDuration = 15.00
Set AS_Model_1 = Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
Set AS_Model_2 = Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
Set AS_Model_3 = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Set AS_GoingIn_Speed = 0.50
Set AS_Spin_Speed = 10.00
Set AS_Size = 150.00
-------- The spawning distance of the Axe from the caster --------
Set AS_AxeDistance = 200.00
-------- The distance that the sliced unit will be pushed --------
Set AS_Hit_MoveSpeed = 10.00
Set AS_Height_Increase = 0.50
AS Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Axe Spiral
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AS_Index_Listener Equal to 0
Then - Actions
Trigger - Turn on AS Loop <gen>
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AS_Recycle_Size Greater than 0
Then - Actions
Set AS_Recycle_Size = (AS_Recycle_Size - 1)
Set AS_Current_Index = AS_Recycle_Container[AS_Recycle_Size]
Else - Actions
Set AS_Current_Index = AS_Index_Size
Set AS_Index_Size = (AS_Index_Size + 1)
Set AS_Caster[AS_Current_Index] = (Casting unit)
Set AS_Point = (Position of AS_Caster[AS_Current_Index])
Set AS_Height = 0.00
Set AS_Total_Axes[AS_Current_Index] = (8 + ((Level of Axe Spiral for AS_Caster[AS_Current_Index]) x 2))
Set AS_Damage = (3.00 x (Real((Level of Axe Spiral for AS_Caster[AS_Current_Index]))))
Set AS_Timer = AS_AbilityDuration
For each (Integer AS_Integer) from 1 to AS_Total_Axes[AS_Current_Index], do (Actions)
Loop - Actions
Unit - Create 1 Axe Spiral Unit for (Owner of AS_Caster[AS_Current_Index]) at (AS_Point offset by AS_AxeDistance towards ((360.00 / (Real(AS_Total_Axes[AS_Current_Index]))) x (Real(AS_Integer))) degrees) facing Default building facing degrees
Set AS_Dummy[AS_Integer] = (Last created unit)
Custom script: if UnitAddAbility(udg_AS_Dummy[udg_AS_Integer],'Amrf') then
Set AS_Hit_Group[AS_Integer] = (Units within 100.00 of AS_Dummy_Point[AS_Integer] matching (((((Matching unit) is A structure) Not equal to True) and (((Matching unit) is Magic Immune) Not equal to True)) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an e
Unit Group - Pick every unit in AS_Hit_Group[AS_Integer] and do (Actions)
Loop - Actions
Set AS_Picked_Unit[AS_Integer] = (Picked unit)
Set AS_PickedPoint[AS_Integer] = (Position of AS_Picked_Unit[AS_Integer])
Set AS_Hit_Move[AS_Integer] = (AS_PickedPoint[AS_Integer] offset by AS_Hit_MoveSpeed towards (Angle from AS_Point to AS_PickedPoint[AS_Integer]) degrees)
Unit - Cause AS_Caster[AS_Current_Index] to damage AS_Picked_Unit[AS_Integer], dealing AS_Damage damage of attack type Spells and damage type Normal
Unit - Move AS_Picked_Unit[AS_Integer] instantly to AS_Hit_Move[AS_Integer]
Set AS_Point = (Position of AS_Caster[AS_Current_Index])
For each (Integer AS_Integer) from 1 to AS_Total_Axes[AS_Current_Index], do (Actions)
Loop - Actions
Unit - Kill AS_Dummy[AS_Integer]
Special Effect - Create a special effect at (AS_Point offset by AS_AxeDistance towards ((360.00 / (Real(AS_Total_Axes[AS_Current_Index]))) x (Real(AS_Integer))) degrees) using AS_Model_2
Special Effect - Destroy (Last created special effect)
Custom script: call RemoveLocation(udg_AS_Point)
Set AS_Index_Listener = (AS_Index_Listener - 1)
Set AS_Index_Container[AS_Loop] = AS_Index_Container[AS_Index_Listener]
Set AS_Recycle_Container[AS_Recycle_Size] = AS_Current_Index
Set AS_Recycle_Size = (AS_Recycle_Size + 1)
Set AS_Loop = (AS_Loop - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AS_Index_Listener Equal to 0
Then - Actions
Trigger - Turn off AS Loop <gen>
Skip remaining actions
Else - Actions
AS Dummy Dies
Events
Unit - A unit Dies
Conditions
(Unit-type of (Dying unit)) Equal to Axe Spiral Unit
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.