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

Bad Breath [1.2]

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Spell Information

Bad Breath


Originated from the Final Fantasy Series

Spews an area with putrid breath that can give the units in the area 1 to 5 random negative statuses.
The possible effects are:
[1/10] Hex - Transforms the unit into a random critter, disabling the use of spells and attacking. Lasts 8 seconds.
[2/10] Stun - Stuns the unit for 3 seconds.
[3/10] Slow - Slows the movement speed of the unit by 50% and attack speed by 30%. Lasts 20 seconds.
[4/10] Silence - Disables the usage of spells for the unit. Lasts 10 seconds.
[5/10] Disease - The unit takes 2 damage per second for 20 seconds.
[6/10] Faerie Fire - The unit's armor is decreased by 3, and the caster has sight vision over that unit. Lasts 20 seconds.
[7/10] Curse - The unit has a 33% chance to miss when it attacks. Lasts 20 seconds.
[8/10] Mana Leak - 100 mana of the unit's mana is destroyed.
[9/10] Sleep - Sets the unit to sleep. Lasts 5 seconds.
[10/10] Banish - The unit takes more damage from spells, is slowed, and is unable to attack and is immune to physical damage. Lasts 8 seconds.[r][r][r]

Actual Video
Spell Video (Courtesy of Vengeancekael) (Skip to 3:51)
Early Review
Bribe;1941835 said:
Link: http://www.hiveworkshop.com/forums/1923245-post192.html
Overall Aspect: 5/5 -> Really powerful execution of the bad breath spell. Nice work on this.
Visual Effects: 10/10 -> Perfect idea to choose that model for the hero. I don't know how I would have liked the visual effects if you chose something else, but this left me with an overall 10/10 impression.
Sound Effects: 5/5 -> You chose the perfect sound effect for this, had some good lulz! Would have been a great idea for the last contest :p
Triggering: 8/10 -> Your triggers could have been shortened quite a lot. Setting an array from a "map init" trigger would allow you to use a simple loop instead of that huge chain of if's. Say you had 10 buffs, instead of making 10 if's (one for each buff) just make one array with 10 slots (each pointing to a different buff) and loop from 0 through 9. This would also make your spell more configurable so it's easy for people to use.
Total: 28/30

  • Bad Breath
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Bad Breath
    • Actions
      • -------- This sets the casting unit in a variable so it can be referred to in other actions later in the trigger. --------
      • Set BadBreathCastingUnit = (Triggering unit)
      • -------- This sets the casting unit's position in a variable so it can be referred to in other actions later in the trigger. --------
      • Set BadBreathCastingUnitPoint = (Position of BadBreathCastingUnit)
      • -------- This sets the point of where the spell was cast in a variable so it can be referred to in other actions later in the trigger. --------
      • Set BadBreathCastPoint = (Target point of ability being cast)
      • -------- This plays the sound effects for the spell. --------
      • Sound - Play AbominationYesAttack2 <gen> at 100.00% volume, located at BadBreathCastingUnitPoint with Z offset 0.00
      • -------- This creates the unit to show that the Malboro has cast Bad Breath. --------
      • Unit - Create 1 Dummy Bad Breath for (Triggering player) at BadBreathCastingUnitPoint facing Default building facing degrees
      • -------- This clears the leak the action creates. --------
      • Custom script: call RemoveLocation(udg_BadBreathCastingUnitPoint)
      • -------- This will move the unit to BadBreathCastPoint. --------
      • Unit - Order (Last created unit) to Move To BadBreathCastPoint
      • -------- This will make sure that the unit will disappear after 5 seconds. --------
      • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
      • -------- This adds units that are not dead, not the BadBreathCastingUnit, not a structure, not mechanical, and not allied to the owner of BadBreathCastingUnit within 200 range of BadBreathCastPoint. --------
      • Set BadBreathUnitGroup = (Units within 200.00 of BadBreathCastPoint matching (((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) is dead) Equal to False))) and (((Matching unit) Not equal to BadBreathCastingU
      • -------- This will repeat the unit group actions 5 times for the '1 to 5 random negative buffs' part of the spell. --------
      • For each (Integer BadBreathBuffInteger) from 1 to 5, do (Actions)
        • Loop - Actions
          • -------- This resets the number of buffs the unit has to 0. --------
          • Set BadBreathNumberofBuffs = 0
          • -------- These are the actions that casts the random buffs for each unit. --------
          • Unit Group - Pick every unit in BadBreathUnitGroup and do (Actions)
            • Loop - Actions
              • -------- This resets the strings for the text. --------
              • Set BadBreathString[1] = |c00959697Resist|r
              • Set BadBreathString[2] = |c00959697Resist|r
              • Set BadBreathString[3] = |c00959697Resist|r
              • Set BadBreathString[4] = |c00959697Resist|r
              • Set BadBreathString[5] = |c00959697Resist|r
              • -------- This resets the buffs the unit already has. --------
              • Set BadBreath_UnitHasBuff[0] = False
              • Set BadBreath_UnitHasBuff[1] = False
              • Set BadBreath_UnitHasBuff[2] = False
              • Set BadBreath_UnitHasBuff[3] = False
              • Set BadBreath_UnitHasBuff[4] = False
              • Set BadBreath_UnitHasBuff[5] = False
              • Set BadBreath_UnitHasBuff[6] = False
              • Set BadBreath_UnitHasBuff[7] = False
              • Set BadBreath_UnitHasBuff[8] = False
              • Set BadBreath_UnitHasBuff[9] = False
              • -------- This sets the random chance for which buff will be cast. --------
              • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
              • -------- This is the random chance for Slow. --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 11
                  • BadBreath_UnitHasBuff[0] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Slow. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Slow. --------
                  • Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)
                  • -------- This boolean will set that the unit has Slow. --------
                  • Set BadBreath_UnitHasBuff[0] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Slow has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c00FEBA0ESlow|r
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 21
                  • BadBreathBuffRandomInteger Greater than 10
                  • BadBreath_UnitHasBuff[1] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Hex. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Hex. --------
                  • Unit - Order (Last created unit) to Orc Shadow Hunter - Hex (Picked unit)
                  • -------- This boolean will set that the unit has Hex. --------
                  • Set BadBreath_UnitHasBuff[1] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Hex has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c00FEBA0EHex|r
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 31
                  • BadBreathBuffRandomInteger Greater than 20
                  • BadBreath_UnitHasBuff[2] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Stun. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Stun. --------
                  • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                  • -------- This boolean will set that the unit has Stun. --------
                  • Set BadBreath_UnitHasBuff[2] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This clears the leak the unit group creates. --------
                  • Custom script: call DestroyGroup(udg_BadBreathUnitGroup)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Stun has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c000042FFStun|r
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 41
                  • BadBreathBuffRandomInteger Greater than 30
                  • BadBreath_UnitHasBuff[3] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Silence. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Silence. --------
                  • Unit - Order (Last created unit) to Neutral Dark Ranger - Silence BadBreathUnitPoint
                  • -------- This boolean will set that the unit has Silence. --------
                  • Set BadBreath_UnitHasBuff[3] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This clears the leak the unit group creates. --------
                  • Custom script: call DestroyGroup(udg_BadBreathUnitGroup)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Silence has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = Silence
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 51
                  • BadBreathBuffRandomInteger Greater than 40
                  • BadBreath_UnitHasBuff[4] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Disease. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Disease. --------
                  • Unit - Order (Last created unit) to Neutral Alchemist - Acid Bomb (Picked unit)
                  • -------- This boolean will set that the unit has Disease. --------
                  • Set BadBreath_UnitHasBuff[4] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This clears the leak the unit group creates. --------
                  • Custom script: call DestroyGroup(udg_BadBreathUnitGroup)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Disease has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c0020c000Disease|r
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 61
                  • BadBreathBuffRandomInteger Greater than 50
                  • BadBreath_UnitHasBuff[5] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Faerie Fire. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Faerie Fire. --------
                  • Unit - Order (Last created unit) to Night Elf Druid Of The Talon - Faerie Fire (Picked unit)
                  • -------- This boolean will set that the unit has Faerie Fire. --------
                  • Set BadBreath_UnitHasBuff[5] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This clears the leak the unit group creates. --------
                  • Custom script: call DestroyGroup(udg_BadBreathUnitGroup)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Faerie Fire has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c00E55BB0Faerie Fire|r
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 71
                  • BadBreathBuffRandomInteger Greater than 60
                  • BadBreath_UnitHasBuff[6] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Curse. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Curse. --------
                  • Unit - Order (Last created unit) to Undead Banshee - Curse (Picked unit)
                  • -------- This boolean will set that the unit has Curse. --------
                  • Set BadBreath_UnitHasBuff[6] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This clears the leak the unit group creates. --------
                  • Custom script: call DestroyGroup(udg_BadBreathUnitGroup)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Curse has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c00540081Curse|r
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 81
                  • BadBreathBuffRandomInteger Greater than 70
                  • BadBreath_UnitHasBuff[7] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This will subtract 100 mana from the unit. --------
                  • Unit - Set mana of (Picked unit) to ((Mana of (Picked unit)) - 100.00)
                  • -------- This creates a special effect to show that Mana Leak has taken effect on the unit. --------
                  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Undead\DarkRitual\DarkRitualTarget.mdl
                  • -------- This clears the leak the creation of the special effect creates. --------
                  • Special Effect - Destroy (Last created special effect)
                  • -------- This boolean will set that the unit has Mana Leak. --------
                  • Set BadBreath_UnitHasBuff[7] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the unit group creates. --------
                  • Custom script: call DestroyGroup(udg_BadBreathUnitGroup)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Mana Leak has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c007EBEE1Mana Leak|r
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Less than 91
                  • BadBreathBuffRandomInteger Greater than 80
                  • BadBreath_UnitHasBuff[8] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Sleep. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Sleep. --------
                  • Unit - Order (Last created unit) to Undead Dreadlord - Sleep (Picked unit)
                  • -------- This boolean will set that the unit has Sleep. --------
                  • Set BadBreath_UnitHasBuff[8] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This clears the leak the unit group creates. --------
                  • Custom script: call DestroyGroup(udg_BadBreathUnitGroup)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Sleep has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c00959697Sleep|r
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BadBreathBuffRandomInteger Greater than 90
                  • BadBreath_UnitHasBuff[9] Equal to False
                  • BadBreathNumberofBuffs Not equal to 5
                • Then - Actions
                  • -------- This sets the unit's position in a variable so it can be referred to in other actions later in the trigger. --------
                  • Set BadBreathUnitPoint = (Position of (Picked unit))
                  • -------- This creates the dummy unit that casts Banish. --------
                  • Unit - Create 1 Dummy Caster for (Owner of BadBreathCastingUnit) at BadBreathUnitPoint facing Default building facing degrees
                  • -------- This will make sure that the unit will disappear after 2 seconds. --------
                  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                  • -------- This will order the dummy unit to cast Banish. --------
                  • Unit - Order (Last created unit) to Human Blood Mage - Banish (Picked unit)
                  • -------- This boolean will set that the unit has Banish. --------
                  • Set BadBreath_UnitHasBuff[9] = True
                  • -------- This increases the number of buffs the unit has by 1. --------
                  • Set BadBreathNumberofBuffs = (BadBreathNumberofBuffs + 1)
                  • -------- This clears the leak the creation of the dummy creates. --------
                  • Custom script: call RemoveLocation(udg_BadBreathUnitPoint)
                  • -------- This sets the random chance for which buff will be cast. --------
                  • Set BadBreathBuffRandomInteger = (Random integer number between 1 and 100)
                  • -------- This sets a part of the text to show that Banish has been cast on the unit. --------
                  • Set BadBreathString[BadBreathNumberofBuffs] = |c00FF0303Banish|r
                • Else - Actions
              • -------- This clears the leak the unit group creates. --------
              • Custom script: call DestroyGroup(udg_BadBreathUnitGroup)
              • -------- This sets the string of the floating text. --------
              • Set BadBreathFinalString = (BadBreathString[1] + (|cff7cfc00 + |r + (BadBreathString[2] + (|cff7cfc00 + |r + (BadBreathString[3] + (|cff7cfc00 + |r + (BadBreathString[4] + (|cff7cfc00 + |r + BadBreathString[5]))))))))
              • -------- This creates the floating text that appears above the unit. --------
              • Floating Text - Create floating text that reads BadBreathFinalString above (Picked unit) with Z offset 0.00, using font size 7.00, color (100.00%, 100.00%, 100.00%), and 25.00% transparency
              • -------- This sets the floating text in a variable so it can be referred to in other actions later in the trigger. --------
              • Set BadBreathText = (Last created floating text)
              • -------- This allows the text do be destroyed. --------
              • Floating Text - Change BadBreathText: Disable permanence
              • -------- This sets the text to start fading after 3 seconds. --------
              • Floating Text - Change the fading age of (Last created floating text) to 3.00 seconds
              • -------- This sets the velocity of the text, which makes the text move upwards. --------
              • Floating Text - Set the velocity of (Last created floating text) to 20.00 towards 90.00 degrees
              • -------- This sets the text to be destroyed after 5 seconds. --------
              • Floating Text - Change the lifespan of BadBreathText to 5.00 seconds


Changelog
[1.0]First Release

[1.1]
Added a text that shows which statuses they receive

[1.2]
Set the dummies to can't raise, does not decay.
Removed Invunerability from dummies.
Dummy Bad Breath Unit no longer gives vision.
Removed the action wherein the dummy unit's movement speed is changed.
Changed casting unit to triggering unit.
Neutral units are no longer affected.
Moved the set bj_wantDestroyGroup = true to the end of the trigger, after the If-Then-Elses.
Used the Greater/Less than comparisons for optimization.

Keywords:
final, fantasy, final fantasy, spell, malboro, bad, breath, putrid, smelly, stinky, hex, stun, slow, silence, disease, faerie fire, curse, mana, leak,
Contents

Bad Breath [1.2] (Map)

Reviews
12th Dec 2015 IcemanBo: For too long time as NeedsFix. Rejected. You only need to have call DestroyGroup(udg_BadBreathUnitGroup) once in the trigger, at the very end. Also clear BadBreathCastPoint at the very end. By setting the abilities and...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: For too long time as NeedsFix. Rejected.

Maker, 12th Aug 2011, Bad Breath v1.2

You only need to have call DestroyGroup(udg_BadBreathUnitGroup) once in the trigger, at the very end.
Also clear BadBreathCastPoint at the very end.
By setting the abilities and orders into an array, you could use a loop to cut down the length of the trigger.
You could use one less point variable.
 
Level 16
Joined
May 1, 2008
Messages
1,605
Moin moin =)

"Triggering: 8/10" haha not -_-

Sry for this one but the triggering isn't 8/10. Thanks to the triggers ... and when I increase the casting range ... I see, that the targets gets directly one of these 10 debuffs, if the Breath reached the target area or not, so this isn't spectacular =S

Also I noticed, that the breath can fly through trees, but not through doodads the rocks you placed under the start position of this Malboro.

Then I don't like that the target units can get 2 and more debuffs ...

At last the breath is able to fly out of the map, which never should happen.

Greetings and Peace
Dr. Boom
 
Moin moin =)

"Triggering: 8/10" haha not -_-

Sry for this one but the triggering isn't 8/10. Thanks to the triggers ... and when I increase the casting range ... I see, that the targets gets directly one of these 10 debuffs, if the Breath reached the target area or not, so this isn't spectacular =S

Also I noticed, that the breath can fly through trees, but not through doodads the rocks you placed under the start position of this Malboro.

Then I don't like that the target units can get 2 and more debuffs ...

At last the breath is able to fly out of the map, which never should happen.

Greetings and Peace
Dr. Boom

Thank you for testing.
I don't quite understand what you mean in the first paragraph.

If you look at the video, you really do recieve a lot of debuffs.

Not bad,but no damage ability T^T!
Also,this spell really great,and the trigger make me confused @o@ !
Rate for 5/5

Oh, thank you. :)
 
Level 16
Joined
Apr 4, 2011
Messages
995
Dr. Boom means that if you increase the casting range, and use it farther than it was intended, the units in that area will receive the negative buff BEFORE the effect reaches them.

I don't know why the breath flying out of the map is a bad problem. Since none of the dummy units move (from what I see), it won't crash WC.
 
Easy triggering, effective and creative ability :)

I'll give it 4/5 and + rep :D

Thank you. :)

Dr. Boom means that if you increase the casting range, and use it farther than it was intended, the units in that area will receive the negative buff BEFORE the effect reaches them.

I don't know why the breath flying out of the map is a bad problem. Since none of the dummy units move (from what I see), it won't crash WC.

Well, I can just make the Maximum Movement Speed in the Gameplay Constants exceed 522.

You trigger could be about 20-25 lines long or even less with some optimization :l

In what way could I optimize this, Mag? I'm not too good with this stuff.
 
Level 16
Joined
Apr 4, 2011
Messages
995
Well, I can just make the Maximum Movement Speed in the Gameplay Constants exceed 522.

I don't know if this was supposed to be sarcasm or not. No you cannot put the maximum unit movement speed over 522. Use a triggered loop to move the unit faster, otherwise the effect will reach the spot before the unit does >_>

Also, this could be a lot shorter code. I still love it though :thumbs_up:
 
I'd like it, but there need damage over second aoe spells in :3

Came from facebook :3

Cool. :D

With some good code compression you really can shorten this to much fewer lines, I think Magtheridon96 made mention of this. If you'd like to know how to crunch it down a little better I recommend asking in the Triggers & Scripts forum.

I'll do that once I have the time. :D
 
Level 16
Joined
May 1, 2008
Messages
1,605
Moin moin =)

Sorry that I didn't answer you last question, that you don't understand what I was talking about in my first point in my first review.

The thing is, that you created a spell, that effects immediately. So if I increase the casting range of bad breath, you can see, that the effects (on the targets) happens, even if the bad breath haven't reached the target point.

To fix this, you need to completely change your trigger. You need as least a loop trigger, which runs every 0.04 seconds. In this trigger you always need to check the distance between the dummy unit bad breath and the ability-target-point. If this distance becomes 0 or at least lower then 10 or something, that all effects should happen first.
 
Top