1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. The 30th edition of the Modeling Contest is finally up! The Portable Buildings need your attention, so come along and have a blast!
    Dismiss Notice
  3. The Aftermath has been revealed for the 19th Terraining Contest! Be sure to check out the Results and see what came out of it.
    Dismiss Notice
  4. Melee Mapping Contest #3 - Results are out! Congratulate the winners and check plenty of new 4v4 melee maps designed for this competition!
    Dismiss Notice
  5. The winners of our cinematic soundtrack competition have been decided! Step by the Music Contest #11 - Results to check the entries and congratulate the winners!
    Dismiss Notice

Bouncing Energy v1.05

Submitted by Meatmuffin
This bundle is marked as approved. It works and satisfies the submission rules.
Throws a sphere of combusted energy at a target enemy or allly. If the target is an enemy, damages it and decreases his armor. If the target is an ally, heals it and increases his armor. Once the sphere completes its destination, it will select a new target and seek it. Repeated for the number of bounces.
Damage or Heal - 30/45/60
Bounce search AoE - 400/500/600
Number of bounces - 8/11/14
Armor increment/reduction - 5/7/9
Buff/debuff duration - 8 seconds
Cooldown - 10/5/0 seconds

Bouncing Energy Triggers


Configuration
  • Bouncing Energy configuration
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Your ability --------
      • Set BE_Ability = Bouncing Energy
      • -------- Dummy type --------
      • Set BE_DummyType = BE Dummy (Vexorian, infrane, anitarf)
      • -------- Projectile model --------
      • Set BE_Model = Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
      • -------- Bounce count --------
      • Set BE_Bounces[1] = 8
      • Set BE_Bounces[2] = 11
      • Set BE_Bounces[3] = 14
      • -------- Bounce search AoE --------
      • Set BE_SearchAoE[1] = 400.00
      • Set BE_SearchAoE[2] = 500.00
      • Set BE_SearchAoE[3] = 600.00
      • -------- Damage/heal per bounce --------
      • Set BE_CDamage[1] = 30.00
      • Set BE_CDamage[2] = 45.00
      • Set BE_CDamage[3] = 60.00
      • Set BE_CHeal[1] = 30.00
      • Set BE_CHeal[2] = 45.00
      • Set BE_CHeal[3] = 60.00
      • -------- Damage/heal addition per bounce --------
      • Set BE_DamageAddition[1] = 5.00
      • Set BE_DamageAddition[2] = 10.00
      • Set BE_DamageAddition[3] = 15.00
      • Set BE_HealAddition[1] = 5.00
      • Set BE_HealAddition[2] = 10.00
      • Set BE_HealAddition[3] = 15.00
      • -------- Projectile speed (described in the first part of the arithmetic function) --------
      • Set BE_Speed[1] = (400.00 x 0.03)
      • Set BE_Speed[2] = (550.00 x 0.03)
      • Set BE_Speed[3] = (700.00 x 0.03)
      • -------- Max height --------
      • Set BE_Height[1] = 300.00
      • Set BE_Height[2] = 400.00
      • Set BE_Height[3] = 500.00
      • -------- Increased size per bounce (percentage) --------
      • Set BE_CSizeIncrement = 33.00
      • -------- Positive buff --------
      • Set BE_PosAbility = Bouncing Energy (Armor increment)
      • -------- Negative buff --------
      • Set BE_NegAbility = Bouncing Energy (Armor reduction)
      • -------- Positive special effect --------
      • Set BE_PosSpecialEffect = Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
      • -------- Negative special effect --------
      • Set BE_NegSpecialEffect = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
      • -------- Damage type --------
      • Set BE_DamageType = Normal
      • -------- Attack type --------
      • Set BE_AttackType = Spells
      • -------- Preloading --------
      • Set BE_TempPoint = (Center of (Playable map area))
      • Unit - Create 1 BE Dummy (Vexorian, infrane, anitarf) for Neutral Passive at BE_TempPoint facing Default building facing degrees
      • Set BE_PreloadUnit = (Last created unit)
      • Unit - Add BE_PosAbility to BE_PreloadUnit
      • Unit - Remove BE_PosAbility from BE_PreloadUnit
      • Unit - Add BE_NegAbility to BE_PreloadUnit
      • Unit - Remove BE_NegAbility from BE_PreloadUnit
      • Unit - Remove (Last created unit) from the game
      • Custom script: call RemoveLocation (udg_BE_TempPoint)


Initialization
  • Bouncing Energy initialization
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to BE_Ability
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BE_MaxIndex Equal to 0
        • Then - Actions
          • Trigger - Turn on Bouncing Energy loop <gen>
        • Else - Actions
      • -------- Setting the primary variables --------
      • Set BE_MaxIndex = (BE_MaxIndex + 1)
      • Set BE_Caster[BE_MaxIndex] = (Triggering unit)
      • Set BE_Target[BE_MaxIndex] = (Target unit of ability being cast)
      • Set BE_AbilityIndex[BE_MaxIndex] = (Level of BE_Ability for BE_Caster[BE_MaxIndex])
      • Set BE_DistanceTravelled[BE_MaxIndex] = 0.00
      • Set BE_Damage[BE_MaxIndex] = BE_CDamage[BE_AbilityIndex[BE_MaxIndex]]
      • Set BE_Heal[BE_MaxIndex] = BE_CHeal[BE_AbilityIndex[BE_MaxIndex]]
      • Set BE_SizeIncrement[BE_MaxIndex] = BE_CSizeIncrement
      • Set BE_CurrentBounces[BE_MaxIndex] = 0
      • Set BE_Player[BE_MaxIndex] = (Triggering player)
      • Set BE_TempPoint2 = (Position of BE_Caster[BE_MaxIndex])
      • Set BE_TempPoint3 = (Position of BE_Target[BE_MaxIndex])
      • Set BE_Angle[BE_MaxIndex] = (Angle from BE_TempPoint2 to BE_TempPoint3)
      • -------- Creating the projectile --------
      • Unit - Create 1 BE_DummyType for BE_Player[BE_MaxIndex] at BE_TempPoint2 facing BE_Angle[BE_MaxIndex] degrees
      • Set BE_Dummy[BE_MaxIndex] = (Last created unit)
      • Special Effect - Create a special effect attached to the origin of BE_Dummy[BE_MaxIndex] using BE_Model
      • Set BE_FX[BE_MaxIndex] = (Last created special effect)
      • Unit - Add BE_PosAbility to BE_Dummy[BE_MaxIndex]
      • Unit - Set level of BE_PosAbility for BE_Dummy[BE_MaxIndex] to BE_AbilityIndex[BE_MaxIndex]
      • Unit - Add BE_NegAbility to BE_Dummy[BE_MaxIndex]
      • Unit - Set level of BE_NegAbility for BE_Dummy[BE_MaxIndex] to BE_AbilityIndex[BE_MaxIndex]
      • Custom script: call RemoveLocation(udg_BE_TempPoint2)
      • Custom script: call RemoveLocation(udg_BE_TempPoint3)


Loop
  • Bouncing Energy loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer BE_TempIndex) from 1 to BE_MaxIndex, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BE_CurrentBounces[BE_TempIndex] Less than or equal to BE_Bounces[BE_AbilityIndex[BE_TempIndex]]
            • Then - Actions
              • -------- Moving the projectile --------
              • Set BE_TempPoint3 = (Position of BE_Target[BE_TempIndex])
              • Set BE_TempPoint2 = (Position of BE_Dummy[BE_TempIndex])
              • Set BE_Distance[BE_TempIndex] = (Distance between BE_TempPoint3 and BE_TempPoint2)
              • Set BE_DistanceTravelled[BE_TempIndex] = (BE_DistanceTravelled[BE_TempIndex] + BE_Speed[BE_AbilityIndex[BE_TempIndex]])
              • Set BE_TotalDistance = (BE_DistanceTravelled[BE_TempIndex] + BE_Distance[BE_TempIndex])
              • Set BE_Angle[BE_TempIndex] = (Angle from BE_TempPoint2 to BE_TempPoint3)
              • Set BE_TempPoint = (BE_TempPoint2 offset by BE_Speed[BE_AbilityIndex[BE_TempIndex]] towards BE_Angle[BE_TempIndex] degrees)
              • -------- PARABOLA FUNCTION --------
              • Animation - Change BE_Dummy[BE_TempIndex] flying height to ((4.00 x BE_Height[BE_AbilityIndex[BE_TempIndex]]) x (BE_DistanceTravelled[BE_TempIndex] x ((BE_TotalDistance - BE_DistanceTravelled[BE_TempIndex]) / (BE_TotalDistance x BE_TotalDistance)))) at 0.00
              • -------- PARABOLA FUNCTION --------
              • Unit - Move BE_Dummy[BE_TempIndex] instantly to BE_TempPoint, facing BE_Angle[BE_TempIndex] degrees
              • -------- Checking if the projectile has reached the target --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BE_Distance[BE_TempIndex] Less than or equal to 50.00
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (BE_Target[BE_TempIndex] belongs to an ally of BE_Player[BE_TempIndex]) Equal to True
                    • Then - Actions
                      • Unit - Set life of BE_Target[BE_TempIndex] to ((Life of BE_Target[BE_TempIndex]) + BE_Heal[BE_TempIndex])
                      • Special Effect - Create a special effect at BE_TempPoint3 using BE_PosSpecialEffect
                      • Special Effect - Destroy (Last created special effect)
                      • -------- NOTE: This has to be changed if you're adding a different ability to the projectile --------
                      • Unit - Order BE_Dummy[BE_TempIndex] to Human Priest - Inner Fire BE_Target[BE_TempIndex]
                    • Else - Actions
                      • Unit - Cause BE_Caster[BE_TempIndex] to damage BE_Target[BE_TempIndex], dealing BE_Damage[BE_TempIndex] damage of attack type BE_AttackType and damage type BE_DamageType
                      • Special Effect - Create a special effect at BE_TempPoint3 using BE_NegSpecialEffect
                      • Special Effect - Destroy (Last created special effect)
                      • -------- NOTE: This has to be changed if you're adding a different ability to the projectile --------
                      • Unit - Order BE_Dummy[BE_TempIndex] to Night Elf Druid Of The Talon - Faerie Fire BE_Target[BE_TempIndex]
                  • Set BE_Group = (Units within BE_SearchAoE[BE_AbilityIndex[BE_TempIndex]] of BE_TempPoint2)
                  • -------- Getting a new target --------
                  • Unit Group - Pick every unit in BE_Group and do (Actions)
                    • Loop - Actions
                      • Set BE_PickedUnits = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (BE_PickedUnits is A structure) Equal to False
                          • (BE_PickedUnits is alive) Equal to True
                          • BE_PickedUnits Not equal to BE_Target[BE_TempIndex]
                        • Then - Actions
                        • Else - Actions
                          • Unit Group - Remove BE_PickedUnits from BE_Group
                  • -------- Checking if there are not units around, if there aren't, ends the ability. --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Number of units in BE_Group) Equal to 0
                    • Then - Actions
                      • Set BE_CurrentBounces[BE_TempIndex] = BE_Bounces[BE_AbilityIndex[BE_TempIndex]]
                    • Else - Actions
                  • Set BE_Target[BE_TempIndex] = (Random unit from BE_Group)
                  • -------- Preparing for the next bounce. --------
                  • Animation - Change BE_Dummy[BE_TempIndex]'s size to ((100.00 + BE_SizeIncrement[BE_TempIndex])%, (100.00 + BE_SizeIncrement[BE_TempIndex])%, (100.00 + BE_SizeIncrement[BE_TempIndex])%) of its original size
                  • Set BE_Damage[BE_TempIndex] = (BE_Damage[BE_TempIndex] + BE_DamageAddition[BE_AbilityIndex[BE_TempIndex]])
                  • Set BE_Heal[BE_TempIndex] = (BE_Heal[BE_TempIndex] + BE_HealAddition[BE_AbilityIndex[BE_TempIndex]])
                  • Set BE_CurrentBounces[BE_TempIndex] = (BE_CurrentBounces[BE_TempIndex] + 1)
                  • Set BE_SizeIncrement[BE_TempIndex] = (BE_SizeIncrement[BE_TempIndex] + BE_CSizeIncrement)
                  • Set BE_DistanceTravelled[BE_TempIndex] = 0.00
                  • Custom script: call DestroyGroup(udg_BE_Group)
                • Else - Actions
              • -------- Cleaning all 3 location variables --------
              • Custom script: call RemoveLocation(udg_BE_TempPoint)
              • Custom script: call RemoveLocation(udg_BE_TempPoint2)
              • Custom script: call RemoveLocation(udg_BE_TempPoint3)
            • Else - Actions
              • -------- Deindexing --------
              • Special Effect - Destroy BE_FX[BE_TempIndex]
              • Set BE_FX[BE_TempIndex] = BE_FX[BE_MaxIndex]
              • Unit - Kill BE_Dummy[BE_TempIndex]
              • Set BE_Dummy[BE_TempIndex] = BE_Dummy[BE_MaxIndex]
              • Set BE_Target[BE_TempIndex] = BE_Target[BE_MaxIndex]
              • Set BE_Caster[BE_TempIndex] = BE_Caster[BE_MaxIndex]
              • Set BE_Player[BE_TempIndex] = BE_Player[BE_MaxIndex]
              • Set BE_CurrentBounces[BE_TempIndex] = BE_CurrentBounces[BE_MaxIndex]
              • Set BE_Angle[BE_TempIndex] = BE_Angle[BE_MaxIndex]
              • Set BE_Distance[BE_TempIndex] = BE_Distance[BE_MaxIndex]
              • Set BE_DistanceTravelled[BE_TempIndex] = BE_DistanceTravelled[BE_MaxIndex]
              • Set BE_SizeIncrement[BE_TempIndex] = BE_SizeIncrement[BE_MaxIndex]
              • Set BE_TempIndex = (BE_TempIndex - 1)
              • Set BE_MaxIndex = (BE_MaxIndex - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BE_MaxIndex Equal to 0
                • Then - Actions
                  • Trigger - Turn off Bouncing Energy loop <gen>
                • Else - Actions


Changelog

v1.00 - Initial release
v1.01 - Fixed missiles bouncing between themselves (thanks Empirean)
v1.02 - Radically increased the projectile's size (1.50 -> 5.00)
Added a preload
Made the projectile bounce like a parabola
Fixed a small leak
Replaced negative damage with life addition when healing allies
v1.03 - Added a size increase on each bounce (configurable)
Improved preloading
v1.04 - Reworked how the projectile bounces (Now instead of being incredibly weird it uses an actual parabola function)
Imported Vexorian's/Anitarf's/Infrane's dummy and used it.
Removed a condition that checks for if the next target is a dummy or not.
v1.05 - Improved the spell by importing the stuff IcemanBo pointed out.


Looking forward to receiving feedback.

Keywords:
4th spell in hive, LITHUFFIN, bouncing, bounce, energy, armor, heal, damage, lulz
Contents

Bouncing Energy v1.05 (Map)

Reviews
Moderator
21:35, 8th Jan 2016 IcemanBo: The code looks good now. It looks quite cool, and is nice. Recommended.
  1. 21:35, 8th Jan 2016
    IcemanBo: The code looks good now. It looks quite cool, and is nice. Recommended.
     
  2. Empirean

    Empirean

    Joined:
    Jun 20, 2014
    Messages:
    385
    Resources:
    8
    Spells:
    8
    Resources:
    8
    Bouncing Energy v1.0 - i didnt check the triggers. the effects and the mechanics of the spell is really good. i have a question, i noticed that the missile can heal themselves not sure if this is intended.
     
    Last edited: Dec 25, 2015
  3. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    Yes indeed, the spell intends to bounce between allies and enemies, if it's an ally, heals and grants a positive armor buff, if it's an enemy, deals damage and grants a negative armor debuff.
     
  4. Empirean

    Empirean

    Joined:
    Jun 20, 2014
    Messages:
    385
    Resources:
    8
    Spells:
    8
    Resources:
    8
    im referring to the missle itself. the missle heal themselves.
     
  5. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    Hmm, let me check

    Edit: Didn't have to check, no, it isn't intended, I just forgot to add the condition when the missile is bouncing, to check if the picked random unit is a dummy. Thanks, +rep.
     
  6. Empirean

    Empirean

    Joined:
    Jun 20, 2014
    Messages:
    385
    Resources:
    8
    Spells:
    8
    Resources:
    8
    ive attached a replay on my first post maybe that can help

    edit: omg wrong replay
     
  7. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    v1.01 - Fixed.
     
  8. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,472
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    The name was a little misleading xP I was expecting a bounce like a parabola, but still a pretty cool spell with awesome effects.

    Here are some things with a quick look:
    • Why are you dealing negative damage to heal units...? Why not just use Unit - Set life to heal friendly targets
    • There is no need to index Damage[] and Heal; just use BE_CDamage[AbilityLevel] & BE_CHeal[AbilityLevel]. Similar reason to why you don't index BE_SearchAoE[]
      • Not that it matters since you shouldn't be indexing Damage and Heal, but on index the array element for BE_Heal[] is TempIndex. It should be MaxIndex.
    • Preload dummy units and their abilities

    My only suggestion is to let the user decide how long it will take for an effect to reach a target instead of just a default speed.
     
  9. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    I did try to make it bounce like a parabola, i almost made it work, but it just added a buttload of extra functions xD
    Edit: Nevermind, completed it, next version of the spell will have actual bouncing.

    1. Hmm, seems pretty reasonable, will do.
    2. Imo I should index them since I change their values inside the loop, I can't increase a configuration variable.
    2.1. Oops, will fix.
    3. What do you mean by preloading?
    Edit: Nevermind, got it, will preload.

    4. Eh, the target is moving, so "time until it reaches target" seems a little misleading ;P
     
    Last edited: Dec 26, 2015
  10. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    Updated (See changelog)
     
  11. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,472
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    My mistake x)

    You almost got it right. Add the abilities to them and then remove the unit.

    Personally, I think the bounce looks a little awkward xP but the concept of applying parabolas are a bit confusing. I still don't quite get them myself. However, the new bounce effect does add a bit of spice to the spell. One more SFX suggestion would be to start off the missle as a really small effect that gradually gets bigger since the damage + heal values increase by every bounce. Overall, a really cool spell! I love all the config options you give users to play with. 4/5 from me.

    Also, may I ask why you prefer having the effects appear on a point vs as an attachment on units?
     
  12. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    Err, the dummy doesn't have any abilities that I use manually, just locust and invulnerability, so hmm, idk about this.

    I know that it looks a little awkward, but applying this method to make leaps, bounces and parabolas overall is how i make them (Comparing current distance with the distance where the spell was cast or where it bounced off divided by half). Hmm, increasing the scaling value seems interesting, will do probably. Thanks for the suggestion.

    It's the complete opposite of your view actually, to me it just looks better, I'm just adding a little common sense and logic to it (in real life the effects wouldn't follow you, they would just happen at one place, unless you're burning or something, but that's a buff when compared to w3 world XDD)
     
  13. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,472
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    You sure about that? This is found on cast.

    • Unit - Add BE_PosAbility to BE_Dummy[BE_MaxIndex]
    • Unit - Set level of BE_PosAbility for BE_Dummy[BE_MaxIndex] to BE_AbilityIndex[BE_MaxIndex]
    • Unit - Add BE_NegAbility to BE_Dummy[BE_MaxIndex]
    • Unit - Set level of BE_NegAbility for BE_Dummy[BE_MaxIndex] to BE_AbilityIndex[BE_MaxIndex]

    The reason you preload is because the first time you add an ability, there is a slight but, noticable, lag. If you do this on init, you completely avoid the lag. You only have to preload when you're adding abilities to something.
     
  14. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    Embarassing

    Edit: Updated (see changelog)
     
    Last edited: Dec 27, 2015
  15. Wrda

    Wrda

    Joined:
    Nov 18, 2012
    Messages:
    735
    Resources:
    3
    Maps:
    1
    Spells:
    2
    Resources:
    3
    I find preloading abilities and dummies pointless here since the user can do it very easily, since he didn't ask someone else to do it. (Or half the users don't know that)
    Also when you're preloading abilities, you're preloading all its data not just model and icon. Besides that you should preload the effects of the spell in game, on cast. Only after that you've completly preloaded the ability.
    About this spell, I find it very good, fun and original one.
     
  16. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    7,746
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    Neat idea. There are some issues with this resource which can be resolved:


    - The tooltip for learning the ability doesn't show the hotkey

    - You create a dummy unit just to check distance. That's a very convoluted way to do this and you should consider rethinking your method to something more practical.

    - The missile height arcs very rigidly and you may want to consider using a proper GetParabolaZ function.

    - It may be a good idea to use the dummy.mdx model file as that way the user doesn't need to copy over a new dummy unit for your spell.

    - You don't have to check in your group filter if the unit is not one of your dummies as your dummies have locust.
     
  17. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    Will fix.

    Do you have any suggestions? I haven't figured out a separate way how to check distances in MUI without having to create dummies.

    Searched for it, if you mean
    Code (vJASS):
    4 * h * x * (d - x) / (d * d)
    this formula, then I'll research it, seems pretty interesting :>

    Alrighty!

    Afaik the group picks units even those who are untargetable, since Empirean pointed out in the first version that the dummies can bounce between themselves. Other than that, I've had my experience with this and I'm pretty sure that it picks untargetable units.

    --

    Thanks for the review, appreciated!
     
  18. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    7,746
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    Locust units cannot be enumerated unless you are picking units owned by player. Locust is designed to remove a unit from normal play while keeping it visible. It's what keeps locusts from being hit by things like Rain of Fire. They are not invulnerable; but they are unclickable and ignore AoE.

    Next, you're checking distance between dummy and target. Why a third unit? I see you set the DistanceKeeper's position to the dummy's location before moving, so why not factor in how much the dummy moved into the distance comparison if that's its goal?
     
  19. Meatmuffin

    Meatmuffin

    Joined:
    Jul 25, 2014
    Messages:
    446
    Resources:
    9
    Maps:
    2
    Spells:
    7
    Resources:
    9
    Noted!
    Yeah and I need the third unit as a location variable (Position of (DistanceKeeper)). How else am I going to compare the total distance and the current distance? Enlighten me :D