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

Spirit Scorpions V1.10

This spell is relatively far-fetched (as I knew in it's creation) about 80% of it was made as a challenge and was made intentionally to not make much sense, but I liked how it turned out and thought I might as well share it with you guys

The spell functions by randomly throwing eggs into the target area which hatch into small scorpions which will chase down (via burrowing and unburrowing) enemies within their searching radius and when getting close enough will lay a curse on them which briefly after adminitered will freeze them in place leaving them helpless to defend themselves. Furthermore the Scorpions will then find additional targets near their new location if any more do present themselves.

This spell is a continuation of my little obsession with summoning-spells, I hope you appreciate that /everything/ about this spell is triggered, including the movement/attacking of Scorpions, the damage, the curse, the egg flying arc, their dispersing blah blah etc. There's minimal object data


Learn:
Throws a volley of spiritual Scorpion eggs randomly onto the target area, the scorpions then hatch and chase down nearby enemies and lay a curse upon them which will deal damage as well as freeze them temporarily.

Level 1 - 8 Eggs, 75 damage, 6 second stun, 1 hit, 250 search range
Level 2 - 10 Eggs, 100 damage, 8 second stun, 2 hits, 300 search range
Level 3 - 12 Eggs, 125 damage, 10 second stun, 3 hits, 350 search range



- Heavily Configurable
- Original
- MUI
- Is cursed (yay)
- Annoying for enemies
- Maybe a little op
- Documentation
- Importing instructions



  • Spirit Scorpions Configuration
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Do not touch --------
      • Hashtable - Create a hashtable
      • Set SS_Hash = (Last created hashtable)
      • -------- -------- --------
      • -------- Determines the area the eggs will be scattered on --------
      • Set SS_AoeBase = 150.00
      • Set SS_AoePerLevel = 50.00
      • -------- Determines the damage dealt by the curse being inflicted on the unit --------
      • Set SS_DamageBase = 50.00
      • Set SS_DamagePerLevel = 25.00
      • -------- Determines how long the curse will last for --------
      • Set SS_CurseDurationBase = 4.00
      • Set SS_CurseDurationPerLevel = 2.00
      • -------- Determines how many Eggs will be thrown --------
      • Set SS_EggCountBase = 6
      • Set SS_EggCountPerLevel = 2
      • -------- Determines how many attacks each Scorpion can make before disappearing --------
      • Set SS_AttackCountsBase = 0
      • Set SS_AttackCountsBasePerLevel = 1
      • -------- Determines how fast the eggs fly through the sky --------
      • Set SS_EggFlySpeed = 20.00
      • -------- Determines how long it takes for the eggs to hatch --------
      • Set SS_EggHatchTime = 1.00
      • -------- Determines the height of the arc in relevence to the distance the eggs being thrown will be --------
      • Set SS_HeightMultiplyer = 0.45
      • -------- Determines how close the spell must be casted at minimum --------
      • Set SS_MinRange = 200.00
      • -------- Determines the speed of the Scorpions chasing --------
      • Set SS_ScorpionRunSpeed = 4.00
      • -------- Determines the AOE in which the Scorpions will actively search for a target --------
      • Set SS_ScorpionSearchAoeBase = 200.00
      • Set SS_ScorpionSearchAoePerLevel = 50.00
      • -------- Determines the unit type used as the egg --------
      • Set SS_ScorpionEgg = Spirit Scorpion Egg
      • -------- Determines the unit type used as the Scorpion --------
      • Set SS_SpiritScorpion = Spirit Scorpion
      • -------- Determines the spell used to act as the activation spell --------
      • Set SS_Spell = Spirit Scorpions
      • -------- Determines the SFX used upon the Scorpions hatching --------
      • Set SS_HatchSFX = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
      • -------- Determines the SFX used upon the Scorpions disappearing --------
      • Set SS_RemovalSFX = Abilities\Spells\Human\DispelMagic\DispelMagicTarget.mdl
      • -------- Determines the SFX used as the curse --------
      • Set SS_CurseSFX = Abilities\Spells\Undead\Curse\CurseTarget.mdl
  • Spirit Scorpions Activation
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to SS_Spell
    • Actions
      • -------- Target location setup --------
      • Set SS_U = (Triggering unit)
      • Set SS_TempPoint = (Position of SS_U)
      • Set SS_TempPoint2 = (Target point of ability being cast)
      • Set SS_TempReal = (Real((Level of SS_Spell for SS_U)))
      • Set SS_Angle = (Angle from SS_TempPoint to SS_TempPoint2)
      • -------- Minimum range check --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Distance between SS_TempPoint and SS_TempPoint2) Less than SS_MinRange
        • Then - Actions
          • Custom script: call RemoveLocation (udg_SS_TempPoint2)
          • Set SS_TempPoint2 = (SS_TempPoint offset by SS_MinRange towards SS_Angle degrees)
        • Else - Actions
      • -------- Egg creation --------
      • Set SS_EggCalc = (SS_EggCountBase + ((Integer(SS_TempReal)) x SS_EggCountPerLevel))
      • For each (Integer SS_i) from 1 to SS_EggCalc, do (Actions)
        • Loop - Actions
          • -------- Target selection --------
          • Set SS_TempPoint3 = (SS_TempPoint2 offset by (Random real number between 0.00 and (SS_AoeBase + (SS_TempReal x SS_AoePerLevel))) towards (Random angle) degrees)
          • Set SS_Angle = (Angle from SS_TempPoint to SS_TempPoint3)
          • -------- Creating Egg --------
          • Unit - Create 1 SS_ScorpionEgg for (Owner of SS_U) at SS_TempPoint facing SS_Angle degrees
          • -------- ------ --------
          • Set SS_TempU = (Last created unit)
          • Custom script: set udg_SS_UHandle = GetHandleId(udg_SS_TempU)
          • -------- Casting Unit ID --------
          • Hashtable - Save Handle OfSS_U as 1 of SS_UHandle in SS_Hash
          • -------- ------ --------
          • -------- Passing Parameters --------
          • -------- Saving the distance the egg will travel --------
          • Hashtable - Save (Distance between SS_TempPoint and SS_TempPoint3) as 2 of SS_UHandle in SS_Hash
          • -------- Saving the height the egg will reach in the arc --------
          • Hashtable - Save ((Distance between SS_TempPoint and SS_TempPoint3) x SS_HeightMultiplyer) as 3 of SS_UHandle in SS_Hash
          • -------- Saving the current distance travelled by the egg --------
          • Hashtable - Save 0.00 as 4 of SS_UHandle in SS_Hash
          • -------- Saving the damage of the curse --------
          • Hashtable - Save (SS_DamageBase + (SS_TempReal x SS_DamagePerLevel)) as 5 of SS_UHandle in SS_Hash
          • -------- Saving the duration of the Scorpion's curse --------
          • Hashtable - Save (SS_CurseDurationBase + (SS_TempReal x SS_CurseDurationPerLevel)) as 6 of SS_UHandle in SS_Hash
          • -------- Saving the search radius of the Scorpion --------
          • Hashtable - Save (SS_ScorpionSearchAoeBase + (SS_TempReal x SS_ScorpionSearchAoePerLevel)) as 7 of SS_UHandle in SS_Hash
          • -------- ------ --------
          • -------- Saving the amount of attacks possible by the Scorpion --------
          • Hashtable - Save (SS_AttackCountsBase + ((Integer(SS_TempReal)) x SS_AttackCountsBasePerLevel)) as 12 of SS_UHandle in SS_Hash
          • -------- Stage ID --------
          • Hashtable - Save 1 as 8 of SS_UHandle in SS_Hash
          • -------- ------ --------
          • -------- Setting up the egg for the loop --------
          • Unit Group - Add SS_TempU to SS_Scorpions
          • -------- ------ --------
          • -------- Leak removal --------
          • Custom script: call RemoveLocation (udg_SS_TempPoint3)
          • -------- ------ --------
      • -------- Leak removal --------
      • Custom script: call RemoveLocation (udg_SS_TempPoint2)
      • Custom script: call RemoveLocation (udg_SS_TempPoint)
      • -------- Starting the loop --------
      • Trigger - Turn on Spirit Scorpions Loop <gen>
  • Spirit Scorpions Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in SS_Scorpions and do (Actions)
        • Loop - Actions
          • -------- Setup --------
          • Set SS_U = (Picked unit)
          • Custom script: set udg_SS_UHandle = GetHandleId(udg_SS_U)
          • Set SS_TempU2 = (Load 1 of SS_UHandle in SS_Hash)
          • Set SS_TempInteger = (Load 8 of SS_UHandle from SS_Hash)
          • -------- ------ --------
          • -------- Stage 1 --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SS_TempInteger Equal to 1
            • Then - Actions
              • -------- Movement --------
              • Custom script: set udg_SS_TempX = GetUnitX(udg_SS_U)
              • Custom script: set udg_SS_TempY = GetUnitY(udg_SS_U)
              • Set SS_Angle = (Facing of SS_U)
              • Custom script: call SetUnitX(udg_SS_U, udg_SS_TempX + udg_SS_EggFlySpeed * Cos(udg_SS_Angle * bj_DEGTORAD))
              • Custom script: call SetUnitY(udg_SS_U, udg_SS_TempY + udg_SS_EggFlySpeed * Sin(udg_SS_Angle * bj_DEGTORAD))
              • -------- ------ --------
              • -------- Fly Height Control --------
              • Set SS_RealCache[1] = (Load 2 of SS_UHandle from SS_Hash)
              • Set SS_RealCache[2] = (Load 3 of SS_UHandle from SS_Hash)
              • Set SS_RealCache[3] = ((Load 4 of SS_UHandle from SS_Hash) + SS_EggFlySpeed)
              • Hashtable - Save SS_RealCache[3] as 4 of SS_UHandle in SS_Hash
              • Set SS_RealCache[4] = (((4.00 x SS_RealCache[2]) / SS_RealCache[1]) x ((SS_RealCache[3] / SS_RealCache[1]) x (SS_RealCache[1] - SS_RealCache[3])))
              • Animation - Change SS_U flying height to SS_RealCache[4] at 0.00
              • -------- ------ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SS_RealCache[4] Less than 0.00
                • Then - Actions
                  • -------- Stage 2 Setup --------
                  • Hashtable - Save 2 as 8 of SS_UHandle in SS_Hash
                  • Unit - Add a SS_EggHatchTime second Generic expiration timer to SS_U
                  • -------- ------ --------
                • Else - Actions
            • Else - Actions
          • -------- ------ --------
          • -------- Stage 2 --------
          • -------- ------ --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SS_TempInteger Equal to 2
              • (SS_U is dead) Equal to True
            • Then - Actions
              • Set SS_TempPoint = (Position of SS_U)
              • -------- Hatching SFX --------
              • Special Effect - Create a special effect at SS_TempPoint using SS_HatchSFX
              • Special Effect - Destroy (Last created special effect)
              • -------- ------ --------
              • -------- Hatching --------
              • Unit - Create 1 SS_SpiritScorpion for (Owner of SS_U) at SS_TempPoint facing 270.00 degrees
              • -------- ------ --------
              • Custom script: call RemoveLocation (udg_SS_TempPoint)
              • -------- Setup --------
              • Set SS_TempU = (Last created unit)
              • Custom script: set udg_SS_UHandleC = GetHandleId(udg_SS_TempU)
              • -------- ------ --------
              • -------- Passing Parameters --------
              • -------- Curse Damage --------
              • Hashtable - Save (Load 5 of SS_UHandle from SS_Hash) as 5 of SS_UHandleC in SS_Hash
              • -------- Curse Duration --------
              • Hashtable - Save (Load 6 of SS_UHandle from SS_Hash) as 6 of SS_UHandleC in SS_Hash
              • -------- Target search AOE --------
              • Hashtable - Save (Load 7 of SS_UHandle from SS_Hash) as 7 of SS_UHandleC in SS_Hash
              • -------- Amount of possible attacks --------
              • Hashtable - Save (Load 12 of SS_UHandle from SS_Hash) as 12 of SS_UHandleC in SS_Hash
              • -------- Current amount of attacks --------
              • Hashtable - Save 0 as 13 of SS_UHandle in SS_Hash
              • -------- Current Fade state --------
              • Hashtable - Save 0.00 as 11 of SS_UHandle in SS_Hash
              • -------- Stage ID --------
              • Hashtable - Save 3 as 8 of SS_UHandleC in SS_Hash
              • -------- ------ --------
              • -------- Casting Unit ID --------
              • Hashtable - Save Handle OfSS_TempU2 as 1 of SS_UHandleC in SS_Hash
              • -------- Target ID --------
              • Hashtable - Save Handle OfSS_TempU2 as 9 of SS_UHandleC in SS_Hash
              • -------- ------ --------
              • -------- Setting up unit groups --------
              • Unit Group - Add SS_TempU to SS_Scorpions
              • Unit Group - Remove SS_U from SS_Scorpions
              • -------- ------ --------
            • Else - Actions
          • -------- Stages 3 & 4 --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • SS_TempInteger Equal to 3
                  • SS_TempInteger Equal to 4
            • Then - Actions
              • -------- ------ --------
              • Set SS_TempU3 = (Load 9 of SS_UHandle in SS_Hash)
              • -------- Fading Control --------
              • Set SS_RealCache[5] = ((Load 11 of SS_UHandle from SS_Hash) + 0.20)
              • Animation - Change SS_U's vertex coloring to (100.00%, 100.00%, 100.00%) with SS_RealCache[5]% transparency
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SS_RealCache[5] Greater than or equal to 80.00
                • Then - Actions
                  • -------- Unit cleanup --------
                  • Set SS_TempPoint = (Position of SS_U)
                  • -------- Unit disappear SFX --------
                  • Special Effect - Create a special effect at SS_TempPoint using SS_RemovalSFX
                  • Special Effect - Destroy (Last created special effect)
                  • Unit Group - Remove SS_U from SS_Scorpions
                  • Unit Group - Remove SS_TempU3 from SS_Targets
                  • -------- Trigger control --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Number of units in SS_Scorpions) Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                  • Hashtable - Clear all child hashtables of child SS_UHandle in SS_Hash
                  • Unit - Remove SS_U from the game
                  • -------- ------ --------
                  • Custom script: call RemoveLocation(udg_SS_TempPoint)
                • Else - Actions
              • Hashtable - Save SS_RealCache[5] as 11 of SS_UHandle in SS_Hash
              • Set SS_TempInteger2 = (Load 10 of SS_UHandle from SS_Hash)
              • -------- Stage 3 --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SS_TempInteger Equal to 3
                • Then - Actions
                  • -------- Target finding --------
                  • Set SS_TempPoint = (Position of SS_U)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SS_TempU3 Equal to SS_TempU2
                    • Then - Actions
                      • -------- Selection of possible targets --------
                      • Set SS_TempGroup = (Units within (Load 7 of SS_UHandle from SS_Hash) of SS_TempPoint)
                      • Unit Group - Pick every unit in SS_TempGroup and do (Actions)
                        • Loop - Actions
                          • -------- Target filter --------
                          • Set SS_TempU = (Picked unit)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • SS_TempU3 Equal to SS_TempU2
                              • (SS_TempU is Magic Immune) Equal to False
                              • ((Unit-type of SS_TempU) is A structure) Equal to False
                              • (SS_TempU is A ground unit) Equal to True
                              • (SS_TempU is alive) Equal to True
                              • (SS_TempU belongs to an enemy of (Owner of SS_U)) Equal to True
                              • (SS_TempU is in SS_Targets) Equal to False
                              • (SS_TempU is in SS_Scorpions) Equal to False
                            • Then - Actions
                              • -------- Target setup --------
                              • Set SS_TempU3 = SS_TempU
                              • Hashtable - Save Handle OfSS_TempU3 as 9 of SS_UHandle in SS_Hash
                              • Hashtable - Save 30 as 10 of SS_UHandle in SS_Hash
                              • Unit Group - Add SS_TempU3 to SS_Targets
                            • Else - Actions
                      • Custom script: call DestroyGroup(udg_SS_TempGroup)
                    • Else - Actions
                      • -------- Animation Control --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • SS_TempInteger2 Equal to 30
                        • Then - Actions
                          • Animation - Play SS_U's morph animation
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • SS_TempInteger2 Equal to 60
                            • Then - Actions
                              • Animation - Play SS_U's morph alternate animation
                              • Hashtable - Save 0 as 10 of SS_UHandle in SS_Hash
                            • Else - Actions
                      • -------- Movement --------
                      • Set SS_TempPoint2 = (Position of SS_TempU3)
                      • Custom script: set udg_SS_TempX = GetUnitX(udg_SS_U)
                      • Custom script: set udg_SS_TempY = GetUnitY(udg_SS_U)
                      • Set SS_Angle = (Angle from SS_TempPoint to SS_TempPoint2)
                      • Custom script: call SetUnitX(udg_SS_U, udg_SS_TempX + udg_SS_ScorpionRunSpeed * Cos(udg_SS_Angle * bj_DEGTORAD))
                      • Custom script: call SetUnitY(udg_SS_U, udg_SS_TempY + udg_SS_ScorpionRunSpeed * Sin(udg_SS_Angle * bj_DEGTORAD))
                      • Custom script: call SetUnitFacing(udg_SS_U, udg_SS_Angle)
                      • -------- ------ --------
                      • -------- Animation control --------
                      • Hashtable - Save ((Load 10 of SS_UHandle from SS_Hash) + 1) as 10 of SS_UHandle in SS_Hash
                      • -------- Target within range check --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Distance between SS_TempPoint and SS_TempPoint2) Less than or equal to 90.00
                        • Then - Actions
                          • -------- Attack setup --------
                          • Hashtable - Save 4 as 8 of SS_UHandle in SS_Hash
                          • Hashtable - Save 30 as 10 of SS_UHandle in SS_Hash
                        • Else - Actions
                      • -------- ------ --------
                      • Custom script: call RemoveLocation (udg_SS_TempPoint2)
                  • -------- ------ --------
                  • Custom script: call RemoveLocation (udg_SS_TempPoint)
                • Else - Actions
              • -------- ------ --------
              • -------- Stage 4 --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SS_TempInteger Equal to 4
                • Then - Actions
                  • -------- Animation control --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SS_TempInteger2 Equal to 30
                    • Then - Actions
                      • Animation - Play SS_U's spell animation
                      • Hashtable - Save 0 as 10 of SS_UHandle in SS_Hash
                    • Else - Actions
                  • -------- Target Setup --------
                  • Custom script: set udg_SS_UHandleC = GetHandleId(udg_SS_TempU3)
                  • -------- Damage --------
                  • Unit - Cause SS_TempU2 to damage SS_TempU3, dealing (Load 5 of SS_UHandle from SS_Hash) damage of attack type Spells and damage type Normal
                  • -------- Curse setup --------
                  • Unit Group - Add SS_TempU3 to SS_Scorpions
                  • Hashtable - Save 5 as 8 of SS_UHandleC in SS_Hash
                  • Special Effect - Create a special effect attached to the overhead of SS_TempU3 using SS_CurseSFX
                  • -------- Saving curse effect --------
                  • Hashtable - Save Handle Of(Last created special effect) as 14 of SS_UHandleC in SS_Hash
                  • -------- Saving curse duration --------
                  • Hashtable - Save (Load 6 of SS_UHandle from SS_Hash) as 6 of SS_UHandleC in SS_Hash
                  • -------- Saving time to freeze countdown --------
                  • Hashtable - Save 100.00 as 15 of SS_UHandleC in SS_Hash
                  • -------- Saving Delayer Timer --------
                  • Hashtable - Save 0 as 16 of SS_UHandle in SS_Hash
                  • -------- Saving Current Curse duration timer --------
                  • Hashtable - Save 0.00 as 17 of SS_UHandleC in SS_Hash
                  • -------- Saving original caster as Target --------
                  • Hashtable - Save Handle OfSS_TempU2 as 9 of SS_UHandle in SS_Hash
                  • -------- Saving amount of attacks dealt --------
                  • Set SS_TempInteger2 = ((Load 13 of SS_UHandle from SS_Hash) + 1)
                  • Hashtable - Save SS_TempInteger2 as 13 of SS_UHandle in SS_Hash
                  • -------- New target find --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SS_TempInteger2 Less than (Load 12 of SS_UHandle from SS_Hash)
                    • Then - Actions
                      • -------- New target setup --------
                      • Hashtable - Save 30 as 10 of SS_UHandle in SS_Hash
                      • Hashtable - Save 3 as 8 of SS_UHandle in SS_Hash
                    • Else - Actions
                      • -------- Unit cleanup --------
                      • Set SS_TempPoint = (Position of SS_U)
                      • -------- Disappear SFX --------
                      • Special Effect - Create a special effect at SS_TempPoint using SS_RemovalSFX
                      • Special Effect - Destroy (Last created special effect)
                      • Unit Group - Remove SS_U from SS_Scorpions
                      • Unit Group - Remove SS_TempU3 from SS_Targets
                      • -------- Trigger check --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Number of units in SS_Scorpions) Equal to 0
                        • Then - Actions
                          • Trigger - Turn off (This trigger)
                        • Else - Actions
                      • Hashtable - Clear all child hashtables of child SS_UHandle in SS_Hash
                      • Unit - Remove SS_U from the game
                      • -------- ------ --------
                      • Custom script: call RemoveLocation(udg_SS_TempPoint)
                • Else - Actions
              • -------- ------ --------
            • Else - Actions
          • -------- ------ --------
          • -------- Stages 5 & 6 --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (SS_U is dead) Equal to True
              • Or - Any (Conditions) are true
                • Conditions
                  • SS_TempInteger Equal to 5
                  • SS_TempInteger Equal to 6
            • Then - Actions
              • -------- Death cleanup --------
              • Animation - Change SS_U's animation speed to 100.00% of its original speed
              • Unit Group - Remove SS_U from SS_Targets
              • Special Effect - Destroy (Load 14 of SS_UHandle in SS_Hash)
              • Hashtable - Clear all child hashtables of child SS_UHandle in SS_Hash
              • -------- Trigger check --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in SS_Scorpions) Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
            • Else - Actions
              • -------- Stage 5 --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 8 of SS_UHandle from SS_Hash) Equal to 5
                • Then - Actions
                  • -------- Current freeze Countdown setting --------
                  • Set SS_RealCache[6] = ((Load 15 of SS_UHandle from SS_Hash) - 1.00)
                  • -------- Animation slowing --------
                  • Animation - Change SS_U's animation speed to SS_RealCache[6]% of its original speed
                  • -------- Sacing current countdown --------
                  • Hashtable - Save SS_RealCache[6] as 15 of SS_UHandle in SS_Hash
                  • -------- Countdown complete --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SS_RealCache[6] Equal to 0.00
                    • Then - Actions
                      • -------- Freezing unit --------
                      • Unit - Pause SS_U
                      • -------- Stage ID --------
                      • Hashtable - Save 6 as 8 of SS_UHandle in SS_Hash
                      • -------- ------ --------
                    • Else - Actions
                • Else - Actions
              • -------- ------ --------
              • -------- Stage 6 --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 8 of SS_UHandle from SS_Hash) Equal to 6
                • Then - Actions
                  • -------- Unfreeze timer --------
                  • Set SS_TempInteger2 = (Load 16 of SS_UHandle from SS_Hash)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SS_TempInteger2 Equal to 20
                    • Then - Actions
                      • -------- Delayer reset --------
                      • Hashtable - Save 0 as 16 of SS_UHandle in SS_Hash
                      • -------- Current Curse duration expired increase --------
                      • Set SS_TempReal = ((Load 17 of SS_UHandle from SS_Hash) + 1.00)
                      • Hashtable - Save SS_TempReal as 17 of SS_UHandle in SS_Hash
                      • -------- Curse end check --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • SS_TempReal Greater than or equal to (Load 6 of SS_UHandle from SS_Hash)
                        • Then - Actions
                          • -------- Spell cleanup --------
                          • Unit - Unpause SS_U
                          • Animation - Change SS_U's animation speed to 100.00% of its original speed
                          • Special Effect - Destroy (Load 14 of SS_UHandle in SS_Hash)
                          • Unit Group - Remove SS_U from SS_Targets
                          • Unit Group - Remove SS_U from SS_Scorpions
                          • Hashtable - Clear all child hashtables of child SS_UHandle in SS_Hash
                          • -------- Trigger check --------
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Number of units in SS_Scorpions) Equal to 0
                            • Then - Actions
                              • Trigger - Turn off (This trigger)
                            • Else - Actions
                        • Else - Actions
                    • Else - Actions
                      • -------- Delayer Increase --------
                      • Hashtable - Save (SS_TempInteger2 + 1) as 16 of SS_UHandle in SS_Hash
                • Else - Actions
              • -------- ------ --------
          • -------- ------ --------



-=V1.00=-
- Initial upload
- Expect errors
-=V1.01=-
- Modified the Animation control as per Pharaoh, still needing a bit of clarificaiton on the second part
-=V1.05=-
- Used a variable for the Egg creation counter (as per Pharaoh)
- Used variables for repetative loads (as per Pharaoh)
-=V1.06=-
- Completed using variables for reperative loads
- Modified the standard configuration slightly
-=V1.10=-
- Tried uploading this this morning but apparently that failed
- Removed leaks
- Hopefully finihed x_x


Enjoy (don't forget credits)

Keywords:
Scorpions, Curse, Eggs, Digging, Chase, Summon, Spirit, Fading, Stop, Pause, Freeze, Scorpion, Throw, Ranged, Spiritual.
Contents

Spirit Scorpions (Map)

Reviews
Moderator: Pharaoh_ Date: 25th Feb 2012, 9:15 Several changes have been made. The spell looks nice. You could add each stage's if/then/else under the else of the main one, since it would save some engine's searches. Recommended

Moderator

M

Moderator

160036-albums4747-picture55861.png

Moderator: Pharaoh_
Date: 25th Feb 2012, 9:15

Review
Several changes have been made.
The spell looks nice.
You could add each stage's if/then/else under the else of the main one, since it would save some engine's searches.

Recommended
 
Subbing & don't forget credits =3

Edit: I do make use of the "greater than 30" however it's on a double-edged sword (considering it's to save doing two checks when below 30, but meaning three checks are done when it's above) I'll just make the modification in a second, as for the repetitive loads (i.e. load 8 and 10) I feel it'd take an uneccessarily long time to make the modifications required to do that, considering wouldn't that require setting up an entire indexing system just to index those? or am I thinking of the wrong idea?

Edit2: Configurability issues? Clarify please, I'm really not sure /what/ the configurability issue would be
 
Last edited:
Use Integer variables or whatever the values of those loads are and set Var1 = (Load 10 of X from Y_Table). This is what I mean.

Configurability means that you have certain calculations or paths that are not friendly to a user who wants to alter the way the spells looks. You may want to create a variable for that specific calculation of the loop and use that exact variable to loop through. It won't make an efficiency difference, but it will improve readability along with configurability, just like I mentioned.
 
Level 7
Joined
May 30, 2018
Messages
290
Hey :) I really like this spell and would like to use it, but always when I start the map after I imported it I get an error.

Ill attach an image down below, myabe you can help me.

Error Part 1.PNG



Error Part 2.PNG
 
Top