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

Dragon Breath by Berato

This bundle is marked as awaiting update. A staff member has requested changes to it before it can be approved.
Hello everyone i just want create simple spell maybe useful for map also i didn't know why my locust removed when i try unhide unit?.

  • DragonSetup
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- PreventBug --------
      • Set DragonBreathRun = 0
      • -------- Speed for dummy move --------
      • Set DragonBreathB = 30.00
      • -------- The Spell --------
      • Set DragonBreathSpell = Dragon Breath

  • DragonBreath
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to DragonBreathSpell
    • Actions
      • -------- Indexing --------
      • Set DragonBreathIndex = (DragonBreathIndex + 1)
      • -------- Store Caster --------
      • Set DragonBreathC[DragonBreathIndex] = (Triggering unit)
      • -------- Store Target --------
      • Set DragonBreathT[DragonBreathIndex] = (Target unit of ability being cast)
      • -------- Countdown for launching dummy --------
      • Set DragonBreathTimer[DragonBreathIndex] = 0.00
      • -------- Store Position for caster --------
      • Set DragonBreathP[0] = (Position of DragonBreathC[DragonBreathIndex])
      • -------- Store Position for target --------
      • Set DragonBreathP[1] = (Position of DragonBreathT[DragonBreathIndex])
      • -------- Store Level --------
      • Set DragonBreathLevel[DragonBreathIndex] = (Level of DragonBreathSpell for DragonBreathC[DragonBreathIndex])
      • -------- Store Damage --------
      • Set DragonBreathDamage[DragonBreathIndex] = (50.00 x (Real(DragonBreathLevel[DragonBreathIndex])))
      • -------- StoreAngle --------
      • Set DragonBreathA[DragonBreathIndex] = (Angle from DragonBreathP[0] to DragonBreathP[1])
      • -------- Store Dummy --------
      • Unit - Create 1 DragonBreath for (Owner of DragonBreathC[DragonBreathIndex]) at DragonBreathP[0] facing DragonBreathA[DragonBreathIndex] degrees
      • Set DragonBreathD[DragonBreathIndex] = (Last created unit)
      • Unit - Create 1 DragonBreath for (Owner of DragonBreathC[DragonBreathIndex]) at DragonBreathP[0] facing DragonBreathA[DragonBreathIndex] degrees
      • Set DragonBreathD2[DragonBreathIndex] = (Last created unit)
      • Unit - Hide DragonBreathD2[DragonBreathIndex]
      • Unit - Create 1 DragonBreath for (Owner of DragonBreathC[DragonBreathIndex]) at DragonBreathP[0] facing DragonBreathA[DragonBreathIndex] degrees
      • Set DragonBreathD3[DragonBreathIndex] = (Last created unit)
      • Unit - Hide DragonBreathD3[DragonBreathIndex]
      • Unit - Create 1 DragonBreath for (Owner of DragonBreathC[DragonBreathIndex]) at DragonBreathP[0] facing DragonBreathA[DragonBreathIndex] degrees
      • Set DragonBreathD4[DragonBreathIndex] = (Last created unit)
      • Unit - Hide DragonBreathD4[DragonBreathIndex]
      • Unit - Create 1 DragonBreath for (Owner of DragonBreathC[DragonBreathIndex]) at DragonBreathP[0] facing DragonBreathA[DragonBreathIndex] degrees
      • Set DragonBreathD5[DragonBreathIndex] = (Last created unit)
      • Unit - Hide DragonBreathD5[DragonBreathIndex]
      • -------- Lets running this trigger --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • DragonBreathIndex Equal to 1
        • Then - Actions
          • Trigger - Turn on DragonBreathLoop <gen>
        • Else - Actions
      • -------- RemoveLeak --------
      • Custom script: call RemoveLocation(udg_DragonBreathP[0])
      • Custom script: call RemoveLocation(udg_DragonBreathP[1])

  • DragonBreathLoop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer DragonBreathRun) from 1 to DragonBreathIndex, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (DragonBreathT[DragonBreathRun] is alive) Equal to True
            • Then - Actions
              • Set DragonBreathP[0] = (Position of DragonBreathD[DragonBreathRun])
              • Set DragonBreathP[1] = (Position of DragonBreathT[DragonBreathRun])
              • Set DragonBreathTimer[DragonBreathRun] = (DragonBreathTimer[DragonBreathRun] + 0.05)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between DragonBreathP[0] and DragonBreathP[1]) Greater than DragonBreathB
                • Then - Actions
                  • Set DragonBreathA[DragonBreathRun] = (Angle from DragonBreathP[0] to DragonBreathP[1])
                  • Set DragonBreathP[3] = (DragonBreathP[0] offset by DragonBreathB towards DragonBreathA[DragonBreathRun] degrees)
                  • Unit - Move DragonBreathD[DragonBreathRun] instantly to DragonBreathP[3], facing DragonBreathA[DragonBreathRun] degrees
                  • Custom script: call RemoveLocation(udg_DragonBreathP[3])
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (DragonBreathD[DragonBreathRun] is alive) Equal to True
                    • Then - Actions
                      • Unit - Cause DragonBreathC[DragonBreathRun] to damage DragonBreathT[DragonBreathRun], dealing DragonBreathDamage[DragonBreathRun] damage of attack type Spells and damage type Magic
                    • Else - Actions
                  • Unit - Kill DragonBreathD[DragonBreathRun]
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • DragonBreathTimer[DragonBreathRun] Greater than or equal to 0.25
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (DragonBreathD2[DragonBreathRun] is hidden) Equal to True
                    • Then - Actions
                      • Unit - Unhide DragonBreathD2[DragonBreathRun]
                    • Else - Actions
                  • Set DragonBreathP[2] = (Position of DragonBreathD2[DragonBreathRun])
                  • Set DragonBreathP[4] = (Position of DragonBreathT[DragonBreathRun])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between DragonBreathP[2] and DragonBreathP[4]) Greater than DragonBreathB
                    • Then - Actions
                      • Set DragonBreathA2[DragonBreathRun] = (Angle from DragonBreathP[2] to DragonBreathP[4])
                      • Set DragonBreathP[5] = (DragonBreathP[2] offset by DragonBreathB towards DragonBreathA2[DragonBreathRun] degrees)
                      • -------- Move dummy to target --------
                      • Unit - Move DragonBreathD2[DragonBreathRun] instantly to DragonBreathP[5], facing DragonBreathA2[DragonBreathRun] degrees
                      • Custom script: call RemoveLocation(udg_DragonBreathP[5])
                    • Else - Actions
                      • -------- This prevent damage further --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (DragonBreathD2[DragonBreathRun] is alive) Equal to True
                        • Then - Actions
                          • Unit - Cause DragonBreathC[DragonBreathRun] to damage DragonBreathT[DragonBreathRun], dealing DragonBreathDamage[DragonBreathRun] damage of attack type Spells and damage type Magic
                        • Else - Actions
                      • Unit - Kill DragonBreathD2[DragonBreathRun]
                  • Custom script: call RemoveLocation(udg_DragonBreathP[2])
                  • Custom script: call RemoveLocation(udg_DragonBreathP[4])
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • DragonBreathTimer[DragonBreathRun] Greater than or equal to 0.50
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (DragonBreathD3[DragonBreathRun] is hidden) Equal to True
                    • Then - Actions
                      • Unit - Unhide DragonBreathD3[DragonBreathRun]
                    • Else - Actions
                  • Set DragonBreathP[6] = (Position of DragonBreathD3[DragonBreathRun])
                  • Set DragonBreathP[7] = (Position of DragonBreathT[DragonBreathRun])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between DragonBreathP[6] and DragonBreathP[7]) Greater than DragonBreathB
                    • Then - Actions
                      • Set DragonBreathA3[DragonBreathRun] = (Angle from DragonBreathP[6] to DragonBreathP[7])
                      • Set DragonBreathP[8] = (DragonBreathP[6] offset by DragonBreathB towards DragonBreathA3[DragonBreathRun] degrees)
                      • Unit - Move DragonBreathD3[DragonBreathRun] instantly to DragonBreathP[8], facing DragonBreathA3[DragonBreathRun] degrees
                      • Custom script: call RemoveLocation(udg_DragonBreathP[8])
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (DragonBreathD3[DragonBreathRun] is alive) Equal to True
                        • Then - Actions
                          • Unit - Cause DragonBreathC[DragonBreathRun] to damage DragonBreathT[DragonBreathRun], dealing DragonBreathDamage[DragonBreathRun] damage of attack type Spells and damage type Magic
                        • Else - Actions
                      • Unit - Kill DragonBreathD3[DragonBreathRun]
                  • Custom script: call RemoveLocation(udg_DragonBreathP[6])
                  • Custom script: call RemoveLocation(udg_DragonBreathP[7])
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • DragonBreathTimer[DragonBreathRun] Greater than or equal to 0.75
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (DragonBreathD4[DragonBreathRun] is hidden) Equal to True
                    • Then - Actions
                      • Unit - Unhide DragonBreathD4[DragonBreathRun]
                    • Else - Actions
                  • Set DragonBreathP[9] = (Position of DragonBreathD4[DragonBreathRun])
                  • Set DragonBreathP[10] = (Position of DragonBreathT[DragonBreathRun])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between DragonBreathP[9] and DragonBreathP[10]) Greater than DragonBreathB
                    • Then - Actions
                      • Set DragonBreathA4[DragonBreathRun] = (Angle from DragonBreathP[9] to DragonBreathP[10])
                      • Set DragonBreathP[11] = (DragonBreathP[9] offset by DragonBreathB towards DragonBreathA4[DragonBreathRun] degrees)
                      • Unit - Move DragonBreathD4[DragonBreathRun] instantly to DragonBreathP[11], facing DragonBreathA4[DragonBreathRun] degrees
                      • Custom script: call RemoveLocation(udg_DragonBreathP[11])
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (DragonBreathD4[DragonBreathRun] is alive) Equal to True
                        • Then - Actions
                          • Unit - Cause DragonBreathC[DragonBreathRun] to damage DragonBreathT[DragonBreathRun], dealing DragonBreathDamage[DragonBreathRun] damage of attack type Spells and damage type Magic
                        • Else - Actions
                      • Unit - Kill DragonBreathD4[DragonBreathRun]
                  • Custom script: call RemoveLocation(udg_DragonBreathP[9])
                  • Custom script: call RemoveLocation(udg_DragonBreathP[10])
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • DragonBreathTimer[DragonBreathRun] Greater than or equal to 1.00
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (DragonBreathD5[DragonBreathRun] is hidden) Equal to True
                    • Then - Actions
                      • Unit - Unhide DragonBreathD5[DragonBreathRun]
                    • Else - Actions
                  • Set DragonBreathP[12] = (Position of DragonBreathD5[DragonBreathRun])
                  • Set DragonBreathP[13] = (Position of DragonBreathT[DragonBreathRun])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between DragonBreathP[12] and DragonBreathP[13]) Greater than DragonBreathB
                    • Then - Actions
                      • Set DragonBreathA5[DragonBreathRun] = (Angle from DragonBreathP[12] to DragonBreathP[13])
                      • Set DragonBreathP[14] = (DragonBreathP[12] offset by DragonBreathB towards DragonBreathA5[DragonBreathRun] degrees)
                      • Unit - Move DragonBreathD5[DragonBreathRun] instantly to DragonBreathP[14], facing DragonBreathA5[DragonBreathRun] degrees
                      • Custom script: call RemoveLocation(udg_DragonBreathP[14])
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (DragonBreathD5[DragonBreathRun] is alive) Equal to True
                        • Then - Actions
                          • Unit - Cause DragonBreathC[DragonBreathRun] to damage DragonBreathT[DragonBreathRun], dealing DragonBreathDamage[DragonBreathRun] damage of attack type Spells and damage type Magic
                        • Else - Actions
                      • Unit - Kill DragonBreathD5[DragonBreathRun]
                      • -------- Unindexing --------
                      • Set DragonBreathC[DragonBreathRun] = DragonBreathC[DragonBreathIndex]
                      • Set DragonBreathD[DragonBreathRun] = DragonBreathD[DragonBreathIndex]
                      • Set DragonBreathD2[DragonBreathRun] = DragonBreathD2[DragonBreathIndex]
                      • Set DragonBreathD3[DragonBreathRun] = DragonBreathD3[DragonBreathIndex]
                      • Set DragonBreathD4[DragonBreathRun] = DragonBreathD4[DragonBreathIndex]
                      • Set DragonBreathD5[DragonBreathRun] = DragonBreathD5[DragonBreathIndex]
                      • Set DragonBreathT[DragonBreathRun] = DragonBreathT[DragonBreathIndex]
                      • Set DragonBreathA[DragonBreathRun] = DragonBreathA[DragonBreathIndex]
                      • Set DragonBreathA2[DragonBreathRun] = DragonBreathA2[DragonBreathIndex]
                      • Set DragonBreathA3[DragonBreathRun] = DragonBreathA3[DragonBreathIndex]
                      • Set DragonBreathA4[DragonBreathRun] = DragonBreathA4[DragonBreathIndex]
                      • Set DragonBreathA5[DragonBreathRun] = DragonBreathA5[DragonBreathIndex]
                      • Set DragonBreathTimer[DragonBreathRun] = DragonBreathTimer[DragonBreathIndex]
                      • Set DragonBreathDamage[DragonBreathRun] = DragonBreathDamage[DragonBreathIndex]
                      • Set DragonBreathLevel[DragonBreathRun] = DragonBreathLevel[DragonBreathIndex]
                      • Set DragonBreathRun = (DragonBreathRun - 1)
                      • Set DragonBreathIndex = (DragonBreathIndex - 1)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • DragonBreathIndex Equal to 0
                        • Then - Actions
                          • Trigger - Turn off (This trigger)
                        • Else - Actions
                  • Custom script: call RemoveLocation(udg_DragonBreathP[12])
                  • Custom script: call RemoveLocation(udg_DragonBreathP[13])
                • Else - Actions
              • Custom script: call RemoveLocation(udg_DragonBreathP[0])
              • Custom script: call RemoveLocation(udg_DragonBreathP[1])
            • Else - Actions
              • Unit - Kill DragonBreathD[DragonBreathRun]
              • Unit - Kill DragonBreathD2[DragonBreathRun]
              • Unit - Kill DragonBreathD3[DragonBreathRun]
              • Unit - Kill DragonBreathD4[DragonBreathRun]
              • Unit - Kill DragonBreathD5[DragonBreathRun]
              • -------- Unindexing --------
              • Set DragonBreathC[DragonBreathRun] = DragonBreathC[DragonBreathIndex]
              • Set DragonBreathD[DragonBreathRun] = DragonBreathD[DragonBreathIndex]
              • Set DragonBreathD2[DragonBreathRun] = DragonBreathD2[DragonBreathIndex]
              • Set DragonBreathD3[DragonBreathRun] = DragonBreathD3[DragonBreathIndex]
              • Set DragonBreathD4[DragonBreathRun] = DragonBreathD4[DragonBreathIndex]
              • Set DragonBreathD5[DragonBreathRun] = DragonBreathD5[DragonBreathIndex]
              • Set DragonBreathT[DragonBreathRun] = DragonBreathT[DragonBreathIndex]
              • Set DragonBreathA[DragonBreathRun] = DragonBreathA[DragonBreathIndex]
              • Set DragonBreathA2[DragonBreathRun] = DragonBreathA2[DragonBreathIndex]
              • Set DragonBreathA3[DragonBreathRun] = DragonBreathA3[DragonBreathIndex]
              • Set DragonBreathA4[DragonBreathRun] = DragonBreathA4[DragonBreathIndex]
              • Set DragonBreathA5[DragonBreathRun] = DragonBreathA5[DragonBreathIndex]
              • Set DragonBreathTimer[DragonBreathRun] = DragonBreathTimer[DragonBreathIndex]
              • Set DragonBreathDamage[DragonBreathRun] = DragonBreathDamage[DragonBreathIndex]
              • Set DragonBreathLevel[DragonBreathRun] = DragonBreathLevel[DragonBreathIndex]
              • Set DragonBreathRun = (DragonBreathRun - 1)
              • Set DragonBreathIndex = (DragonBreathIndex - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • DragonBreathIndex Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
Contents

Dragon Breath by Berato (Map)

Reviews
MyPad
Spell Review: This is a very simple spell. Although it might have its' uses, this is not yet up to par with the quality expected from spells here. Spell Mechanics: The flames conjured by the Red Dragon can be made without having to create dummy...

Spell Review:


This is a very simple spell. Although it might have its' uses, this is not yet up to par with the quality expected from spells here.

Spell Mechanics:


The flames conjured by the Red Dragon can be made without having to create dummy units. Due to them not having the locust ability, their health bar will appear when the option allows, or when the unit is hovered at.

Splitting up the loop trigger into the missile creation trigger and missile movement trigger is recommended.

The level of configurability of this spell leaves a lot to be desired (Damage Dealt, Damage Type, Attack Type, and such options could be added to the Setup Trigger).​

For now, I'll have to place this on Awaiting Update
 
Level 6
Joined
Jul 22, 2015
Messages
65

Spell Review:


This is a very simple spell. Although it might have its' uses, this is not yet up to par with the quality expected from spells here.

Spell Mechanics:


The flames conjured by the Red Dragon can be made without having to create dummy units. Due to them not having the locust ability, their health bar will appear when the option allows, or when the unit is hovered at.

Splitting up the loop trigger into the missile creation trigger and missile movement trigger is recommended.

The level of configurability of this spell leaves a lot to be desired (Damage Dealt, Damage Type, Attack Type, and such options could be added to the Setup Trigger).​

For now, I'll have to place this on Awaiting Update
Actually it already has locust ability but it removed when i hide that dummy,.. arggghh nvm i'm still noob here.
 
Top