• Check out the results of the Techtree Contest #19!
  • 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!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!

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)
 
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......
 
: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?
 
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.
 
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.
Back
Top