• 🏆 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 Wave v1.2

[TD] Fire Wave [/TD]
Slam the ground, summoning a wave of fire. The wave will move towards the target point, damaging nearby enemy ground unit in line and dealing big damage to all enemy in AoE when explode, also knocking them back.

LEVELS
Level 1: 20 line damage, 150 AoE damage.
Level 2: 30 line damage, 200 AoE damage.
Level 3: 40 line damage, 300 AoE damage.

[TD] SAMPLE IMAGES [/TD]

Sample One

Sample Two

216436-albums5924-picture62770.jpg
216436-albums5924-picture62771.jpg


[TD] CHANGELOGS: [/TD]
[TD]v1.0 - Initial Release
v1.1 - Fixed knockback system
v1.2 - A little fix
[/TD]

[TD] Credits: [/TD]
[TD]- Magtheridon96
- Hanky
[/TD]

FW Configuration

FW Cast

FW Loop

K Configuration

K Cast

K Loop

  • Events
    • Map initialization
  • Conditions
  • Actions
    • Set Temp_Point = (Center of (Playable map area))
    • Unit - Create 1 Peasant for Neutral Passive at Temp_Point facing (Random angle) degrees
    • Custom script: call RemoveLocation(udg_Temp_Point)
    • Set Harvester = (Last created unit)
    • Unit - Make Harvester Invulnerable
    • Unit - Hide Harvester
    • -------- CONFIGURABLE --------
    • Set FW_Ability = Fire Wave
    • -------- set the speed of missile (wave) --------
    • Set FW_Missile_Speed[1] = 40.00
    • Set FW_Missile_Speed[2] = 40.00
    • Set FW_Missile_Speed[3] = 40.00
    • -------- set the damage of missile (wave) --------
    • Set FW_Missile_Damage[1] = 20.00
    • Set FW_Missile_Damage[2] = 30.00
    • Set FW_Missile_Damage[3] = 40.00
    • -------- set the AoE of missile (wave) --------
    • Set FW_Missile_AoE[1] = 150.00
    • Set FW_Missile_AoE[2] = 150.00
    • Set FW_Missile_AoE[3] = 150.00
    • -------- set the damage of explosion --------
    • Set FW_Explosion_Damage[1] = 150.00
    • Set FW_Explosion_Damage[2] = 200.00
    • Set FW_Explosion_Damage[3] = 300.00
    • -------- set the AoE of explosion --------
    • Set FW_Explosion_AoE[1] = 400.00
    • Set FW_Explosion_AoE[2] = 450.00
    • Set FW_Explosion_AoE[3] = 500.00
    • -------- set the missile (wave) spawn effect --------
    • Set FW_Effect[1] = Abilities\Spells\Other\Doom\DoomDeath.mdl
    • -------- set the effect when missile (wave) is moving --------
    • Set FW_Effect[2] = Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
    • -------- set the effect when missile (wave) is explode --------
    • Set FW_Effect[3] = Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
    • -------- set the effect to target in explosion --------
    • Set FW_Effect[4] = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
    • -------- set the effect to target (mechanical) in explosion --------
    • Set FW_Effect[5] = Abilities\Weapons\GlaiveMissile\GlaiveMissileTarget.mdl
    • -------- set the missile (wave) option when moving, 'True' nearby tree of missile (wave) will be destroy, 'False' nearby tree of missile (wave) will not destroy --------
    • Set FW_Destroy_Tree = True
    • -------- set the attack type of spell --------
    • Set FW_Attack_Type = Spells
    • -------- set the damage type of spell --------
    • Set FW_Damage_Type = Fire
  • Events
    • Unit - A unit Starts the effect of an ability
  • Conditions
    • (Ability being cast) Equal to FW_Ability
  • Actions
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • FW_Index_Size Equal to 0
      • Then - Actions
        • Trigger - Turn on FW Loop <gen>
      • Else - Actions
    • Set FW_Index_Size = (FW_Index_Size + 1)
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • FW_Index_Size Greater than FW_Max_Index
      • Then - Actions
        • Set FW_Index[FW_Index_Size] = FW_Index_Size
        • Set FW_Max_Index = FW_Index_Size
      • Else - Actions
    • Set FW_Current_Index = FW_Index[FW_Index_Size]
    • Set FW_Caster[FW_Current_Index] = (Triggering unit)
    • Set FW_Player[FW_Current_Index] = (Owner of FW_Caster[FW_Current_Index])
    • Set FW_Level = (Level of (Ability being cast) for FW_Caster[FW_Current_Index])
    • Set FW_Missile_Speed[FW_Current_Index] = FW_Missile_Speed[FW_Level]
    • Set FW_Missile_Damage[FW_Current_Index] = FW_Missile_Damage[FW_Level]
    • Set FW_Missile_AoE[FW_Current_Index] = FW_Missile_AoE[FW_Level]
    • Set FW_Explosion_Damage[FW_Current_Index] = FW_Explosion_Damage[FW_Level]
    • Set FW_Explosion_AoE[FW_Current_Index] = FW_Explosion_AoE[FW_Level]
    • Set Temp_Point = (Position of FW_Caster[FW_Current_Index])
    • Set Temp_Point2 = (Target point of ability being cast)
    • Set FW_Angle[FW_Current_Index] = (Angle from Temp_Point to Temp_Point2)
    • Set FW_Spawn_Point = (Temp_Point offset by 100.00 towards FW_Angle[FW_Current_Index] degrees)
    • Custom script: call RemoveLocation(udg_Temp_Point)
    • Set FW_Distance[FW_Current_Index] = (Distance between FW_Spawn_Point and Temp_Point2)
    • Custom script: call RemoveLocation(udg_Temp_Point2)
    • Custom script: set udg_FW_Damaged_Group[udg_FW_Current_Index] = CreateGroup()
    • Special Effect - Create a special effect at FW_Spawn_Point using FW_Effect[1]
    • Special Effect - Destroy (Last created special effect)
    • Unit - Create 1 Fire Wave Missile Dummy for FW_Player[FW_Current_Index] at FW_Spawn_Point facing FW_Angle[FW_Current_Index] degrees
    • Set FW_Missile[FW_Current_Index] = (Last created unit)
    • Unit - Turn collision for FW_Missile[FW_Current_Index] Off
    • Unit - Move FW_Missile[FW_Current_Index] instantly to FW_Spawn_Point
    • Custom script: call RemoveLocation(udg_FW_Spawn_Point)
  • Events
    • Time - Every 0.03 seconds of game time
  • Conditions
  • Actions
    • For each (Integer FW_Loop) from 1 to FW_Index_Size, do (Actions)
      • Loop - Actions
        • Set FW_Current_Index = FW_Index[FW_Loop]
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • FW_Distance[FW_Current_Index] Greater than 0.00
          • Then - Actions
            • Set Temp_Point = (Position of FW_Missile[FW_Current_Index])
            • Set Temp_Point2 = (Temp_Point offset by FW_Missile_Speed[FW_Current_Index] towards FW_Angle[FW_Current_Index] degrees)
            • Custom script: call RemoveLocation(udg_Temp_Point)
            • Unit - Move FW_Missile[FW_Current_Index] instantly to Temp_Point2, facing FW_Angle[FW_Current_Index] degrees
            • Set FW_Effect_Delay[FW_Current_Index] = (FW_Effect_Delay[FW_Current_Index] + 0.03)
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • FW_Effect_Delay[FW_Current_Index] Greater than or equal to 0.09
              • Then - Actions
                • Special Effect - Create a special effect at Temp_Point2 using FW_Effect[2]
                • Special Effect - Destroy (Last created special effect)
                • Set FW_Effect_Delay[FW_Current_Index] = 0.00
              • Else - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • FW_Destroy_Tree Equal to True
              • Then - Actions
                • Destructible - Pick every destructible within FW_Missile_AoE[FW_Current_Index] of Temp_Point2 and do (Actions)
                  • Loop - Actions
                    • Unit - Order Harvester to Harvest (Picked destructible)
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Current order of Harvester) Equal to (Order(harvest))
                      • Then - Actions
                        • Destructible - Kill (Picked destructible)
                      • Else - Actions
                    • Unit - Order Harvester to Stop
              • Else - Actions
            • Set Temp_Unit_Group = (Units within FW_Missile_AoE[FW_Current_Index] of Temp_Point2 matching ((((Matching unit) belongs to an ally of FW_Player[FW_Current_Index]) Equal to False) and ((((Matching unit) is dead) Equal to False) and ((((Matching unit) is A structure) Equal to False)
            • Unit Group - Pick every unit in Temp_Unit_Group and do (Actions)
              • Loop - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • ((Picked unit) is in FW_Damaged_Group[FW_Current_Index]) Equal to True
                  • Then - Actions
                  • Else - Actions
                    • Unit - Cause FW_Caster[FW_Current_Index] to damage (Picked unit), dealing FW_Missile_Damage[FW_Current_Index] damage of attack type FW_Attack_Type and damage type FW_Damage_Type
                    • Unit Group - Add (Picked unit) to FW_Damaged_Group[FW_Current_Index]
            • Custom script: call DestroyGroup(udg_Temp_Unit_Group)
            • Custom script: call RemoveLocation(udg_Temp_Point2)
            • Set FW_Distance[FW_Current_Index] = (FW_Distance[FW_Current_Index] - FW_Missile_Speed[FW_Current_Index])
          • Else - Actions
            • Set Temp_Point = (Position of FW_Missile[FW_Current_Index])
            • Special Effect - Create a special effect at Temp_Point using FW_Effect[3]
            • Special Effect - Destroy (Last created special effect)
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • FW_Destroy_Tree Equal to True
              • Then - Actions
                • Destructible - Pick every destructible within FW_Explosion_AoE[FW_Current_Index] of Temp_Point and do (Actions)
                  • Loop - Actions
                    • Unit - Order Harvester to Harvest (Picked destructible)
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Current order of Harvester) Equal to (Order(harvest))
                      • Then - Actions
                        • Destructible - Kill (Picked destructible)
                      • Else - Actions
                    • Unit - Order Harvester to Stop
              • Else - Actions
            • Unit - Create 1 Knockback Caster Dummy for FW_Player[FW_Current_Index] at Temp_Point facing (Random angle) degrees
            • Unit - Add Knockback to (Last created unit)
            • Set Temp_Unit_Group = (Units within FW_Explosion_AoE[FW_Current_Index] of Temp_Point matching ((((Matching unit) belongs to an ally of FW_Player[FW_Current_Index]) Equal to False) and ((((Matching unit) is dead) Equal to False) and (((Matching unit) is Magic Immune) Equal to False
            • Unit Group - Pick every unit in Temp_Unit_Group and do (Actions)
              • Loop - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • ((Picked unit) is Mechanical) Equal to True
                  • Then - Actions
                    • Special Effect - Create a special effect attached to the origin of (Picked unit) using FW_Effect[5]
                    • Special Effect - Destroy (Last created special effect)
                  • Else - Actions
                    • Special Effect - Create a special effect attached to the origin of (Picked unit) using FW_Effect[4]
                    • Special Effect - Destroy (Last created special effect)
                • Unit - Order (Last created unit) to Human Dragonhawk Rider - Aerial Shackles (Picked unit)
                • Unit - Cause FW_Caster[FW_Current_Index] to damage (Picked unit), dealing FW_Explosion_Damage[FW_Current_Index] damage of attack type FW_Attack_Type and damage type FW_Damage_Type
            • Custom script: call DestroyGroup(udg_Temp_Unit_Group)
            • Custom script: call RemoveLocation(udg_Temp_Point)
            • Unit - Kill (Last created unit)
            • Unit - Kill FW_Missile[FW_Current_Index]
            • Unit Group - Remove all units from FW_Damaged_Group[FW_Current_Index]
            • Custom script: call DestroyGroup(udg_FW_Damaged_Group[udg_FW_Current_Index])
            • Set FW_Index[FW_Loop] = FW_Index[FW_Index_Size]
            • Set FW_Index[FW_Index_Size] = FW_Current_Index
            • Set FW_Index_Size = (FW_Index_Size - 1)
            • Set FW_Loop = (FW_Loop - 1)
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • FW_Index_Size Equal to 0
              • Then - Actions
                • Trigger - Turn off (This trigger)
              • Else - Actions
  • Events
    • Map initialization
  • Conditions
  • Actions
    • -------- CONFIGURABLE --------
    • Set K_Ability = Knockback
    • -------- set the knockback distance --------
    • Set K_Distance[0] = 800.00
    • -------- set the knockback speed --------
    • Set K_Knock_Speed[0] = 20.00
    • -------- set the effect to target when start knocked --------
    • Set K_Effect[1] = <Empty String>
    • -------- set the effect to target when knocked back --------
    • Set K_Effect[2] = Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
    • -------- set the effect to target when finished knock --------
    • Set K_Effect[3] = <Empty String>
    • -------- set the target option when knocked, 'True' nearby tree of target will be destroy, 'False' nearby tree of target will not destroy --------
    • Set K_Destroy_Tree = True
  • Events
    • Unit - A unit Begins casting an ability
  • Conditions
    • (Ability being cast) Equal to K_Ability
  • Actions
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • K_Index_Size Equal to 0
      • Then - Actions
        • Trigger - Turn on K Loop <gen>
      • Else - Actions
    • Set K_Index_Size = (K_Index_Size + 1)
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • K_Index_Size Greater than K_Max_Index
      • Then - Actions
        • Set K_Index[K_Index_Size] = K_Index_Size
        • Set K_Max_Index = K_Index_Size
      • Else - Actions
    • Set K_Current_Index = K_Index[K_Index_Size]
    • Set K_Distance[K_Current_Index] = K_Distance[0]
    • Set K_Knock_Speed[K_Current_Index] = K_Knock_Speed[0]
    • Set K_Target[K_Current_Index] = (Target unit of ability being cast)
    • Set Temp_Point = (Position of (Triggering unit))
    • Set Temp_Point2 = (Position of K_Target[K_Current_Index])
    • Set K_Angle[K_Current_Index] = (Angle from Temp_Point to Temp_Point2)
    • Custom script: call RemoveLocation(udg_Temp_Point)
    • Custom script: call RemoveLocation(udg_Temp_Point2)
    • Special Effect - Create a special effect attached to the origin of K_Target[K_Current_Index] using K_Effect[1]
    • Special Effect - Destroy (Last created special effect)
    • Unit - Order (Triggering unit) to Stop
  • Events
    • Time - Every 0.03 seconds of game time
  • Conditions
  • Actions
    • For each (Integer K_Loop) from 1 to K_Index_Size, do (Actions)
      • Loop - Actions
        • Set K_Current_Index = K_Index[K_Loop]
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • K_Distance[K_Current_Index] Greater than 0.00
          • Then - Actions
            • Set Temp_Point = (Position of K_Target[K_Current_Index])
            • Set Temp_Point2 = (Temp_Point offset by K_Knock_Speed[K_Current_Index] towards K_Angle[K_Current_Index] degrees)
            • Custom script: call RemoveLocation(udg_Temp_Point)
            • Set K_Point_X = (X of Temp_Point2)
            • Set K_Point_Y = (Y of Temp_Point2)
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • (K_Target[K_Current_Index] is A flying unit) Equal to True
              • Then - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (Terrain pathing at Temp_Point2 of type Flyability is off) Equal to True
                  • Then - Actions
                    • Set K_Distance[K_Current_Index] = 0.00
                  • Else - Actions
                    • Custom script: call SetUnitX(udg_K_Target[udg_K_Current_Index], udg_K_Point_X)
                    • Custom script: call SetUnitY(udg_K_Target[udg_K_Current_Index], udg_K_Point_Y)
              • Else - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (Terrain pathing at Temp_Point2 of type Walkability is off) Equal to True
                  • Then - Actions
                    • Set K_Distance[K_Current_Index] = 0.00
                  • Else - Actions
                    • Custom script: call SetUnitX(udg_K_Target[udg_K_Current_Index], udg_K_Point_X)
                    • Custom script: call SetUnitY(udg_K_Target[udg_K_Current_Index], udg_K_Point_Y)
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • K_Destroy_Tree Equal to True
                  • Then - Actions
                    • Destructible - Pick every destructible within K_Target_AoE of Temp_Point2 and do (Actions)
                      • Loop - Actions
                        • Unit - Order Harvester to Harvest (Picked destructible)
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (Current order of Harvester) Equal to (Order(harvest))
                          • Then - Actions
                            • Destructible - Kill (Picked destructible)
                          • Else - Actions
                        • Unit - Order Harvester to Stop
                  • Else - Actions
            • Special Effect - Create a special effect attached to the origin of K_Target[K_Current_Index] using K_Effect[2]
            • Special Effect - Destroy (Last created special effect)
            • Custom script: call RemoveLocation(udg_Temp_Point2)
            • Set K_Distance[K_Current_Index] = (K_Distance[K_Current_Index] - K_Knock_Speed[K_Current_Index])
          • Else - Actions
            • Special Effect - Create a special effect attached to the origin of K_Target[K_Current_Index] using K_Effect[3]
            • Special Effect - Destroy (Last created special effect)
            • Set K_Index[K_Loop] = K_Index[K_Index_Size]
            • Set K_Index[K_Index_Size] = K_Current_Index
            • Set K_Index_Size = (K_Index_Size - 1)
            • Set K_Loop = (K_Loop - 1)
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • K_Index_Size Equal to 0
              • Then - Actions
                • Trigger - Turn off (This trigger)
              • Else - Actions

Keywords:
Fire, Flame, Wave, Explode, Explosion, Point Target.
Contents

Fire Wave v1.2 (Map)

Reviews
01:45, 8th Sep 2012 Magtheridon96: Okay, I will approve this system with the current knockback system, but it would still be far better if you used Bribe's knockback system. 3/5 for the effort and decency of the code. Good job, and good luck with...

Moderator

M

Moderator

01:45, 8th Sep 2012
Magtheridon96: Okay, I will approve this system with the current knockback system, but it would still be far better if you used Bribe's knockback system.

3/5 for the effort and decency of the code.
Good job, and good luck with that up-coming "Quick Sand" spell of yours.
 
Level 13
Joined
Mar 29, 2012
Messages
530
eemmmhh....
maybe i will use Bribe's Knockback in the next version, because now iam focusing to make a new spell (Quick Sands) and having a problem(s)....

And may you can help me !!???
 
Last edited:
Top