Creates circling fire clouds which burn nearby enemies and regularly burst flames on large area.
Level 1 - 1 rotation.
Level 2 - 2 rotations.
Level 3 - 3 rotations.
Changelog:
1.0 - Relased
1.1 - Fixed minor leaks
1.2 - Fixed dummy leak
1.3 - Made spell MUI again
Triggers
Dancing Flame Init
Events
Map initialization
Conditions Actions
Hashtable - Create a hashtable Set DancingFlameHashtable = (Last created hashtable)
Dancing Flame Start
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dancing Flame
Actions
Set TempPlayer = (Triggering player) Set TempUnit = (Triggering unit) Set DancingFlameID = (Key (Triggering unit)) If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(TempUnit is in DancingFlameGroup) Equal to True
Then - Actions
Set DancingFlame[1] = (Load 1 of DancingFlameID in DancingFlameHashtable) Set DancingFlame[2] = (Load 2 of DancingFlameID in DancingFlameHashtable) Set DancingFlame[3] = (Load 3 of DancingFlameID in DancingFlameHashtable) Unit - Remove DancingFlame[1] from the game Unit - Remove DancingFlame[2] from the game Unit - Remove DancingFlame[3] from the game Hashtable - Clear all child hashtables of child DancingFlameID in DancingFlameHashtable
Else - Actions
Unit Group - Add TempUnit to DancingFlameGroup Trigger - Turn on Dancing Flame Spin <gen> Trigger - Turn on Dancing Flame Tail <gen>
Set TempLoc = (Position of TempUnit) Unit - Create 1 Dancing Flame for TempPlayer at TempLoc facing Default building facing degrees Hashtable - Save Handle Of(Last created unit) as 1 of DancingFlameID in DancingFlameHashtable Unit - Create 1 Dancing Flame for TempPlayer at TempLoc facing Default building facing degrees Hashtable - Save Handle Of(Last created unit) as 2 of DancingFlameID in DancingFlameHashtable Unit - Create 1 Dancing Flame for TempPlayer at TempLoc facing Default building facing degrees Hashtable - Save Handle Of(Last created unit) as 3 of DancingFlameID in DancingFlameHashtable Custom script: call RemoveLocation(udg_TempLoc) -------- Angle 1 -------- Hashtable - Save 0.00 as 4 of DancingFlameID in DancingFlameHashtable -------- Angle 2 -------- Hashtable - Save 2.09 as 5 of DancingFlameID in DancingFlameHashtable -------- Angle 3 -------- Hashtable - Save 4.18 as 6 of DancingFlameID in DancingFlameHashtable -------- Step -------- Hashtable - Save 5.00 as 7 of DancingFlameID in DancingFlameHashtable -------- Step 2 -------- Hashtable - Save -0.05 as 8 of DancingFlameID in DancingFlameHashtable -------- Distance -------- Hashtable - Save 0.00 as 9 of DancingFlameID in DancingFlameHashtable -------- Spins -------- Hashtable - Save (1 + (Level of Dancing Flame for TempUnit)) as 10 of DancingFlameID in DancingFlameHashtable
Dancing Flame Spin
Events
Time - Every 0.03 seconds of game time
Conditions Actions
Unit Group - Pick every unit in DancingFlameGroup and do (Actions)
Loop - Actions
Set DancingFlameID = (Key (Picked unit)) Set TempUnit = (Picked unit) Set TempPlayer = (Owner of TempUnit) Set DancingFlame[1] = (Load 1 of DancingFlameID in DancingFlameHashtable) Set DancingFlame[2] = (Load 2 of DancingFlameID in DancingFlameHashtable) Set DancingFlame[3] = (Load 3 of DancingFlameID in DancingFlameHashtable) Set DancingFlameAngle[1] = (Load 4 of DancingFlameID from DancingFlameHashtable) Set DancingFlameAngle[2] = (Load 5 of DancingFlameID from DancingFlameHashtable) Set DancingFlameAngle[3] = (Load 6 of DancingFlameID from DancingFlameHashtable) Set DancingFlameStep = (Load 7 of DancingFlameID from DancingFlameHashtable) Set DancingFlameStep2 = (Load 8 of DancingFlameID from DancingFlameHashtable) Set DancingFlameDistance = (Load 9 of DancingFlameID from DancingFlameHashtable) Set DancingFlameSpins = (Load 10 of DancingFlameID from DancingFlameHashtable) Set DancingFlameAngle[1] = (DancingFlameAngle[1] + 0.03) Set DancingFlameAngle[2] = (DancingFlameAngle[2] + 0.03) Set DancingFlameAngle[3] = (DancingFlameAngle[3] + 0.03) If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
DancingFlameStep Greater than or equal to 5.00
Then - Actions
Set DancingFlameStep2 = -0.05 Set DancingFlameStep = 5.00 Set DancingFlameDistance = 0.00 Set DancingFlameSpins = (DancingFlameSpins - 1) Set TempLoc = (Position of TempUnit) For each (Integer TempInt) from 1 to 6, do (Actions)
Loop - Actions
Unit - Create 1 Dancing Flame Caster for TempPlayer at TempLoc facing ((Real(TempInt)) x 60.00) degrees Set TempLoc2 = (TempLoc offset by 100.00 towards ((Real(TempInt)) x 60.00) degrees) Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Breath Of Fire TempLoc2 Custom script: call RemoveLocation(udg_TempLoc2) Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: call RemoveLocation(udg_TempLoc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
DancingFlameStep Less than or equal to -5.00
Then - Actions
Set DancingFlameStep2 = 0.05 Set DancingFlameStep = -5.00 Set DancingFlameDistance = 0.00 Set DancingFlameSpins = (DancingFlameSpins - 1) Set TempLoc = (Position of TempUnit) For each (Integer TempInt) from 1 to 6, do (Actions)
Loop - Actions
Unit - Create 1 Dancing Flame Caster for TempPlayer at TempLoc facing ((Real(TempInt)) x 60.00) degrees Set TempLoc2 = (TempLoc offset by 100.00 towards ((Real(TempInt)) x 60.00) degrees) Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Breath Of Fire TempLoc2 Custom script: call RemoveLocation(udg_TempLoc2) Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: call RemoveLocation(udg_TempLoc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
DancingFlameSpins Equal to 0
Then - Actions
Unit - Remove DancingFlame[1] from the game Unit - Remove DancingFlame[2] from the game Unit - Remove DancingFlame[3] from the game Hashtable - Clear all child hashtables of child DancingFlameID in DancingFlameHashtable Unit Group - Remove TempUnit from DancingFlameGroup If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in DancingFlameGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger) Trigger - Turn off Dancing Flame Tail <gen>
Else - Actions
Else - Actions
Set DancingFlameStep = (DancingFlameStep + DancingFlameStep2) Set DancingFlameDistance = (DancingFlameDistance + DancingFlameStep) Custom script: call SetUnitX(udg_DancingFlame[1], GetUnitX(udg_TempUnit) + udg_DancingFlameDistance * Cos(udg_DancingFlameAngle[1])) Custom script: call SetUnitY(udg_DancingFlame[1], GetUnitY(udg_TempUnit) + udg_DancingFlameDistance * Sin(udg_DancingFlameAngle[1])) Custom script: call SetUnitX(udg_DancingFlame[2], GetUnitX(udg_TempUnit) + udg_DancingFlameDistance * Cos(udg_DancingFlameAngle[2])) Custom script: call SetUnitY(udg_DancingFlame[2], GetUnitY(udg_TempUnit) + udg_DancingFlameDistance * Sin(udg_DancingFlameAngle[2])) Custom script: call SetUnitX(udg_DancingFlame[3], GetUnitX(udg_TempUnit) + udg_DancingFlameDistance * Cos(udg_DancingFlameAngle[3])) Custom script: call SetUnitY(udg_DancingFlame[3], GetUnitY(udg_TempUnit) + udg_DancingFlameDistance * Sin(udg_DancingFlameAngle[3])) Hashtable - Save DancingFlameAngle[1] as 4 of DancingFlameID in DancingFlameHashtable Hashtable - Save DancingFlameAngle[2] as 5 of DancingFlameID in DancingFlameHashtable Hashtable - Save DancingFlameAngle[3] as 6 of DancingFlameID in DancingFlameHashtable Hashtable - Save DancingFlameStep as 7 of DancingFlameID in DancingFlameHashtable Hashtable - Save DancingFlameStep2 as 8 of DancingFlameID in DancingFlameHashtable Hashtable - Save DancingFlameDistance as 9 of DancingFlameID in DancingFlameHashtable Hashtable - Save DancingFlameSpins as 10 of DancingFlameID in (Last created hashtable)
Dancing Flame Tail
Events
Time - Every 0.10 seconds of game time
Conditions Actions
Unit Group - Pick every unit in DancingFlameGroup and do (Actions)
Loop - Actions
Set DancingFlameID = (Key (Picked unit)) Set DancingFlame[1] = (Load 1 of DancingFlameID in DancingFlameHashtable) Set DancingFlame[2] = (Load 2 of DancingFlameID in DancingFlameHashtable) Set DancingFlame[3] = (Load 3 of DancingFlameID in DancingFlameHashtable) Set TempLoc = (Position of DancingFlame[1]) Unit - Create 1 Dancing Flame Tail for Neutral Passive at TempLoc facing Default building facing degrees Custom script: call RemoveLocation(udg_TempLoc) Unit - Add a 0.70 second Generic expiration timer to (Last created unit) Set TempLoc = (Position of DancingFlame[2]) Unit - Create 1 Dancing Flame Tail for Neutral Passive at TempLoc facing Default building facing degrees Custom script: call RemoveLocation(udg_TempLoc) Unit - Add a 0.70 second Generic expiration timer to (Last created unit) Set TempLoc = (Position of DancingFlame[3]) Unit - Create 1 Dancing Flame Tail for Neutral Passive at TempLoc facing Default building facing degrees Custom script: call RemoveLocation(udg_TempLoc) Unit - Add a 0.70 second Generic expiration timer to (Last created unit)
Dancing Flame Clear
Events
Unit - A unit Dies
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Dancing Flame Caster (Unit-type of (Triggering unit)) Equal to Dancing Flame Tail
Actions
Unit - Remove (Triggering unit) from the game
Rating - 5.00 (1 vote)
(Hover and click)
Moderator Comments
Useful
19:29, 16th Sep 2012
Magtheridon96:
Approved.
This spell is quite useful and a nice addition to our database.
The spell can be a lot more better.
Those 1,2,3 arrays can be inside a Integer Loop
Dummy Clear can be made faster.
Creation of Dummies in the Tail trigger can be also in a Integer Loop
The offset and angle can be configurable too.(for the users to easily increase the missiles)