• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Seeking Cluster Rockets v1.0

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

A spell inspired from Blizzard standard spell, Cluster Rockets

  • Description
    Shots a bunch of seeking cluster rockets towards targeted unit for a few seconds. Each rockets cause small damage to nearby enemy ground units in 150 AoE from an explosion that happen if the rocket hit a unit or tree.
  • Levels
    Level 1 - Shots for 3 seconds, 30 damage.
    Level 2 - Shots for 4 seconds, 40 damage.
    Level 3 - Shots for 5 seconds, 50 damage.
  • Code
    • Seeking Cluster Rockets Init
      • Events
        • Map initialization
      • Conditions
      • Actions
        • -------- --------------------------- --------
        • -------- Configuration --------
        • -------- --------------------------- --------
        • -------- Determines the ability --------
        • Set SCR_Ability = Seeking Cluster Rockets
        • -------- Determines the base order id of the ability --------
        • Set SCR_OrderId = (Order(banish))
        • -------- Determines the dummy unit-type --------
        • Set SCR_DummyType = Seeking Cluster Rockets Dummy
        • -------- Determines the model of the rocket --------
        • Set SCR_RocketModel = Abilities\Weapons\CannonTowerMissile\CannonTowerMissile.mdl
        • -------- Determines the rocket scale --------
        • Set SCR_RocketScale = 1.00
        • -------- Determines the rocket height --------
        • Set SCR_RocketHeight = 50.00
        • -------- Determines the rocket collision --------
        • Set SCR_RocketCollision = 50.00
        • -------- Determines the rocket facing rate --------
        • Set SCR_RocketFacingTime = 0.00
        • -------- Determines the rocket spawn offset from the caster position --------
        • Set SCR_RocketSpawnOffset = 50.00
        • -------- Determines the rocket move speed --------
        • Set SCR_RocketSpeed[1] = 30.00
        • Set SCR_RocketSpeed[2] = 30.00
        • Set SCR_RocketSpeed[3] = 30.00
        • -------- Determines the rocket expiration time. This is used to remove stucked rockets --------
        • Set SCR_RocketDebugTime = 8.00
        • -------- Determines the shot angle width --------
        • Set SCR_ShotAngleWidth = 200.00
        • -------- Determines the shot interval --------
        • Set SCR_ShotInterval[1] = 0.10
        • Set SCR_ShotInterval[2] = 0.10
        • Set SCR_ShotInterval[3] = 0.10
        • -------- Determines the minimum distance between the rocket and target to explode --------
        • Set SCR_MinDistance = 100.00
        • -------- Determines the explosion model --------
        • Set SCR_ExplosionModel = Abilities\Weapons\SteamTank\SteamTankImpact.mdl
        • -------- Determines the explosion AoE --------
        • Set SCR_ExplosionAoE[1] = 150.00
        • Set SCR_ExplosionAoE[2] = 150.00
        • Set SCR_ExplosionAoE[3] = 150.00
        • -------- Determines the explosion damage --------
        • Set SCR_ExplosionDamage[1] = 30.00
        • Set SCR_ExplosionDamage[2] = 40.00
        • Set SCR_ExplosionDamage[3] = 50.00
        • -------- Determines the explosion attack-type --------
        • Set SCR_AttackType = Siege
        • -------- Determines the explosion damage-type --------
        • Set SCR_DamageType = Fire
        • -------- If "True", nearby trees will be destroyed --------
        • Set SCR_DestroyTree = True
        • -------- --------------------------- --------
        • -------- End of Configuration --------
        • -------- =========================================================================== --------
        • -------- --------------------------- --------
        • -------- Note: This spell will start working if this trigger has been executed --------
        • -------- --------------------------- --------
        • -------- This is a configurable variable too, but this one isn't recommended to be changed --------
        • -------- This is the interval of the spell, default is 0.03. Don't change this to lower value, else the game will be laggy --------
        • Set SCR_Interval = 0.03
        • -------- All actions below isn't configurable. Please don't change anything below this line --------
        • -------- I don't have ability to explain it all, sorry :D --------
        • -------- --------------------------- --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • (Seeking Cluster Rockets Loop <gen> is on) Equal to True
          • Then - Actions
            • Trigger - Turn off Seeking Cluster Rockets Loop <gen>
          • Else - Actions
        • Trigger - Add to Seeking Cluster Rockets Loop <gen> the event (Time - Every SCR_Interval seconds of game time)
        • Trigger - Add to Seeking Cluster Rockets Cast <gen> the event (Unit - A unit Starts the effect of an ability)
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • SCR_DestroyTree Equal to True
          • Then - Actions
            • Custom script: set udg_SCR_HarvestOrder = String2OrderIdBJ("harvest")
            • Custom script: set udg_SCR_Harvester = CreateUnit(Player(15), 'hpea', 0, 0, 0)
            • Custom script: call UnitAddAbility(udg_SCR_Harvester, 'Aloc')
            • Unit - Hide SCR_Harvester
          • Else - Actions
        • Set SCR_ShotAngleWidth = (SCR_ShotAngleWidth / 2.00)
        • Set SCR_MinDistance = (SCR_MinDistance x SCR_MinDistance)
    • Seeking Cluster Rockets Cast
      • Events
      • Conditions
        • (Ability being cast) Equal to SCR_Ability
      • Actions
        • Set SCR_Caster[0] = (Triggering unit)
        • For each (Integer SCR_Index) from 1 to SCR_MaxIndex, do (Actions)
          • Loop - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • SCR_Caster[SCR_Index] Equal to SCR_Caster[0]
                • SCR_Stage[SCR_Index] Equal to 2
              • Then - Actions
                • Set SCR_Stage[SCR_Index] = 3
              • Else - Actions
        • Set SCR_MaxIndex = (SCR_MaxIndex + 1)
        • Set SCR_Caster[SCR_MaxIndex] = SCR_Caster[0]
        • Set SCR_Owner[SCR_MaxIndex] = (Triggering player)
        • Set SCR_Target[SCR_MaxIndex] = (Target unit of ability being cast)
        • Set SCR_Level[SCR_MaxIndex] = (Level of SCR_Ability for SCR_Caster[SCR_MaxIndex])
        • Custom script: set udg_SCR_CasterX[udg_SCR_MaxIndex] = GetUnitX(udg_SCR_Caster[udg_SCR_MaxIndex])
        • Custom script: set udg_SCR_CasterY[udg_SCR_MaxIndex] = GetUnitY(udg_SCR_Caster[udg_SCR_MaxIndex])
        • Set SCR_Real[SCR_MaxIndex] = 0.00
        • Set SCR_Stage[SCR_MaxIndex] = 2
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • SCR_MaxIndex Equal to 1
          • Then - Actions
            • Trigger - Turn on Seeking Cluster Rockets Loop <gen>
          • Else - Actions
    • Seeking Cluster Rockets Loop
      • Events
      • Conditions
      • Actions
        • For each (Integer SCR_Index) from 1 to SCR_MaxIndex, do (Actions)
          • Loop - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • SCR_Stage[SCR_Index] Equal to 1
              • Then - Actions
                • Custom script: set udg_SCR_X[1] = GetUnitX(udg_SCR_Dummy[udg_SCR_Index])
                • Custom script: set udg_SCR_Y[1] = GetUnitY(udg_SCR_Dummy[udg_SCR_Index])
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (SCR_Target[SCR_Index] is dead) Equal to False
                    • SCR_Skip[SCR_Index] Equal to False
                  • Then - Actions
                    • Custom script: set udg_SCR_X[2] = GetUnitX(udg_SCR_Target[udg_SCR_Index]) - udg_SCR_X[1]
                    • Custom script: set udg_SCR_Y[2] = GetUnitY(udg_SCR_Target[udg_SCR_Index]) - udg_SCR_Y[1]
                    • Custom script: set udg_SCR_Real[0] = udg_SCR_X[2] * udg_SCR_X[2] + udg_SCR_Y[2] * udg_SCR_Y[2]
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • SCR_Real[0] Greater than SCR_MinDistance
                      • Then - Actions
                        • Unit - Make SCR_Dummy[SCR_Index] face SCR_Target[SCR_Index] over SCR_RocketFacingTime seconds
                        • Custom script: set udg_SCR_Real2[0] = GetUnitFacing(udg_SCR_Dummy[udg_SCR_Index]) * bj_DEGTORAD
                        • Custom script: set udg_SCR_X[1] = udg_SCR_X[1] + udg_SCR_RocketSpeed[udg_SCR_Level[udg_SCR_Index]] * Cos(udg_SCR_Real2[0])
                        • Custom script: set udg_SCR_Y[1] = udg_SCR_Y[1] + udg_SCR_RocketSpeed[udg_SCR_Level[udg_SCR_Index]] * Sin(udg_SCR_Real2[0])
                        • Custom script: call SetUnitX(udg_SCR_Dummy[udg_SCR_Index], udg_SCR_X[1])
                        • Custom script: call SetUnitY(udg_SCR_Dummy[udg_SCR_Index], udg_SCR_Y[1])
                        • Set SCR_TempLoc = (Point(SCR_X[1], SCR_Y[1]))
                        • Custom script: set bj_wantDestroyGroup = true
                        • Unit Group - Pick every unit in (Units within SCR_RocketCollision of SCR_TempLoc) and do (Actions)
                          • Loop - Actions
                            • Set SCR_TempUnit = (Picked unit)
                            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (SCR_TempUnit is dead) Equal to False
                                • (SCR_TempUnit is A flying unit) Equal to False
                                • (SCR_TempUnit is Magic Immune) Equal to False
                                • (SCR_TempUnit belongs to an ally of SCR_Owner[SCR_Index]) Equal to False
                              • Then - Actions
                                • Set SCR_Skip[SCR_Index] = True
                              • Else - Actions
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • SCR_DestroyTree Equal to True
                          • Then - Actions
                            • Destructible - Pick every destructible within SCR_RocketCollision of SCR_TempLoc and do (Actions)
                              • Loop - Actions
                                • Set SCR_TempDest = (Picked destructible)
                                • Custom script: call IssueTargetOrderById(udg_SCR_Harvester, udg_SCR_HarvestOrder, udg_SCR_TempDest)
                                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Current order of SCR_Harvester) Equal to SCR_HarvestOrder
                                    • (SCR_TempDest is dead) Equal to False
                                  • Then - Actions
                                    • Set SCR_Skip[SCR_Index] = True
                                  • Else - Actions
                            • Unit - Order SCR_Harvester to Stop
                          • Else - Actions
                        • Custom script: call RemoveLocation(udg_SCR_TempLoc)
                        • Set SCR_Real[SCR_Index] = (SCR_Real[SCR_Index] + SCR_Interval)
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • SCR_Real[SCR_Index] Greater than or equal to SCR_RocketDebugTime
                          • Then - Actions
                            • Set SCR_Skip[SCR_Index] = True
                          • Else - Actions
                      • Else - Actions
                        • Set SCR_Skip[SCR_Index] = True
                  • Else - Actions
                    • Custom script: call DestroyEffect(AddSpecialEffect(udg_SCR_ExplosionModel, udg_SCR_X[1], udg_SCR_Y[1]))
                    • Set SCR_TempLoc = (Point(SCR_X[1], SCR_Y[1]))
                    • Custom script: set bj_wantDestroyGroup = true
                    • Unit Group - Pick every unit in (Units within SCR_ExplosionAoE[SCR_Level[SCR_Index]] of SCR_TempLoc) and do (Actions)
                      • Loop - Actions
                        • Set SCR_TempUnit = (Picked unit)
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (SCR_TempUnit is dead) Equal to False
                            • (SCR_TempUnit is A flying unit) Equal to False
                            • (SCR_TempUnit is Magic Immune) Equal to False
                            • (SCR_TempUnit belongs to an ally of SCR_Owner[SCR_Index]) Equal to False
                          • Then - Actions
                            • Unit - Cause SCR_Caster[SCR_Index] to damage SCR_TempUnit, dealing SCR_ExplosionDamage[SCR_Level[SCR_Index]] damage of attack type SCR_AttackType and damage type SCR_DamageType
                          • Else - Actions
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • SCR_DestroyTree Equal to True
                      • Then - Actions
                        • Destructible - Pick every destructible within SCR_ExplosionAoE[SCR_Level[SCR_Index]] of SCR_TempLoc and do (Actions)
                          • Loop - Actions
                            • Set SCR_TempDest = (Picked destructible)
                            • Custom script: call IssueTargetOrderById(udg_SCR_Harvester, udg_SCR_HarvestOrder, udg_SCR_TempDest)
                            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Current order of SCR_Harvester) Equal to SCR_HarvestOrder
                              • Then - Actions
                                • Destructible - Kill SCR_TempDest
                              • Else - Actions
                        • Unit - Order SCR_Harvester to Stop
                      • Else - Actions
                    • Custom script: call RemoveLocation(udg_SCR_TempLoc)
                    • Special Effect - Destroy SCR_Model[SCR_Index]
                    • Unit - Kill SCR_Dummy[SCR_Index]
                    • Set SCR_Stage[SCR_Index] = 3
              • Else - Actions
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • SCR_Stage[SCR_Index] Equal to 2
                  • Then - Actions
                    • Custom script: set udg_SCR_X[1] = GetUnitX(udg_SCR_Caster[udg_SCR_Index])
                    • Custom script: set udg_SCR_Y[1] = GetUnitY(udg_SCR_Caster[udg_SCR_Index])
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Current order of SCR_Caster[SCR_Index]) Equal to SCR_OrderId
                        • SCR_X[1] Equal to SCR_CasterX[SCR_Index]
                        • SCR_Y[1] Equal to SCR_CasterY[SCR_Index]
                        • (SCR_Target[SCR_Index] is dead) Equal to False
                      • Then - Actions
                        • Unit - Make SCR_Caster[SCR_Index] face SCR_Target[SCR_Index] over 0.00 seconds
                        • Set SCR_Real[SCR_Index] = (SCR_Real[SCR_Index] + SCR_Interval)
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • SCR_Real[SCR_Index] Greater than or equal to SCR_ShotInterval[SCR_Level[SCR_Index]]
                          • Then - Actions
                            • Set SCR_Real[SCR_Index] = 0.00
                            • Set SCR_Real[0] = (Facing of SCR_Caster[SCR_Index])
                            • Custom script: set udg_SCR_Real2[0] = udg_SCR_Real[0] * bj_DEGTORAD
                            • Custom script: set udg_SCR_X[2] = udg_SCR_X[1] + udg_SCR_RocketSpawnOffset * Cos(udg_SCR_Real2[0])
                            • Custom script: set udg_SCR_Y[2] = udg_SCR_Y[1] + udg_SCR_RocketSpawnOffset * Sin(udg_SCR_Real2[0])
                            • Set SCR_ShotInterval[4] = (SCR_Real[0] - SCR_ShotAngleWidth)
                            • Set SCR_ShotInterval[5] = (SCR_Real[0] + SCR_ShotAngleWidth)
                            • Set SCR_MaxIndex = (SCR_MaxIndex + 1)
                            • Custom script: set udg_SCR_Dummy[udg_SCR_MaxIndex] = CreateUnit(udg_SCR_Owner[udg_SCR_Index], udg_SCR_DummyType, udg_SCR_X[2], udg_SCR_Y[2], GetRandomReal(udg_SCR_ShotInterval[4], udg_SCR_ShotInterval[5]))
                            • Custom script: if (UnitAddAbility(udg_SCR_Dummy[udg_SCR_MaxIndex], 'Amrf') and UnitRemoveAbility(udg_SCR_Dummy[udg_SCR_MaxIndex], 'Amrf')) then
                            • Custom script: endif
                            • Special Effect - Create a special effect attached to the origin of SCR_Dummy[SCR_MaxIndex] using SCR_RocketModel
                            • Set SCR_Model[SCR_MaxIndex] = (Last created special effect)
                            • Custom script: call SetUnitScale(udg_SCR_Dummy[udg_SCR_MaxIndex], udg_SCR_RocketScale, 0, 0)
                            • Animation - Change SCR_Dummy[SCR_MaxIndex] flying height to SCR_RocketHeight at 0.00
                            • Set SCR_Caster[SCR_MaxIndex] = SCR_Caster[SCR_Index]
                            • Set SCR_Owner[SCR_MaxIndex] = SCR_Owner[SCR_Index]
                            • Set SCR_Target[SCR_MaxIndex] = SCR_Target[SCR_Index]
                            • Set SCR_Level[SCR_MaxIndex] = SCR_Level[SCR_Index]
                            • Set SCR_Skip[SCR_MaxIndex] = False
                            • Set SCR_Real[SCR_MaxIndex] = 0.00
                            • Set SCR_Stage[SCR_MaxIndex] = 1
                          • Else - Actions
                      • Else - Actions
                        • Unit - Order SCR_Caster[SCR_Index] to Stop
                        • Set SCR_Stage[SCR_Index] = 3
                  • Else - Actions
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • SCR_Stage[SCR_Index] Equal to 3
                      • Then - Actions
                        • Set SCR_Caster[SCR_Index] = SCR_Caster[SCR_MaxIndex]
                        • Set SCR_CasterX[SCR_Index] = SCR_CasterX[SCR_MaxIndex]
                        • Set SCR_CasterY[SCR_Index] = SCR_CasterY[SCR_MaxIndex]
                        • Set SCR_Dummy[SCR_Index] = SCR_Dummy[SCR_MaxIndex]
                        • Set SCR_Level[SCR_Index] = SCR_Level[SCR_MaxIndex]
                        • Set SCR_Model[SCR_Index] = SCR_Model[SCR_MaxIndex]
                        • Set SCR_Owner[SCR_Index] = SCR_Owner[SCR_MaxIndex]
                        • Set SCR_Real[SCR_Index] = SCR_Real[SCR_MaxIndex]
                        • Set SCR_Real2[SCR_Index] = SCR_Real2[SCR_MaxIndex]
                        • Set SCR_Skip[SCR_Index] = SCR_Skip[SCR_MaxIndex]
                        • Set SCR_Stage[SCR_Index] = SCR_Stage[SCR_MaxIndex]
                        • Set SCR_Target[SCR_Index] = SCR_Target[SCR_MaxIndex]
                        • Set SCR_Index = (SCR_Index - 1)
                        • Set SCR_MaxIndex = (SCR_MaxIndex - 1)
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • SCR_MaxIndex Equal to 0
                          • Then - Actions
                            • Trigger - Turn off (This trigger)
                          • Else - Actions
                      • Else - Actions
  • Credits
    - Vexorian for dummy.mdl


Keywords:
Rockets, Cluster, Explosion, AoE, MUI, GUI
Contents

Test Map (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Seeking Cluster Rockets v1.0 | Reviewed by Maker | 29th Sep 2013 NEEDS FIX Great tooltip, good effects, I like the concept If the target is close, the...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.


Seeking Cluster Rockets v1.0 | Reviewed by Maker | 29th Sep 2013
NEEDS FIX


126248-albums6177-picture66521.png


  • Great tooltip, good effects, I like the concept
126248-albums6177-picture66522.png


  • If the target is close, the missiles circle around the target and do not hit
126248-albums6177-picture66523.png


  • When the caster stops channeling, the already flying missiles
    could still fly to the target instead of being destroyed instantly
  • The looping trigger should be initially off
[tr]
 

Wrda

Spell Reviewer
Level 25
Joined
Nov 18, 2012
Messages
1,864
  • Custom script: set udg_SCR_HarvestOrder = String2OrderIdBJ("harvest")
why you create a variable for harvest order?

Custom script: set udg_SCR_Harvester = CreateUnit(Player(15), 'hpea', 0, 0, 0)
  • Custom script: call UnitAddAbility(udg_SCR_Harvester, 'Aloc')
why you just don't add locust ability in OE?
 
Level 22
Joined
Aug 27, 2013
Messages
3,973
he wants to make everything,
really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really Configurable
 
Level 13
Joined
Mar 29, 2012
Messages
530
@Daffa
It's just the same...
WE will write call DisableTrigger(gg_trg_Seeking_Cluster_Rockets) on map init. But that's not really a problem right?
Doesn't cause lag... :/

@Wrda
It reduce the lag somewhat

what's OE?

@Rheiko
As i said :
  • -------- --------------------------- --------
  • -------- End of Configuration --------
 
Level 20
Joined
Aug 13, 2013
Messages
1,696
But in DotA it is really will make the user balanced in the skill because if it is target type it will cause a Imbalance in the skill. Anyway I suggest the Instant Cast and change the target per one fired rocket then if there is no other unit next to it then make the rocket detect the first target.
 
Level 20
Joined
Aug 13, 2013
Messages
1,696
Found a Bug Ofel ( I think ) :///

I think there's a bug in this spell or it is only a mistake in the triggers. Because the bug is really annoying xD. When I cast the spell in the MELEE - UNITS, in the range of 300 -> 800 ( distance of the caster and the target melee ) and when the MELEE - UNIT runs to attack the caster ( ofc xD. ) in the distance of the caster and the target between I think it is 150 range of them... The rocket does not check the distance of them and the rocket is moving around in the targeted unit without doing something :/// ( It is really annoying :) ) You should fix this. You can tell me if this is not a bug and if this is really part of the spell. here is the proof:

231860-albums6686-picture73873.png


See the rockets?
 
Level 13
Joined
Mar 29, 2012
Messages
530
@jakeZinc
That's why i add this :
  • -------- Determines the rocket expiration time. This is used to remove stucked rockets --------
  • Set SCR_RocketDebugTime = 8.00
It's used to remove rocket by time... :D
 
Level 20
Joined
Aug 13, 2013
Messages
1,696
@jakeZinc
That's why i add this :
  • -------- Determines the rocket expiration time. This is used to remove stucked rockets --------
  • Set SCR_RocketDebugTime = 8.00
It's used to remove rocket by time... :D

Hmmmm..... thanks for pointing me out ( sorry I didn't see that xD. )

Anyway I'll rate it 4/5 ( See the rate at the spell ).
 
Level 13
Joined
Mar 24, 2013
Messages
1,105
I really enjoyed this spell, and the VERY detailed config file is nothing to joke about!

Instead of Saving the X and Y as you do, you could just
SetUnitX/Y(udg_Dummy), GetUnitX(udg_Dummy) + udg_SpeedInterval * Cos/Sin(bj_DEGTORAD * udg_RocketAngle))
 
Level 20
Joined
Aug 13, 2013
Messages
1,696
I really enjoyed this spell, and the VERY detailed config file is nothing to joke about!

Instead of Saving the X and Y as you do, you could just
SetUnitX/Y(udg_Dummy), GetUnitX(udg_Dummy) + udg_SpeedInterval * Cos/Sin(bj_DEGTORAD * udg_RocketAngle))

It is more readability and neater if he store the movement in the real variable.
 
Level 16
Joined
Jul 31, 2012
Messages
2,217

Review

Suggestions

Rating

Judgement

My Words

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Seeking Cluster Rockets Loop <gen> is on) Equal to True
    • Then - Actions
      • Trigger - Turn off Seeking Cluster Rockets Loop <gen>
    • Else - Actions
Directly Turn Off the trigger, there is no need for this
  • Trigger - Add to Seeking Cluster Rockets Cast <gen> the event (Unit - A unit Starts the effect of an ability)
Why don't you add the event in the Trigger Editor, i understand that the loop event needs this function but this one does not need it at all

  • Set SCR_ShotAngleWidth = (SCR_ShotAngleWidth / 2.00)
Change this ^ to this:
  • Set SCR_ShotAngleWidth = (SCR_ShotAngleWidth / 2.50)
It will prevent the missiles to do circles around the target
And maybe add an AoE/Unit Pointer but it's not that important

225233-albums6523-picture74071.jpg
225233-albums6523-picture74103.jpg
If You want me to review an Update of This Spell, Please Notifiy me this by VM or PM
 
Last edited:
Top