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

Fire Fury 1.0

Jut another GUI and MUI spell I made.

Description : Summons and launches 2 fireballs in an arc towards the targeted area. Fireballs which hit an ennemy will wound them once and then keep moving (if allowed to). Once they collide, the explosion produced will double the damages in an AoE.

Nothing special really, but I made as many modifiable stats for the spell as I could for now (i.e.: allowing fireballs to go through water, over cliffs or even hit buildings or not for instance).

I'm currently planning on adding a DOT effect after the final explosion hits ennemies, but not sure if I'll make it yet.

Go to the "Documentation" category for additionnal informations and the importation instructions.

I hope you guys will enjoy, comment and rate it !


Version 1.0 Released !


/!\ Due to my French version of the World Editor, I can't post the triggers using the Hive workshop's code. I'd be pleased if anyone could do it for me in a PM or in the comments.

Keywords:
fire, fury, AoE, fireball, fireballs, active, projectile, mui, gui, bluebay
Contents

Fire fury 1.0 (Map)

Reviews
Fire Fury 1.0 | Reviewed by Maker | 7th May 2013 APPROVED The ability is MUI and leakless You could have a separate configuration trigger You could ulitize equations for the ability level dependent data instead...

Moderator

M

Moderator


Fire Fury 1.0 | Reviewed by Maker | 7th May 2013
APPROVED


126248-albums6177-picture66521.png


  • The ability is MUI and leakless
126248-albums6177-picture66523.png


  • You could have a separate configuration trigger
  • You could ulitize equations for the ability level dependent
    data instead of three if/then/elses
  • You are setting/removing the same points in the first trigger,
    position of triggering unit and position of FF_caster,
    point to create the dummy and position of dummy,
    target point of ability being cast x2
    And once more in the looping trigger
  • You could use dynamic indexing that removes expired
    instances and frees indexes immediately
  • Use proper tree detection
  • You are doing checks in the looping trigger even if the dummy
    has been killed already
  • Dummy units do not need spell immunity or invulnerability ability,
    Locust makes them invulnerable
  • It would look better if you would allow the fire balls
    to play a death animation
126248-albums6177-picture66524.png
[tr]
 
Level 23
Joined
Oct 20, 2012
Messages
3,075
TRIGGERS:

  • Fire Fury Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Fire fury
    • Actions
      • -------- --------------------------------------------------------------------- --------
      • -------- PART ONE - Casting Initialization & Level Settings --------
      • -------- --------------------------------------------------------------------- --------
      • -------- XX Sets temporary locs XX --------
      • Set FF_TempPoint1 = (Position of (Triggering unit))
      • Set FF_TempPoint2 = (Target point of ability being cast)
      • -------- << Sets minimal distance (default : 0.00 (= none)) >> --------
      • -------- It is recommended to set it as the same as the AoE effect (default = 200.00) to prevent any abuse --------
      • Set FF_MinimalDistance = 0.00
      • -------- XX Checks for minimal distance XX --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Distance between FF_TempPoint1 and FF_TempPoint2) Less than FF_MinimalDistance
        • Then - Actions
          • -------- XX Sets the sound & message error player XX --------
          • Custom script: if GetLocalPlayer() == GetOwningPlayer(GetTriggerUnit()) then
          • -------- << Sets the error sound played >> --------
          • Sound - Play No sound
          • -------- << Sets the error message displayed >> --------
          • Game - Display to (All players) the text: <Empty String>
          • -------- XX Removes the player error condition XX --------
          • Custom script: endif
          • -------- XX Stops the caster XX --------
          • Unit - Order (Triggering unit) to Stop
          • -------- XX Skips remaining actions and cancels the spell XX --------
          • Skip remaining actions
        • Else - Actions
      • -------- XX Removes loc leaks XX --------
      • Custom script: call RemoveLocation(udg_FF_TempPoint1)
      • Custom script: call RemoveLocation(udg_FF_TempPoint2)
      • -------- XX Adds one more spell XX --------
      • Set FF_Integer1 = (FF_Integer1 + 1)
      • -------- XX Sets the Caster XX --------
      • Set FF_Caster[FF_Integer1] = (Triggering unit)
      • -------- << Sets the distance between the Caster and the fireballs spawning location >> --------
      • Set FF_DistanceCast = 60.00
      • -------- Level Settings --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of (Ability being cast) for FF_Caster[FF_Integer1]) Equal to 1
        • Then - Actions
          • -------- << Sets the damages once a fireball hits a single target >> --------
          • Set FF_SingleDamages[FF_Integer1] = 75.00
          • -------- << Sets the damages when the fireballs collide with each other (AoE) >> --------
          • Set FF_AoEDamages[FF_Integer1] = 150.00
          • -------- << Sets the size of the final AoE effect if the fireballs collide with each other >> --------
          • Set FF_FinalAoE[FF_Integer1] = 200.00
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of (Ability being cast) for FF_Caster[FF_Integer1]) Equal to 2
        • Then - Actions
          • Set FF_SingleDamages[FF_Integer1] = 90.00
          • Set FF_AoEDamages[FF_Integer1] = 180.00
          • Set FF_FinalAoE[FF_Integer1] = 200.00
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of (Ability being cast) for FF_Caster[FF_Integer1]) Equal to 3
        • Then - Actions
          • Set FF_SingleDamages[FF_Integer1] = 115.00
          • Set FF_AoEDamages[FF_Integer1] = 230.00
          • Set FF_FinalAoE[FF_Integer1] = 200.00
        • Else - Actions
      • -------- --------------------------------------------------------------------- --------
      • -------- PART TWO : Dummy Unit setup --------
      • -------- --------------------------------------------------------------------- --------
      • -------- XX Sets temporary locs XX --------
      • Set FF_TempPoint1 = (Position of FF_Caster[FF_Integer1])
      • Set FF_TempPoint2 = (Target point of ability being cast)
      • -------- XX Sets the angle between the Caster and the targeted area XX --------
      • Set FF_Angle[FF_Integer1] = (Angle from FF_TempPoint1 to FF_TempPoint2)
      • -------- XX Sets temporary loc XX --------
      • Set FF_TempPoint3 = (FF_TempPoint1 offset by FF_DistanceCast towards FF_Angle[FF_Integer1] degrees)
      • -------- [[ Creates and sets the dummy which will move in a straight line ]] --------
      • Unit - Create 1 Dummy Line Unit for (Owner of FF_Caster[FF_Integer1]) at FF_TempPoint3 facing Default building facing degrees
      • Set FF_DummyUnit[FF_Integer1] = (Last created unit)
      • -------- XX Removes loc leaks XX --------
      • Custom script: call RemoveLocation(udg_FF_TempPoint1)
      • Custom script: call RemoveLocation(udg_FF_TempPoint2)
      • Custom script: call RemoveLocation(udg_FF_TempPoint3)
      • -------- --------------------------------------------------------------------- --------
      • -------- PART THREE : Fireballs setup --------
      • -------- --------------------------------------------------------------------- --------
      • -------- << Sets the starting distance between the two fireballs (actually, between the dummy and the fireball itself, so (Distance between fireballs/2)) >> --------
      • Set FF_FireBallDistanceInit = 50.00
      • -------- XX Sets temporary locs XX --------
      • Set FF_TempPoint1 = (Position of FF_DummyUnit[FF_Integer1])
      • Set FF_TempPoint2 = (FF_TempPoint1 offset by FF_FireBallDistanceInit towards (FF_Angle[FF_Integer1] + 90.00) degrees)
      • Set FF_TempPoint3 = (FF_TempPoint1 offset by FF_FireBallDistanceInit towards (FF_Angle[FF_Integer1] - 90.00) degrees)
      • -------- [[ Spawns and sets fireballs ]] --------
      • Unit - Create 1 Fireball for (Owner of FF_Caster[FF_Integer1]) at FF_TempPoint2 facing FF_Angle[FF_Integer1] degrees
      • Set FF_FireBall1[FF_Integer1] = (Last created unit)
      • Unit - Create 1 Fireball for (Owner of FF_Caster[FF_Integer1]) at FF_TempPoint3 facing FF_Angle[FF_Integer1] degrees
      • Set FF_FireBall2[FF_Integer1] = (Last created unit)
      • -------- XX Removes loc leaks XX --------
      • Custom script: call RemoveLocation(udg_FF_TempPoint1)
      • Custom script: call RemoveLocation(udg_FF_TempPoint2)
      • Custom script: call RemoveLocation(udg_FF_TempPoint3)
      • -------- --------------------------------------------------------------------- --------
      • -------- PART FOUR : Data & Visual Settings --------
      • -------- --------------------------------------------------------------------- --------
      • -------- XX Sets temporary locs XX --------
      • Set FF_TempPoint1 = (Position of FF_DummyUnit[FF_Integer1])
      • Set FF_TempPoint2 = (Target point of ability being cast)
      • -------- XX Sets the distance between the caster and the targeted area XX --------
      • Set FF_FullDistance[FF_Integer1] = (Distance between FF_TempPoint1 and FF_TempPoint2)
      • -------- << Sets if allowed to keep moving even if hitting a single target >> --------
      • Set FF_AllowedToKeepMoving[FF_Integer1] = True
      • -------- << Sets the fireballs AoE size >> --------
      • Set FF_FireBallAoE[FF_Integer1] = 75.00
      • -------- << Sets if the fireballs will hit (deals damages to) buildings, go through, or disappear once they hit one >> --------
      • Set FF_HitBuildings[FF_Integer1] = True
      • Set FF_GoThroughBuildings[FF_Integer1] = False
      • -------- << Sets if the final explosion will hit buildings >> --------
      • Set FF_BuildingAoE[FF_Integer1] = False
      • -------- << Sets if the fireballs will destroy trees, go through, or disappear once they hit one >> --------
      • Set FF_KillTrees[FF_Integer1] = True
      • Set FF_GoThroughTrees[FF_Integer1] = True
      • -------- << Sets if the final explosion will destroy trees >> --------
      • Set FF_KillTreesAoE[FF_Integer1] = False
      • -------- << Sets if allowed to go through water >> --------
      • Set FF_AllowWater[FF_Integer3] = False
      • -------- << Sets if allowed to fly over cliffs & doodads >> --------
      • Set FF_AllowCliffs[FF_Integer1] = False
      • -------- << Sets the fireballs height >> --------
      • Animation - Change FF_FireBall1[FF_Integer1] flying height to 60.00 at 0.00
      • Animation - Change FF_FireBall2[FF_Integer1] flying height to 60.00 at 0.00
      • -------- << Sets the special effect if a fireball hits an ennemy >> --------
      • Set FF_SingleUnitEffect[FF_Integer1] = Abilities\Weapons\FireBallMissile\FireBallMissile.mdl
      • -------- << Sets the explosion effect if the fireballs collide >> --------
      • Set FF_ExplosionEffect[FF_Integer1] = Abilities\Spells\Other\Doom\DoomDeath.mdl
      • -------- << Sets the fireballs speed >> --------
      • Set FF_FireBallSpeed[FF_Integer1] = 15.00
      • -------- XX Sets the additionnal distance for the fireballs in the arc effect XX --------
      • Set FF_FireBallAdditionnalDistance[FF_Integer1] = FF_FireBallDistanceInit
      • -------- << Sets the arc of the fireballs >> --------
      • Set FF_FireBallArc[FF_Integer1] = 0.15
      • -------- XX Sets the arc settings for the fireballs XX --------
      • Set FF_FireBallArcSettings[FF_Integer1] = (FF_FullDistance[FF_Integer1] x FF_FireBallArc[FF_Integer1])
      • -------- XX Resets distance reached XX --------
      • Set FF_DistanceReached[FF_Integer1] = 0.00
      • -------- XX Resets real timer for arc effect XX --------
      • Set FF_RealTimer[FF_Integer1] = 0.00
      • -------- XX Marks as undone XX --------
      • Set FF_Done[FF_Integer1] = False
      • -------- XX Removes loc leaks XX --------
      • Custom script: call RemoveLocation(udg_FF_TempPoint1)
      • Custom script: call RemoveLocation(udg_FF_TempPoint2)
      • -------- XX Setup ending : checks if the loop trigger is already running XX --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FF_Integer2 Equal to 0
        • Then - Actions
          • Trigger - Turn on Fire Fury Loop <gen>
        • Else - Actions
      • Set FF_Integer2 = (FF_Integer2 + 1)
  • Fire Fury Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer FF_Integer3) from 1 to FF_Integer1, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • FF_Done[FF_Integer3] Equal to False
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FF_DistanceReached[FF_Integer3] Less than FF_FullDistance[FF_Integer3]
                • Then - Actions
                  • Set FF_DistanceReached[FF_Integer3] = (FF_DistanceReached[FF_Integer3] + FF_FireBallSpeed[FF_Integer3])
                  • Set FF_TempPoint1 = (Position of FF_DummyUnit[FF_Integer3])
                  • Set FF_TempPoint2 = (FF_TempPoint1 offset by FF_FireBallSpeed[FF_Integer3] towards FF_Angle[FF_Integer3] degrees)
                  • Unit - Move FF_DummyUnit[FF_Integer3] instantly to FF_TempPoint2
                  • Custom script: call RemoveLocation(udg_FF_TempPoint1)
                  • Custom script: call RemoveLocation(udg_FF_TempPoint2)
                  • Set FF_RealTimer[FF_Integer3] = (FF_RealTimer[FF_Integer3] + (180.00 / (FF_FullDistance[FF_Integer3] / FF_FireBallSpeed[FF_Integer3])))
                  • Set FF_FireBallDistance[FF_Integer3] = ((Sin(FF_RealTimer[FF_Integer3])) x FF_FireBallArcSettings[FF_Integer3])
                  • Set FF_FireBallTempAdd[FF_Integer3] = ((FF_FullDistance[FF_Integer3] - FF_DistanceReached[FF_Integer3]) x (FF_FireBallAdditionnalDistance[FF_Integer3] / 666.00))
                  • Set FF_FireBallDistance[FF_Integer3] = (FF_FireBallDistance[FF_Integer3] + FF_FireBallTempAdd[FF_Integer3])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (FF_FireBall1[FF_Integer3] is alive) Equal to True
                    • Then - Actions
                      • Set FF_TempPoint1 = (Position of FF_DummyUnit[FF_Integer3])
                      • Set FF_TempPoint2 = (FF_TempPoint1 offset by FF_FireBallDistance[FF_Integer3] towards (FF_Angle[FF_Integer3] + 90.00) degrees)
                      • Set FF_TempPoint3 = (Position of FF_FireBall1[FF_Integer3])
                      • Unit - Move FF_FireBall1[FF_Integer3] instantly to FF_TempPoint2, facing (Angle from FF_TempPoint3 to FF_TempPoint1) degrees
                      • Set FF_TempGroup = (Units within FF_FireBallAoE[FF_Integer3] of FF_TempPoint3 matching ((((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True)) and ((((Matching unit) belongs to an enemy of (Owner of FF_Caster[FF_Integer3])) Equal to
                      • Unit Group - Pick every unit in FF_TempGroup and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (FF_FireBall1[FF_Integer3] is alive) Equal to True
                              • ((Picked unit) is in FF_GroupFireBall1[FF_Integer3]) Equal to False
                            • Then - Actions
                              • Unit Group - Add (Picked unit) to FF_GroupFireBall1[FF_Integer3]
                              • Unit - Cause FF_Caster[FF_Integer3] to damage (Picked unit), dealing FF_SingleDamages[FF_Integer3] damage of attack type Spells and damage type Fire
                              • Special Effect - Create a special effect attached to the chest of (Picked unit) using FF_SingleUnitEffect[FF_Integer3]
                              • Special Effect - Destroy (Last created special effect)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_AllowedToKeepMoving[FF_Integer3] Equal to False
                                • Then - Actions
                                  • Unit - Remove FF_FireBall1[FF_Integer3] from the game
                                  • Unit Group - Remove all units from FF_GroupFireBall1[FF_Integer3]
                                • Else - Actions
                            • Else - Actions
                      • Custom script: call DestroyGroup(udg_FF_TempGroup)
                      • Destructible - Pick every destructible within FF_FireBallAoE[FF_Integer3] of FF_TempPoint3 and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • FF_KillTrees[FF_Integer3] Equal to True
                            • Then - Actions
                              • Destructible - Kill (Picked destructible)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_GoThroughTrees[FF_Integer3] Equal to False
                                • Then - Actions
                                  • Unit - Kill FF_FireBall1[FF_Integer3]
                                • Else - Actions
                            • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Terrain pathing at FF_TempPoint3 of type Amphibious Pathing is off) Equal to True
                        • Then - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • FF_AllowWater[FF_Integer3] Equal to False
                            • Then - Actions
                              • Unit - Kill FF_FireBall1[FF_Integer3]
                            • Else - Actions
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Terrain pathing at FF_TempPoint3 of type Walkability is off) Equal to True
                              • FF_AllowCliffs[FF_Integer3] Equal to False
                            • Then - Actions
                              • Unit - Kill FF_FireBall1[FF_Integer3]
                            • Else - Actions
                      • Set FF_TempGroup = (Units within FF_FireBallAoE[FF_Integer3] of FF_TempPoint3 matching ((((Matching unit) is A structure) Equal to True) and (((Matching unit) is alive) Equal to True)))
                      • Unit Group - Pick every unit in FF_TempGroup and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (FF_FireBall1[FF_Integer3] is alive) Equal to True
                              • FF_HitBuildings[FF_Integer3] Equal to True
                            • Then - Actions
                              • Unit Group - Add (Picked unit) to FF_GroupFireBall1[FF_Integer3]
                              • Unit - Cause FF_Caster[FF_Integer3] to damage (Picked unit), dealing FF_SingleDamages[FF_Integer3] damage of attack type Spells and damage type Fire
                              • Special Effect - Create a special effect at FF_TempPoint3 using FF_SingleUnitEffect[FF_Integer3]
                              • Special Effect - Destroy (Last created special effect)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_GoThroughBuildings[FF_Integer3] Equal to False
                                • Then - Actions
                                  • Unit - Remove FF_FireBall1[FF_Integer3] from the game
                                  • Unit Group - Remove all units from FF_GroupFireBall1[FF_Integer3]
                                • Else - Actions
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_GoThroughBuildings[FF_Integer3] Equal to False
                                • Then - Actions
                                  • Special Effect - Create a special effect at FF_TempPoint3 using FF_SingleUnitEffect[FF_Integer3]
                                  • Special Effect - Destroy (Last created special effect)
                                  • Unit - Remove FF_FireBall1[FF_Integer3] from the game
                                  • Unit Group - Remove all units from FF_GroupFireBall1[FF_Integer3]
                                • Else - Actions
                      • Custom script: call DestroyGroup(udg_FF_TempGroup)
                      • Custom script: call RemoveLocation(udg_FF_TempPoint1)
                      • Custom script: call RemoveLocation(udg_FF_TempPoint2)
                      • Custom script: call RemoveLocation(udg_FF_TempPoint3)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (FF_FireBall2[FF_Integer3] is alive) Equal to True
                    • Then - Actions
                      • Set FF_TempPoint1 = (Position of FF_DummyUnit[FF_Integer3])
                      • Set FF_TempPoint2 = (FF_TempPoint1 offset by FF_FireBallDistance[FF_Integer3] towards (FF_Angle[FF_Integer3] - 90.00) degrees)
                      • Set FF_TempPoint3 = (Position of FF_FireBall2[FF_Integer3])
                      • Unit - Move FF_FireBall2[FF_Integer3] instantly to FF_TempPoint2, facing (Angle from FF_TempPoint3 to FF_TempPoint1) degrees
                      • Set FF_TempGroup = (Units within FF_FireBallAoE[FF_Integer3] of FF_TempPoint3 matching ((((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True)) and ((((Matching unit) belongs to an enemy of (Owner of FF_Caster[FF_Integer3])) Equal to
                      • Unit Group - Pick every unit in FF_TempGroup and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (FF_FireBall2[FF_Integer3] is alive) Equal to True
                              • ((Picked unit) is in FF_GroupFireBall2[FF_Integer3]) Equal to False
                            • Then - Actions
                              • Unit Group - Add (Picked unit) to FF_GroupFireBall2[FF_Integer3]
                              • Unit - Cause FF_Caster[FF_Integer3] to damage (Picked unit), dealing FF_SingleDamages[FF_Integer3] damage of attack type Spells and damage type Fire
                              • Special Effect - Create a special effect attached to the chest of (Picked unit) using FF_SingleUnitEffect[FF_Integer3]
                              • Special Effect - Destroy (Last created special effect)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_AllowedToKeepMoving[FF_Integer3] Equal to False
                                • Then - Actions
                                  • Unit - Remove FF_FireBall2[FF_Integer3] from the game
                                  • Unit Group - Remove all units from FF_GroupFireBall2[FF_Integer3]
                                • Else - Actions
                            • Else - Actions
                      • Custom script: call DestroyGroup(udg_FF_TempGroup)
                      • Destructible - Pick every destructible within FF_FireBallAoE[FF_Integer3] of FF_TempPoint3 and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • FF_KillTrees[FF_Integer3] Equal to True
                            • Then - Actions
                              • Destructible - Kill (Picked destructible)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_GoThroughTrees[FF_Integer3] Equal to False
                                • Then - Actions
                                  • Unit - Kill FF_FireBall2[FF_Integer3]
                                • Else - Actions
                            • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Terrain pathing at FF_TempPoint3 of type Amphibious Pathing is off) Equal to True
                        • Then - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • FF_AllowWater[FF_Integer3] Equal to False
                            • Then - Actions
                              • Unit - Kill FF_FireBall2[FF_Integer3]
                            • Else - Actions
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Terrain pathing at FF_TempPoint3 of type Walkability is off) Equal to True
                              • FF_AllowCliffs[FF_Integer3] Equal to False
                            • Then - Actions
                              • Unit - Kill FF_FireBall2[FF_Integer3]
                            • Else - Actions
                      • Set FF_TempGroup = (Units within FF_FireBallAoE[FF_Integer3] of FF_TempPoint3 matching ((((Matching unit) is A structure) Equal to True) and (((Matching unit) is alive) Equal to True)))
                      • Unit Group - Pick every unit in FF_TempGroup and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (FF_FireBall2[FF_Integer3] is alive) Equal to True
                              • FF_HitBuildings[FF_Integer3] Equal to True
                            • Then - Actions
                              • Unit Group - Add (Picked unit) to FF_GroupFireBall2[FF_Integer3]
                              • Unit - Cause FF_Caster[FF_Integer3] to damage (Picked unit), dealing FF_SingleDamages[FF_Integer3] damage of attack type Spells and damage type Fire
                              • Special Effect - Create a special effect at FF_TempPoint3 using FF_SingleUnitEffect[FF_Integer3]
                              • Special Effect - Destroy (Last created special effect)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_GoThroughBuildings[FF_Integer3] Equal to False
                                • Then - Actions
                                  • Unit - Remove FF_FireBall2[FF_Integer3] from the game
                                  • Unit Group - Remove all units from FF_GroupFireBall2[FF_Integer3]
                                • Else - Actions
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_GoThroughBuildings[FF_Integer3] Equal to False
                                • Then - Actions
                                  • Special Effect - Create a special effect at FF_TempPoint3 using FF_SingleUnitEffect[FF_Integer3]
                                  • Special Effect - Destroy (Last created special effect)
                                  • Unit - Remove FF_FireBall2[FF_Integer3] from the game
                                  • Unit Group - Remove all units from FF_GroupFireBall2[FF_Integer3]
                                • Else - Actions
                      • Custom script: call DestroyGroup(udg_FF_TempGroup)
                      • Custom script: call RemoveLocation(udg_FF_TempPoint1)
                      • Custom script: call RemoveLocation(udg_FF_TempPoint2)
                      • Custom script: call RemoveLocation(udg_FF_TempPoint3)
                    • Else - Actions
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (FF_FireBall1[FF_Integer3] is alive) Equal to True
                      • (FF_FireBall2[FF_Integer3] is alive) Equal to True
                    • Then - Actions
                      • Set FF_TempPoint1 = (Position of FF_DummyUnit[FF_Integer3])
                      • Special Effect - Create a special effect at FF_TempPoint1 using FF_ExplosionEffect[FF_Integer3]
                      • Special Effect - Destroy (Last created special effect)
                      • Set FF_TempGroup = (Units within FF_FinalAoE[FF_Integer3] of FF_TempPoint1 matching (((((Matching unit) is A flying unit) Equal to False) and (((Matching unit) is alive) Equal to True)) and ((((Matching unit) belongs to an enemy of (Owner of FF_Caster[FF_Integer3])) Equal to Tr
                      • Unit Group - Pick every unit in FF_TempGroup and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • ((Picked unit) is A structure) Equal to True
                            • Then - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • FF_BuildingAoE[FF_Integer3] Equal to True
                                • Then - Actions
                                  • Unit - Cause FF_Caster[FF_Integer3] to damage (Picked unit), dealing FF_AoEDamages[FF_Integer3] damage of attack type Spells and damage type Fire
                                • Else - Actions
                            • Else - Actions
                              • Unit - Cause FF_Caster[FF_Integer3] to damage (Picked unit), dealing FF_AoEDamages[FF_Integer3] damage of attack type Spells and damage type Fire
                      • Custom script: call RemoveLocation(udg_FF_TempPoint1)
                      • Unit - Remove FF_FireBall1[FF_Integer3] from the game
                      • Unit - Remove FF_FireBall2[FF_Integer3] from the game
                    • Else - Actions
                      • Unit - Kill FF_FireBall1[FF_Integer3]
                      • Unit - Kill FF_FireBall2[FF_Integer3]
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • FF_KillTreesAoE[FF_Integer3] Equal to True
                    • Then - Actions
                      • Destructible - Pick every destructible within FF_FinalAoE[FF_Integer3] of FF_TempPoint1 and do (Destructible - Kill (Picked destructible))
                    • Else - Actions
                  • Unit Group - Remove all units from FF_GroupFireBall1[FF_Integer3]
                  • Unit Group - Remove all units from FF_GroupFireBall2[FF_Integer3]
                  • Unit - Remove FF_DummyUnit[FF_Integer3] from the game
                  • Set FF_Done[FF_Integer3] = True
                  • Set FF_Integer2 = (FF_Integer2 - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • FF_Integer2 Equal to 0
                    • Then - Actions
                      • Set FF_Integer1 = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
            • Else - Actions


I like the spell, simple but I like it.. dunno about the code though, too lazy to look at that long code.. X3
222907-albums6215-picture68664.gif
 

Ralle

Owner
Level 77
Joined
Oct 6, 2004
Messages
10,098
I found some leaks:
Trigger: Trig_Show_text_damages_Actions
Code: call ShowTextTagForceBJ( true, GetLastCreatedTextTag(), GetForceOfPlayer(GetOwningPlayer(GetEventDamageSource())) )
Code: call ShowTextTagForceBJ( true, GetLastCreatedTextTag(), GetForceOfPlayer(GetOwningPlayer(GetTriggerUnit())) )
Call to GetForceOfPlayer leaks

Same in Trig_Show_damages_Actions

You leak two locations in Trig_Map_Initialization_Actions
PolarProjectionBJ(GetRectCenter(gg_rct_R__gion_000), 500.00, udg_Angle), GetRectCenter(gg_rct_R__gion_000) )
call to GetRectCenter returns a location and so does PolarProjectionsBJ, they're not freed.
 
Top