• 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!

Phoenix Wave v1.2

A spell for my ORPG.

Sends a phoenix to damage enemies. The phoenix ignites every enemy unit in it's way and leaves a trail of fire.

  • Phoenix Wave
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Phoenix Wave
    • Actions
      • -------- ------------------------------------------------------------------------ --------
      • -------- Searching for a free instance number --------
      • -------- ------------------------------------------------------------------------ --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • PWHas[PWLastRecycled] Equal to True
        • Then - Actions
          • Set PWMax = (PWMax + 1)
          • Set PWIndex = PWMax
        • Else - Actions
          • Set PWIndex = PWLastRecycled
          • Set PWLastRecycled = PWRecycledList[PWLastRecycled]
      • -------- ------------------------------------------------------------------------ --------
      • -------- Setting spell variables --------
      • -------- ------------------------------------------------------------------------ --------
      • Set PWCaster[PWIndex] = (Triggering unit)
      • Set PWTargetPoint[PWIndex] = (Target point of ability being cast)
      • Set PWCasterPoint[PWIndex] = (Position of PWCaster[PWIndex])
      • Set PWMaxDistance[PWIndex] = (700.00 + (100.00 x (Real((Level of Phoenix Wave for PWCaster[PWIndex])))))
      • Set PWDistance[PWIndex] = 0.00
      • Set PWDamage[PWIndex] = (50.00 x (Real((Level of Phoenix Wave for PWCaster[PWIndex]))))
      • Set PWHas[PWIndex] = True
      • Set PWCount = (PWCount + 1)
      • Unit - Create 1 Phoenix Dummy for (Triggering player) at PWCasterPoint[PWIndex] facing (Angle from PWCasterPoint[PWIndex] to PWTargetPoint[PWIndex]) degrees
      • Set PWAngle[PWIndex] = (Angle from PWCasterPoint[PWIndex] to PWTargetPoint[PWIndex])
      • Set PWPhoenix[PWIndex] = (Last created unit)
      • Custom script: set udg_PWDMGGroup[udg_PWIndex] = CreateGroup()
      • -------- ------------------------------------------------------------------------ --------
      • -------- If the spell is not used, turning on the loop trigger --------
      • -------- ------------------------------------------------------------------------ --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Phoenix Wave Loop <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Phoenix Wave Loop <gen>
        • Else - Actions
      • -------- ------------------------------------------------------------------------ --------
      • -------- If all the flames removed, turning the trigger on again --------
      • -------- ------------------------------------------------------------------------ --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Flame Removal Effect <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Flame Removal Effect <gen>
        • Else - Actions
  • Phoenix Wave Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer PWInteger) from 0 to PWMax, do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------ --------
          • -------- Checking if the instance is in use --------
          • -------- ------------------------------------------------------------------------ --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • PWHas[PWInteger] Equal to True
            • Then - Actions
              • -------- ------------------------------------------------------------------------ --------
              • -------- Checking if the spell is done --------
              • -------- ------------------------------------------------------------------------ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PWDistance[PWInteger] Less than PWMaxDistance[PWInteger]
                • Then - Actions
                  • Set PWDistance[PWInteger] = (PWDistance[PWInteger] + 40.00)
                  • Set TempLoc = (PWCasterPoint[PWInteger] offset by PWDistance[PWInteger] towards PWAngle[PWInteger] degrees)
                  • Unit - Move PWPhoenix[PWInteger] instantly to TempLoc
                  • Set TempInt = (Level of Phoenix Wave for PWCaster[PWInteger])
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within 150.00 of TempLoc matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((((Matching unit) is alive) Equal to True) and (((Matching unit) is in PWDMGGroup[PWInteger]) Equal to Fa and do (Actions)
                    • Loop - Actions
                      • Unit Group - Add (Picked unit) to PWDMGGroup[PWInteger]
                      • Unit - Cause PWCaster[PWInteger] to damage (Picked unit), dealing PWDamage[PWInteger] damage of attack type Pierce and damage type Normal
                      • Unit - Create 1 Dummy for (Owner of PWCaster[PWInteger]) at TempLoc facing Default building facing degrees
                      • Set TempUnit = (Last created unit)
                      • Unit - Add Flames to TempUnit
                      • Unit - Set level of Flames for TempUnit to TempInt
                      • Unit - Add a 2.00 second Generic expiration timer to TempUnit
                      • Unit - Order TempUnit to Neutral Alchemist - Acid Bomb (Picked unit)
                  • -------- ------------------------------------------------------------------------ --------
                  • -------- The flame effects, no it creates at each 120 distance --------
                  • -------- ------------------------------------------------------------------------ --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (PWDistance[PWInteger] mod 120.00) Equal to 0.00
                    • Then - Actions
                      • Unit - Create 1 Flames for (Owner of PWCaster[PWInteger]) at TempLoc facing PWAngle[PWInteger] degrees
                      • Unit - Add Flames Damage to (Last created unit)
                      • Unit - Set level of Flames Damage for (Last created unit) to TempInt
                      • Unit - Add a 2.50 second Generic expiration timer to (Last created unit)
                    • Else - Actions
                  • Custom script: call RemoveLocation (udg_TempLoc)
                • Else - Actions
                  • -------- ------------------------------------------------------------------------ --------
                  • -------- Removing leaks, reducing spell counter and setting new free instance number --------
                  • -------- ------------------------------------------------------------------------ --------
                  • Unit - Explode PWPhoenix[PWInteger]
                  • Custom script: call DestroyGroup (udg_PWDMGGroup[udg_PWInteger])
                  • Custom script: call RemoveLocation (udg_PWTargetPoint[udg_PWInteger])
                  • Custom script: call RemoveLocation (udg_PWCasterPoint[udg_PWInteger])
                  • Set PWCount = (PWCount - 1)
                  • Set PWHas[PWInteger] = False
                  • Set PWRecycledList[PWInteger] = PWLastRecycled
                  • Set PWLastRecycled = PWInteger
                  • -------- ------------------------------------------------------------------------ --------
                  • -------- Turning the trigger off if the spell counter is 0 --------
                  • -------- ------------------------------------------------------------------------ --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PWCount Equal to 0
                    • Then - Actions
                      • Set PWRecycledList[PWInteger] = 0
                      • Set PWLastRecycled = 0
                      • Set PWMax = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
            • Else - Actions
  • Flame Removal Effect
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Flames
    • Actions
      • Set TempLoc = (Position of (Triggering unit))
      • Special Effect - Create a special effect at TempLoc using Abilities\Weapons\RedDragonBreath\RedDragonMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Custom script: call RemoveLocation (udg_TempLoc)
      • Set TempGroup = (Units of type Flames)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in TempGroup) Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • Custom script: call DestroyGroup (udg_TempGroup)
v1.2
minor fixes
v1.1
fixed dummy
fixed hotkey
fixed system
removed init trigger
added documentation
added effect trigger turn off


Keywords:
phoenix, fire, flame, spell, damage, ignite, burn, BUUUUUUUUUUUUUURN, death, kill, destroy, ruin, lit, spellbreaker, warrior
Contents

Just another Warcraft III map (Map)

Reviews
19th Jun 2011 Maker: Approved. You should add improting instructions into the map.
19th Jun 2011
Maker:
Approved. You should add improting instructions into the map.
 
The triggering looks very good...

  • Unit Group - Remove all units from PWDMGGroup[PWInteger]
Doesn't destroying the group automatically remove all of the units?

Perhaps set Picked Unit to a variable, as you're calling it three times...

That's... really all that I've found. I'm not sure about the first one, either. Good job on this spell, the triggering looks very good.
 
Not Marshal ~.~ -h
Maaan I gave you 3 opinions. Now which one?

The triggering looks very good...

  • Unit Group - Remove all units from PWDMGGroup[PWInteger]
Doesn't destroying the group automatically remove all of the units?

Perhaps set Picked Unit to a variable, as you're calling it three times...

That's... really all that I've found. I'm not sure about the first one, either. Good job on this spell, the triggering looks very good.

Well, I should do that because I create the groups at each instance, so it would be better. Moment and I change it.
 
That's better than Dragon Slave from Lina Inverse.
5/5:thumbs_up:
Just a sugestion: The explosions would be at the same time the phoenix runs to the point, but a way or another, it's awesome!:grin:
 
Back
Top