- Joined
- Aug 14, 2007
- Messages
- 66
I am trying to make the spell Flame Dance by Player_15 (got it from this site) usable by more then one person in a game. I got it to work but there is one problem, the flames that circle the caster start circling the entire map in a huge perfect circle after I stop casting. The original idea paused the caster for 30 seconds but I made it so the caster could interrupt its spell channeling. It seems like the flames aren't dying out either they just kept circling. I made them have 0 vision so their will be no effect but im afraid these can bunch up and become noticable/cause a lot of lag, a sort of leak.
Any ideas on how to fix this?
Any ideas on how to fix this?
-
flame dance
-
Events
- Unit - A unit Starts the effect of an ability
-
Conditions
- (Ability being cast) Equal to Flame Ring
-
Actions
- Set flamedanceactive[(Custom value of (Casting unit))] = True
- Set flamecaster[(Custom value of (Casting unit))] = (Casting unit)
- Set flamecounter[(Custom value of (Casting unit))] = 0
- Set flamedir[(Custom value of (Casting unit))] = 0.00
- Set flamelevel[(Custom value of (Casting unit))] = (Level of Flame Ring for (Casting unit))
- Set flamepos[(Custom value of (Casting unit))] = (Position of flamecaster[(Custom value of (Casting unit))])
- Set flamedistance[(Custom value of (Casting unit))] = 200.00
-
For each (Integer TempInt_Instanced[(Custom value of (Casting unit))]) from 1 to (flamelevel[(Custom value of (Casting unit))] + 1), do (Actions)
-
Loop - Actions
-
For each (Integer B) from 1 to 8, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (flamecounter[(Custom value of (Casting unit))] mod 2) Equal to 0
-
Then - Actions
- Set flamepolar[(Custom value of (Casting unit))] = (flamepos[(Custom value of (Casting unit))] offset by flamedistance[(Custom value of (Casting unit))] towards flamedir[(Custom value of (Casting unit))] degrees)
- Unit - Create 1 Flame 2 for (Owner of flamecaster[(Custom value of (Casting unit))]) at flamepolar[(Custom value of (Casting unit))] facing Default building facing (270.0) degrees
- Point - Remove flamepolar[(Custom value of (Casting unit))]
- Set flamedir[(Custom value of (Casting unit))] = (flamedir[(Custom value of (Casting unit))] + 45.00)
-
Else - Actions
- Set flamepolar[(Custom value of (Casting unit))] = (flamepos[(Custom value of (Casting unit))] offset by flamedistance[(Custom value of (Casting unit))] towards flamedir[(Custom value of (Casting unit))] degrees)
- Unit - Create 1 Flame for (Owner of flamecaster[(Custom value of (Casting unit))]) at flamepolar[(Custom value of (Casting unit))] facing Default building facing (270.0) degrees
- Point - Remove flamepolar[(Custom value of (Casting unit))]
- Set flamedir[(Custom value of (Casting unit))] = (flamedir[(Custom value of (Casting unit))] + 45.00)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- Set flamedistance[(Custom value of (Casting unit))] = (flamedistance[(Custom value of (Casting unit))] + 100.00)
- Set flamecounter[(Custom value of (Casting unit))] = (flamecounter[(Custom value of (Casting unit))] + 1)
-
For each (Integer B) from 1 to 8, do (Actions)
-
Loop - Actions
- Wait 20.00 seconds
- Set flamedanceactive[(Custom value of (Casting unit))] = False
- Point - Remove flamepos[(Custom value of (Casting unit))]
- Custom script: set bj_wantDestroyGroup = true
-
Unit Group - Pick every unit in (Units owned by Player[(Custom value of (Casting unit))] of type Flame) and do (Actions)
-
Loop - Actions
- Unit - Kill (Picked unit)
-
Loop - Actions
- Custom script: set bj_wantDestroyGroup = true
-
Unit Group - Pick every unit in (Units owned by Player[(Custom value of (Casting unit))] of type Flame) and do (Actions)
-
Loop - Actions
- Unit - Kill (Picked unit)
-
Loop - Actions
-
Events
-
flame move
-
Events
- Time - Every 0.03 seconds of game time
- Conditions
-
Actions
- Custom script: set bj_wantDestroyGroup = true
-
For each (Integer A) from 1 to 10, do (Actions)
-
Loop - Actions
-
Unit Group - Pick every unit in (Units owned by Player[(Integer A)] of type Flame) and do (Actions)
-
Loop - Actions
- Set flamepicpos[(Integer A)] = (Position of (Picked unit))
- Set flamepolar[(Integer A)] = (flamepos[(Integer A)] offset by (Distance between flamepicpos[(Integer A)] and flamepos[(Integer A)]) towards ((Angle from flamepicpos[(Integer A)] to flamepos[(Integer A)]) + 1.00) degrees)
- Unit - Move (Picked unit) instantly to flamepolar[(Integer A)]
- Point - Remove flamepicpos[(Integer A)]
- Point - Remove flamepolar[(Integer A)]
-
Loop - Actions
- Custom script: set bj_wantDestroyGroup = true
-
Unit Group - Pick every unit in (Units owned by Player[(Integer A)] of type Flame 2) and do (Actions)
-
Loop - Actions
- Set flamepicpos[(Integer A)] = (Position of (Picked unit))
- Set flamepolar[(Integer A)] = (flamepos[(Integer A)] offset by (Distance between flamepicpos[(Integer A)] and flamepos[(Integer A)]) towards ((Angle from flamepicpos[(Integer A)] to flamepos[(Integer A)]) - 1.00) degrees)
- Unit - Move (Picked unit) instantly to flamepolar[(Integer A)]
- Point - Remove flamepicpos[(Integer A)]
- Point - Remove flamepolar[(Integer A)]
-
Loop - Actions
-
Unit Group - Pick every unit in (Units owned by Player[(Integer A)] of type Flame) and do (Actions)
-
Loop - Actions
-
Events
-
flame damage
-
Events
- Time - Every 1.00 seconds of game time
- Conditions
-
Actions
- Custom script: set bj_wantDestroyGroup = true
-
For each (Integer A) from 1 to 10, do (Actions)
-
Loop - Actions
-
Unit Group - Pick every unit in (Units within ((100.00 x (Real(flamelevel[(Integer A)]))) + 100.00) of flamepos[(Integer A)]) and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- ((Picked unit) is A ground unit) Equal to True
- ((Picked unit) belongs to an enemy of (Owner of flamecaster[(Integer A)])) Equal to True
- flamedanceactive[(Integer A)] Equal to True
-
Then - Actions
- Unit - Order flamecaster[(Integer A)] to damage (Picked unit) for ((Real(flamelevel[(Integer A)])) x 5.00) using attack type Spells and damage type Fire.
-
Else - Actions
- Do nothing
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
Unit Group - Pick every unit in (Units within ((100.00 x (Real(flamelevel[(Integer A)]))) + 100.00) of flamepos[(Integer A)]) and do (Actions)
-
Loop - Actions
-
Events
-
flame cancel
-
Events
- Unit - A unit Is issued an order targeting an object
- Unit - A unit Is issued an order targeting a point
- Unit - A unit Is issued an order with no target
-
Conditions
-
And - All (Conditions) are true
-
Conditions
- flamedanceactive[(Custom value of (Casting unit))] Equal to True
- ((Ordered unit) is A Hero) Equal to True
-
Conditions
-
And - All (Conditions) are true
-
Actions
- Set flamedanceactive[(Custom value of (Ordered unit))] = False
- Point - Remove flamepos[(Custom value of (Ordered unit))]
- Point - Remove flamepicpos[(Custom value of (Ordered unit))]
- Point - Remove flamepolar[(Custom value of (Ordered unit))]
- Custom script: set bj_wantDestroyGroup = true
-
Unit Group - Pick every unit in (Units owned by Player[(Custom value of (Ordered unit))] of type Flame) and do (Actions)
-
Loop - Actions
- Unit - Kill (Picked unit)
-
Loop - Actions
- Custom script: set bj_wantDestroyGroup = true
-
Unit Group - Pick every unit in (Units owned by Player[(Custom value of (Ordered unit))] of type Flame) and do (Actions)
-
Loop - Actions
- Unit - Kill (Picked unit)
-
Loop - Actions
-
Events