• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Flame Dance = Multiplayeratized

Status
Not open for further replies.
Level 4
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?

  • 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)
          • 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)
      • 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)
      • 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)
  • 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)]
          • 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)]
  • 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
I added this trigger to stop the casting..

  • 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
    • 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)
      • 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)
 
Level 13
Joined
Nov 22, 2006
Messages
1,260
Why are the two last 'Group Picks' the same?

Wait! I smell WEU.....where are you hiding WEU?? You know you can't hide from me.......ah, there you are:

  • Point - Remove Point
Better stop using WEU as soon as possible, that's evil......
 
Level 4
Joined
Aug 14, 2007
Messages
66
:grin::grin::grin:HAHAHAHHAA:grin::grin::grin:

I never would have caught that thanks muchly there are 2 different fire types and the one that was circling the map was not being removed.


but....

WEU cant be evil :eek:

its the bestest thing that ever happened to me..i wouldnt even know how to remove that point without it :sad:

whats wrong with it?
 
Level 6
Joined
Feb 2, 2005
Messages
205
You can have this done in the normal WE too, with costum script. Beside maps created with WEU can only be edited with WEU + it will let you stick forever to gui, which creates alot of unneeded code.

Also once WEU corrupted my map *args*

I use atm the WE with the nextGen package from wc3c.
 
Level 13
Joined
Nov 22, 2006
Messages
1,260
nextGen package? You mean JassNewGenPack or what?

Yeah WEU sucks, I worked with that crap too, until I found out what a garbage that actually is.....You'll be much happier working in normal WE, believe me. Do you want to know how to remove a point without WEU? Here it is:

  • Custom script: call RemoveLocation(udg_<name of the point variable>)
Without <> ofc :). So, in parenthesis you just type the variable name (point) with a prefix udg_. Nothing is more simpler than that, see?

EDIT: Godless, we have the same amount of reps, but now you won't be able to get any more because you're dead, muahahaha! (an inside joke)
 
Status
Not open for further replies.
Top