1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. We have recently started the 16th edition of the Mini Mapping Contest. The theme is mini RPG. Do check it out and have fun.
    Dismiss Notice
  5. Choose your ride to damnation in the 5th Special Effect Contest Poll.
    Dismiss Notice
  6. The winners of the 13th Techtree Contest have been announced!
    Dismiss Notice
  7. Vote for the best entries in the 13th Music Contest Poll.
    Dismiss Notice
  8. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Fury Darts (GUI) v1j

Submitted by Beast(TrOg)
This bundle is marked as approved. It works and satisfies the submission rules.
This spell is MUI in GUI. It sends several homing missiles toward a point or unit. Along its path, it will change its target to the closest enemy. If there are no nearby enemies any longer, the missile will redirect itself toward its original target point (initial target position if used on an enemy).

The spell uses a index-recycling system I usually use. New spell casts will first fill in any inactive slots instead of simply ordering it as the max+1.
Enjoy; credit would be nice if anyone uses this spell.

Updates

v1j

- smoothened dart movement a bit
- lowered the amount of locations used! 1 per group of darts now rather than 1 per dart
- fixed possible indexing problem
[ overall made my code a lot harder to understand :) ]

v1e

- merged finding maximum active cast with the cast actions
- replaced the original target point reference with X, Y coordinates
- limited darts fly time
- darts get destroyed when out of bounds
- some test spell changes: no cooldown, # of darts
- some added notes

v1c2 cust

-this version makes it much easier for users to quickly change the spell stats: missile turn rate, # of darts, max speed, detection range, and collision range (I personally dislike doing this as players need 4 more variables)
- added/changed some code in an attempt to reduce a minor visual thing where a dart would slow down too much for a semi-second
- updated the code here (didn't for v1c2)

v1c2

-fixed a missile one-time back-movement sometimes
-synchronized dart initial launch angle with cast angle

v1b

-added slight effects (will improve later)
-fixed non-active slots from running actions
-fixed indexing a bit
-increased missile speed and reduced missile turn rate
-fixed possible leak



code Cast
  • hsCast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Fury Darts
    • Actions
      • -------- --------
      • -------- B O R I N G S P E L L D A T A S E T U P --------
      • -------- --------
      • -------- Index[5] = how many darts you desire --------
      • Set hsIndex[5] = (5 + (2 x ((Level of (Ability being cast) for (Triggering unit)) - 1)))
      • Set hsDamage[0] = (50.00 + (20.00 x (Real(((Level of (Ability being cast) for (Triggering unit)) - 1)))))
      • -------- Turn = the maximum angle difference darts may move --------
      • Set hsTurn[0] = (6.00 + (0.00 x (Real(((Level of (Ability being cast) for (Triggering unit)) - 1)))))
      • -------- Detect = radius at which darts encounter a unit to home into: WARNING: too high may lag the game --------
      • Set hsDetect[0] = (240.00 + (0.00 x (Real(((Level of (Ability being cast) for (Triggering unit)) - 1)))))
      • -------- Collide = radius at which darts reach the target. NOTE: Collide >= Detect will automatically hit the first unit, but too high won't make it look good --------
      • Set hsCollide[0] = (50.00 + (0.00 x (Real(((Level of (Ability being cast) for (Triggering unit)) - 1)))))
      • -------- SpeedMax = maximum speed a dart may reach. The minimum is half this value --------
      • Set hsSpeedMax[0] = (20.00 + (0.00 x (Real(((Level of (Ability being cast) for (Triggering unit)) - 1)))))
      • -------- --------
      • -------- S E T T I N G U P T E M P T H I N G S --------
      • -------- --------
      • Set hstPoint[1] = (Position of (Triggering unit))
      • -------- ( D e t e r m i n e a n i n d e x n u m b e r f o r t a r g e t p o i n t ) --------
      • -------- (used as the target point index number) --------
      • Set hsTargPointIndex[0] = 0
      • -------- (max active point array check) --------
      • Set hsIndex[3] = 0
      • For each (Integer hsIndex[0]) from 1 to hsIndex[6], do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • hsTargPointCounter[hsIndex[0]] Equal to 0
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hsTargPointIndex[0] Equal to 0
                • Then - Actions
                  • -------- (first available unused index) --------
                  • Set hsTargPointIndex[0] = hsIndex[0]
                • Else - Actions
            • Else - Actions
              • -------- (last unavailable used index) --------
              • Set hsIndex[3] = hsIndex[0]
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • hsTargPointIndex[0] Equal to 0
        • Then - Actions
          • -------- ( increase max active indexes and set to-be dart to that value ) --------
          • Set hsIndex[6] = (hsIndex[6] + 1)
          • Set hsTargPointIndex[0] = hsIndex[6]
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • hsTargPointIndex[0] Greater than hsIndex[3]
            • Then - Actions
              • -------- ( shorten max Index to last active index including the upcoming one ) --------
              • Set hsIndex[6] = hsTargPointIndex[0]
            • Else - Actions
              • -------- ( shorten max Index to last active index ) --------
              • Set hsIndex[6] = hsIndex[3]
      • -------- ( targeting ground or unit? ) --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Target unit of ability being cast) Equal to No unit
        • Then - Actions
          • -------- ( no target ) --------
          • Set hsTargPoint[hsTargPointIndex[0]] = (Target point of ability being cast)
          • Set hsTarg[0] = No unit
        • Else - Actions
          • -------- ( unit ) --------
          • Set hsTargPoint[hsTargPointIndex[0]] = (Position of (Target unit of ability being cast))
          • -------- Targ[0] = is used to make all darts target the targeted unit [3] --------
          • Set hsTarg[0] = (Target unit of ability being cast)
      • -------- --------
      • -------- N O W T H E F U N --------
      • -------- --------
      • -------- (keeps track of how many darts use the target point) --------
      • Set hsTargPointCounter[hsTargPointIndex[0]] = hsIndex[5]
      • For each (Integer hsIndex[4]) from 1 to hsIndex[5], do (Actions)
        • Loop - Actions
          • -------- --------
          • -------- C H E C K F O R O P E N I N D E X --------
          • -------- --------
          • Set hsIndex[2] = 0
          • Set hsIndex[3] = 0
          • For each (Integer hsIndex[0]) from 1 to hsIndex[1], do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hsDart[hsIndex[0]] Equal to No unit
                • Then - Actions
                  • -------- ( available slot! but do we already have one selected? ) --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • hsIndex[2] Equal to 0
                    • Then - Actions
                      • Set hsIndex[2] = hsIndex[0]
                    • Else - Actions
                • Else - Actions
                  • -------- ( active slot! ) --------
                  • Set hsIndex[3] = hsIndex[0]
          • -------- ( if no open slots are available, make one ) --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • hsIndex[2] Equal to 0
            • Then - Actions
              • -------- ( increase max active indexes and set to-be dart to that value ) --------
              • Set hsIndex[1] = (hsIndex[1] + 1)
              • Set hsIndex[2] = hsIndex[1]
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hsIndex[2] Greater than hsIndex[3]
                • Then - Actions
                  • -------- ( shorten max Index to last active index including the upcoming one ) --------
                  • Set hsIndex[1] = hsIndex[2]
                • Else - Actions
                  • -------- ( shorten max Index to last active index ) --------
                  • Set hsIndex[1] = hsIndex[3]
          • -------- --------
          • -------- S P E L L D A T A F O R E A C H D A R T --------
          • -------- --------
          • Set hsTarg[hsIndex[2]] = hsTarg[0]
          • Set hsDamage[hsIndex[2]] = hsDamage[0]
          • Set hsTurn[hsIndex[2]] = hsTurn[0]
          • -------- (directs the target point index number for all darts) --------
          • Set hsDartPointIndex[hsIndex[2]] = hsTargPointIndex[0]
          • -------- --------
          • -------- S P E L L A C T I O N S --------
          • -------- --------
          • -------- Real[1] = angle darts will be at initially; divide by how many darts you create. --------
          • Set hstReal[3] = (((360.00 / (Real(hsIndex[5]))) x (Real(hsIndex[4]))) + (Angle from hstPoint[1] to hsTargPoint[hsTargPointIndex[0]]))
          • Set hstPoint[2] = (hstPoint[1] offset by 10.00 towards hstReal[3] degrees)
          • Set hsTurn[hsIndex[2]] = hsTurn[0]
          • Set hsDetect[hsIndex[2]] = hsDetect[0]
          • Set hsCollide[hsIndex[2]] = hsCollide[0]
          • Set hsSpeedMax[hsIndex[2]] = hsSpeedMax[0]
          • Unit - Create 1 Fury Dart for (Owner of (Triggering unit)) at hstPoint[2] facing hstReal[3] degrees
          • Set hsDart[hsIndex[2]] = (Last created unit)
          • -------- This limits how long the dart moves for. If you want the dart to keep going until it hits its target, remove the expiration timer --------
          • Unit - Add a 4.00 second Generic expiration timer to hsDart[hsIndex[2]]
          • -------- L E A K --------
          • Custom script: call RemoveLocation(udg_hstPoint[2])
      • -------- --------
      • -------- L E A K S A R E F U N --------
      • -------- --------
      • Custom script: call RemoveLocation(udg_hstPoint[1])
      • -------- --------
      • Trigger - Turn on hsInterval <gen>



code Interval

  • hsInterval
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Set hsIndex[3] = 0
      • For each (Integer hsIndex[0]) from 1 to hsIndex[1], do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • hsDart[hsIndex[0]] Not equal to No unit
            • Then - Actions
              • -------- --------
              • -------- S E T U P D A T A F O R C A L C U L A T I O N S --------
              • -------- --------
              • Set hstReal[1] = (Facing of hsDart[hsIndex[0]])
              • Set hstPoint[1] = (Position of hsDart[hsIndex[0]])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hsTarg[hsIndex[0]] Not equal to No unit
                • Then - Actions
                  • -------- ( there is a target ) --------
                  • Set hstPoint[2] = (Position of hsTarg[hsIndex[0]])
                  • Set hstReal[2] = (Angle from hstPoint[1] to hstPoint[2])
                • Else - Actions
                  • -------- ( no target ) --------
                  • Set hstReal[2] = (Angle from hstPoint[1] to hsTargPoint[hsDartPointIndex[hsIndex[0]]])
              • -------- ( calculate new angle ) --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (hstReal[2] - hstReal[1]) Greater than or equal to 180.00
                • Then - Actions
                  • Set hstReal[1] = (hstReal[1] + 360.00)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (hstReal[2] - hstReal[1]) Less than or equal to -180.00
                    • Then - Actions
                      • Set hstReal[2] = (hstReal[2] + 360.00)
                    • Else - Actions
              • Set hstReal[3] = ((hstReal[1] + hstReal[2]) / 2.00)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (hstReal[3] - hstReal[1]) Greater than hsTurn[hsIndex[0]]
                • Then - Actions
                  • -------- ( turning too hard to left ) --------
                  • Set hstReal[3] = (hstReal[1] + hsTurn[hsIndex[0]])
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (hstReal[3] - hstReal[1]) Less than (-1.00 x hsTurn[hsIndex[0]])
                    • Then - Actions
                      • -------- ( turning too hard to right ) --------
                      • Set hstReal[3] = (hstReal[1] - hsTurn[hsIndex[0]])
                    • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hstReal[3] Less than 0.00
                • Then - Actions
                  • Set hstReal[3] = (hstReal[3] + 360.00)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hstReal[3] Greater than 360.00
                • Then - Actions
                  • Set hstReal[3] = (hstReal[3] - 360.00)
                • Else - Actions
              • -------- ( movement of dart, etc. ) --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hstReal[1] Less than hstReal[3]
                • Then - Actions
                  • -------- [ DEBUGGING: not dividing by 0 ] --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • hstReal[3] Equal to 0.00
                    • Then - Actions
                      • Set hstReal[3] = 0.01
                    • Else - Actions
                  • Set hstReal[4] = (hstReal[1] / hstReal[3])
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • hstReal[1] Greater than hstReal[3]
                    • Then - Actions
                      • -------- [ DEBUGGING: not dividing by 0 ] --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • hstReal[1] Equal to 0.00
                        • Then - Actions
                          • Set hstReal[1] = 0.01
                        • Else - Actions
                      • Set hstReal[4] = (hstReal[3] / hstReal[1])
                    • Else - Actions
                      • -------- ( dart is not turning, goes max speed ) --------
                      • Set hstReal[4] = 1.00
              • -------- ( limit speed factor to be above 0.50 ) --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hstReal[4] Less than 0.50
                • Then - Actions
                  • Set hstReal[4] = 0.50
                • Else - Actions
              • -------- ( speed: max speed * factor which is dependant on angle difference ) --------
              • Set hstReal[5] = (hsSpeedMax[hsIndex[0]] x hstReal[4])
              • Set hstPoint[3] = (hstPoint[1] offset by hstReal[5] towards hstReal[3] degrees)
              • Unit - Move hsDart[hsIndex[0]] instantly to hstPoint[3], facing hstReal[3] degrees
              • -------- --------
              • -------- D E T E C T U N I T S I N R A N G E --------
              • -------- --------
              • Set hstUGroup = (Units within hsDetect[hsIndex[0]] of hstPoint[3] matching ((((Matching unit) belongs to an enemy of (Owner of hsDart[hsIndex[0]])) Equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is A structure) Not equal to True))))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • (Number of units in hstUGroup) Greater than 0
                          • (hsTarg[hsIndex[0]] is in hstUGroup) Not equal to True
                      • And - All (Conditions) are true
                        • Conditions
                          • (Number of units in hstUGroup) Greater than 1
                          • (hsTarg[hsIndex[0]] is in hstUGroup) Equal to True
                • Then - Actions
                  • -------- ( find closest unit ) --------
                  • Set hstReal[6] = (hsDetect[hsIndex[0]] + 1.00)
                  • Unit Group - Pick every unit in hstUGroup and do (Actions)
                    • Loop - Actions
                      • Set hstPoint[4] = (Position of (Picked unit))
                      • Set hstReal[7] = (Distance between hstPoint[3] and hstPoint[4])
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • hstReal[7] Less than hstReal[6]
                        • Then - Actions
                          • Set hstReal[6] = hstReal[7]
                          • Set hsTarg[hsIndex[0]] = (Picked unit)
                        • Else - Actions
                      • -------- --------
                      • -------- L E A K S B E G O N E --------
                      • -------- --------
                      • Custom script: call RemoveLocation(udg_hstPoint[4])
                • Else - Actions
              • -------- ( collision/reach target point ) --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hsTarg[hsIndex[0]] Not equal to No unit
                  • (hsTarg[hsIndex[0]] is dead) Equal to True
                • Then - Actions
                  • Set hsTarg[hsIndex[0]] = No unit
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hsTarg[hsIndex[0]] Not equal to No unit
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between hstPoint[3] and hstPoint[2]) Less than or equal to hsCollide[hsIndex[0]]
                    • Then - Actions
                      • Unit - Cause hsDart[hsIndex[0]] to damage hsTarg[hsIndex[0]], dealing hsDamage[hsIndex[0]] damage of attack type Chaos and damage type Universal
                      • Special Effect - Create a special effect at hstPoint[2] using Abilities\Weapons\HydraliskImpact\HydraliskImpact.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Create a special effect at hstPoint[2] using Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Remove hsDart[hsIndex[0]] from the game
                      • Set hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] = (hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] - 1)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] Equal to 0
                        • Then - Actions
                          • -------- (the target point is no longer used by any other dart) --------
                          • Custom script: call RemoveLocation(udg_hsTargPoint[udg_hsDartPointIndex[udg_hsIndex[0]]])
                        • Else - Actions
                      • Set hsDart[hsIndex[0]] = No unit
                      • Set hsTarg[hsIndex[0]] = No unit
                    • Else - Actions
                  • -------- L E A K --------
                  • Custom script: call RemoveLocation(udg_hstPoint[2])
                • Else - Actions
                  • -------- ( reached original target position ) --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between hstPoint[3] and hsTargPoint[hsDartPointIndex[hsIndex[0]]]) Less than or equal to hsCollide[hsIndex[0]]
                    • Then - Actions
                      • Special Effect - Create a special effect at hstPoint[3] using Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Set hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] = (hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] - 1)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] Equal to 0
                        • Then - Actions
                          • -------- (the target point is no longer used by any other dart) --------
                          • Custom script: call RemoveLocation(udg_hsTargPoint[udg_hsDartPointIndex[udg_hsIndex[0]]])
                        • Else - Actions
                      • Unit - Remove hsDart[hsIndex[0]] from the game
                      • Set hsDart[hsIndex[0]] = No unit
                    • Else - Actions
              • -------- ( dart went out of bounds ) --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hsDart[hsIndex[0]] Not equal to No unit
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (hsDart[hsIndex[0]] is dead) Equal to True
                      • ((Playable map area) contains hstPoint[3]) Not equal to True
                • Then - Actions
                  • Special Effect - Create a special effect at hstPoint[3] using Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] = (hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • hsTargPointCounter[hsDartPointIndex[hsIndex[0]]] Equal to 0
                    • Then - Actions
                      • -------- (the target point is no longer used by any other dart) --------
                      • Custom script: call RemoveLocation(udg_hsTargPoint[udg_hsDartPointIndex[udg_hsIndex[0]]])
                    • Else - Actions
                  • Unit - Remove hsDart[hsIndex[0]] from the game
                  • Set hsDart[hsIndex[0]] = No unit
                • Else - Actions
              • -------- --------
              • -------- L E A K S B E G O N E --------
              • -------- --------
              • Custom script: call RemoveLocation(udg_hstPoint[1])
              • Custom script: call RemoveLocation(udg_hstPoint[3])
              • Custom script: call DestroyGroup(udg_hstUGroup)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hsDart[hsIndex[0]] Not equal to No unit
                • Then - Actions
                  • -------- ( active slot! ) --------
                  • Set hsIndex[3] = hsIndex[0]
                • Else - Actions
            • Else - Actions
      • -------- --------
      • -------- U P D A T E A R R A Y O F A C T I V E D A R T S --------
      • -------- ( shorten max Index to last active index ) --------
      • Set hsIndex[1] = hsIndex[3]
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • hsIndex[3] Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions



Keywords:
Homing, missile, arrow, awesome, Fury Darts, fury, dart
Contents

Fury Darts (Map)

Reviews
Moderator
15:02, 9th Oct 2009 The_Reborn_Devil: I really liked the effects and the motion of the darts in this spell! The triggering looked also good. It started to lag a little when I had 60 darts, but I don't think there's much you could do about that...
  1. 15:02, 9th Oct 2009
    The_Reborn_Devil:

    I really liked the effects and the motion of the darts in this spell!
    The triggering looked also good.
    It started to lag a little when I had 60 darts, but I don't think there's much you could do about that unless you make it in vJass.
    Approved.
    I give this spell the rating Recommended.

    It would be nice if you made it easier for people to change the amount of darts though. Make a global or something.
     
  2. Aspard

    Aspard

    Joined:
    Jul 2, 2008
    Messages:
    595
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Absolutely clean coding, accompanied with useful custom comments, leakles and MUI.
    The spell description is good also, the only thing I'd like to suggest is increasing the speed of the projectiles a bit and adding some effect on collising with units. E.g. Dark Arrow death or smth like that. You got it ;)
     
  3. pippo

    pippo

    Joined:
    Mar 6, 2008
    Messages:
    476
    Resources:
    4
    Icons:
    1
    Skins:
    1
    Spells:
    2
    Resources:
    4
    my review:
    -LeakLESS :fp:5/5
    -Fully MUI :fp:5/5
    -Index is great :fp:5/5
    -Good description :fp:5/5
    -Cool spell :fp:5/5

    Ofc it is 5/5!:thumbs_up:
     
  4. Deuterium

    Deuterium

    Joined:
    Mar 17, 2009
    Messages:
    1,301
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    Nice one =) btw, if you've got the english WE, please do us the favor of posting the code here ;)
     
  5. -Berz-

    -Berz-

    Joined:
    Mar 5, 2008
    Messages:
    3,203
    Resources:
    123
    Icons:
    111
    Packs:
    1
    Skins:
    1
    Spells:
    10
    Resources:
    123
    Nice spell :D

    I like the idea a lot ;)
     
  6. Beast(TrOg)

    Beast(TrOg)

    Joined:
    Nov 4, 2006
    Messages:
    148
    Resources:
    5
    Maps:
    3
    Spells:
    2
    Resources:
    5
    Thanks everyone. I've increased the dart speeds and added code here.

    Note: There is a pretty rare occurance where a dart would get moved to the center of the map (or somewhere like that). So far, I have only seen it when I mass cast like 40 darts. I'll fix it if I find the problem. -- FIXED hopefully
     
    Last edited: Oct 8, 2009
  7. pippo

    pippo

    Joined:
    Mar 6, 2008
    Messages:
    476
    Resources:
    4
    Icons:
    1
    Skins:
    1
    Spells:
    2
    Resources:
    4
    yeah i noted it too...
     
  8. incinerate11

    incinerate11

    Joined:
    Oct 5, 2009
    Messages:
    31
    Resources:
    0
    Resources:
    0
    there is a slight bugg in this spell, and i was wondering if its fixable :p

    whenever i cast the darts by a boundary wall .. it never dis appears, even in this test map.

    it would be appreciated if this could be fixed cause wanna use this spell on my map :D .. i will give credit
     
  9. Beast(TrOg)

    Beast(TrOg)

    Joined:
    Nov 4, 2006
    Messages:
    148
    Resources:
    5
    Maps:
    3
    Spells:
    2
    Resources:
    5
    Here you go incinerate11. Thanks.
     
  10. Catch_ya

    Catch_ya

    Joined:
    May 21, 2009
    Messages:
    982
    Resources:
    1
    Spells:
    1
    Resources:
    1
    This is great.. I like your comments: LEAKS ARE FUN, LEAKS BE GONE
     
  11. Kingz

    Kingz

    Joined:
    Jun 5, 2008
    Messages:
    2,470
    Resources:
    6
    Spells:
    5
    Tutorials:
    1
    Resources:
    6
    Adding blood effects to unit's hit by the darts would be nice(some subtle ones, not to much blood).

    EDIT:

    By far one of the best GUI spells in a long time, now this is a spell that deserves 5/5, idea is a pure win and fresh, not just a normal one :)

    [offtop]

    The arcing is smooth and eyeapealing, to bad most people don't use it in spells since it looks damn good.
     
  12. incinerate11

    incinerate11

    Joined:
    Oct 5, 2009
    Messages:
    31
    Resources:
    0
    Resources:
    0
    much thanks Beast(TrOg) , very nice spell and thank you for making /sharing it.
     
  13. X-OMG-X

    X-OMG-X

    Joined:
    Nov 10, 2008
    Messages:
    1,942
    Resources:
    16
    Icons:
    1
    Skins:
    3
    Maps:
    2
    Spells:
    8
    Template:
    1
    Tutorials:
    1
    Resources:
    16
    Awesome spell you got there. :p
     
  14. HaniBon

    HaniBon

    Joined:
    Apr 25, 2009
    Messages:
    464
    Resources:
    0
    Resources:
    0
    I love this spell! +rep
     
  15. NoMoreChallenge

    NoMoreChallenge

    Joined:
    Nov 14, 2009
    Messages:
    192
    Resources:
    0
    Resources:
    0
    Great spell, used in my map. 5/5 +rep
     
  16. Nugamentum

    Nugamentum

    Joined:
    May 29, 2009
    Messages:
    66
    Resources:
    2
    Icons:
    2
    Resources:
    2
    Thats awesome! Just what I needed! 10/10 and rep!
     
  17. Foxiu

    Foxiu

    Joined:
    Jan 2, 2010
    Messages:
    34
    Resources:
    0
    Resources:
    0
    Its looks nice :)
    I like it!
    +rep
     
    Last edited: Jan 17, 2010
  18. RobinValentine

    RobinValentine

    Joined:
    Apr 18, 2013
    Messages:
    56
    Resources:
    0
    Resources:
    0
    i love this spell. it's really fun and works well with the Maiev model