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

Energy Glyph V1.25

  • Like
Reactions: Bribe
I hadn't done anything involving mana before really so I decided to make this just to try something new.

Energy Glyph:

Creates a Glyph on the floor which will drain the mana from all units (including allies) and then will release orbs of pure energy onto the surrounding area dealing damage (amount of orbs is based on how much mana was drained/level of ability. It can also drain the remaining energy found within dead corpses of units. All units in the area due to the draining effect have their speed reduced by 50%

Spell drains up to 400 mana (drain is spread evenly on all effected units)
i.e. 100 each on 4 units/25 each on 16 units


- Heavily configurable
- Eye candy (yay)
- 3 effects other than just damage
| - Mana drain
| - Damage
| - Slowing effect
- Has multiple tactical uses



  • Energy Glyph Configuration
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Do not touch --------
      • Hashtable - Create a hashtable
      • Set EG_EnergyGlyphHash = (Last created hashtable)
      • -------- ---------- --------
      • -------- Determines how big the Glyph will appear (should be set to match the AOE) --------
      • -------- The AOE of the spell should be 10x the scale --------
      • -------- level 1 AOE = 300. 3.00 x 100 = 300.00 --------
      • Set EG_GlyphScalingBase = 2.00
      • Set EG_GlyphScalingPerLevel = 1.00
      • -------- Determines how long the Glyph will extract mana for (assuming it doesn't hit the limit) before activating or being destroyed --------
      • -------- Time is in seconds --------
      • Set EG_GlyphDurationBase = 10.00
      • Set EG_GlyphDurationPerLevel = 0.00
      • -------- Determines the max amount of Mana the Glyph will absorb before activating --------
      • -------- The absorbing will be spread evenly among the target units --------
      • Set EG_GlyphManaStealMax = 400.00
      • -------- Determines the rate of mana draining --------
      • -------- divide by 0.03 to get how much mana this is per second --------
      • Set EG_EnergyDrainBase = 0.75
      • Set EG_EnergyDrainPerLevel = 0.00
      • -------- Determines the strength of the slowing effect of the Glyph by dividing the standard speed by this number --------
      • -------- Standard is 2 (meaning / 2, meaning 50% speed reduction) --------
      • -------- Shouldn't really be anything higher than 2 --------
      • Set EG_EnergySlowDivider = 2.00
      • -------- Determines the damage each Orb will deal --------
      • -------- level one Orbs deal 15 damage (base 10 + per level 5) --------
      • Set EG_OrbDamageBase = 10.00
      • Set EG_OrbDamagePerLevel = 5.00
      • -------- Determines the AOE of the Orbs for them to damage --------
      • -------- 90 = melee range --------
      • Set EG_OrbAoeBase = 90.00
      • Set EG_OrbAoePerLevel = 0.00
      • -------- This is the AOE of the spell --------
      • -------- Should be 100x the scaling settings --------
      • Set EG_OrbRangeAOEBase = 200.00
      • Set EG_OrbRangeAOEPerLevel = 100.00
      • -------- This is how fast the Orbs will travel when moving --------
      • -------- / 0.03 to find how far this is per second --------
      • Set EG_OrbSpeed = 5.00
      • -------- This determines the arc the Orbs create while moving based on how high they will go in relivence to distance --------
      • -------- 1 = every unit it moves across it goes up as high as it goes far --------
      • -------- 1.1 = it goes up higher than it goes far --------
      • -------- 0.9 = it goes up lower than it goes far --------
      • Set EG_OrbHeightMultiplyer = 1.10
      • -------- ---------- --------
      • -------- This will set the difference between each draining level --------
      • -------- the minimum required to activate is 2x this number --------
      • Set EG_EnergyPerDrainingLevel = 100
      • -------- Number of Orbs created --------
      • Set EG_GlyphOrbsBase = 40
      • Set EG_GlyphOrbsPerLevel = 20
      • -------- Draining level: every 100 mana after 200 adds this many Orbs --------
      • Set EG_GlyphOrbsPerDrainedLevel = 30
      • -------- Example: Fully "Charged" level 1: (((400-100)/100) * PerDrainedLevel) + (Base + (PerLevel * AbilityLevel) = Number of orbs --------
      • -------- ---------------------------------------------------- (((400-100)/100) * 30) + (40 + (20 * 1) = Number of orbs --------
      • -------- ---------------------------------------------------- (90) + (60) = Number of orbs --------
      • -------- ---------------------------------------------------- 150 = Number of orbs --------
      • -------- Unit used as the Glyph --------
      • Set EG_Unit_Glyph = Energy Glyph
      • -------- Unit used as the Orb --------
      • Set EG_Unit_Orb = Energy Orb
      • -------- Unit used as the summoning SFX --------
      • Set EG_Unit_SFX = Energy Glyph SFX
      • -------- Model used for the draining SFX --------
      • Set EG_Unit_SFX2 = Abilities\Spells\Items\AIil\AIilTarget.mdl
      • -------- Spell used to activate the ability --------
      • Set EG_Spell = Energy Glyph
  • Energy Glyph Activation
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to EG_Unit_Glyph
    • Actions
      • Set EG_UHandle = (Key (Triggering unit))
      • Set EG_u = (Triggering unit)
      • Set EG_TempPoint = (Position of EG_u)
      • Set EG_TempRealStore = (Load 8 of EG_UHandle from EG_EnergyGlyphHash)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Load 1 of EG_UHandle from EG_EnergyGlyphHash) Equal to 1
          • (Mana of (Triggering unit)) Greater than or equal to (2.00 x (Real(EG_EnergyPerDrainingLevel)))
        • Then - Actions
          • Unit - Create 1 Energy Glyph for (Owner of EG_u) at EG_TempPoint facing Default building facing degrees
          • Set EG_UHandleC = (Key (Last created unit))
          • Set EG_Tempu = (Last created unit)
          • Animation - Change EG_Tempu's size to (EG_TempRealStore%, EG_TempRealStore%, EG_TempRealStore%) of its original size
          • -------- Glyph Stage Indicator --------
          • Hashtable - Save 2 as 1 of EG_UHandleC in EG_EnergyGlyphHash
          • -------- Glyph Creator Indicator --------
          • Hashtable - Save Handle Of(Load 3 of EG_UHandle in EG_EnergyGlyphHash) as 3 of EG_UHandleC in EG_EnergyGlyphHash
          • -------- Orb Damage --------
          • Hashtable - Save (Load 4 of EG_UHandle from EG_EnergyGlyphHash) as 4 of EG_UHandleC in EG_EnergyGlyphHash
          • -------- Orb AOE --------
          • Hashtable - Save (Load 5 of EG_UHandle from EG_EnergyGlyphHash) as 5 of EG_UHandleC in EG_EnergyGlyphHash
          • -------- Orb Count --------
          • Hashtable - Save ((((Integer((Mana of EG_u))) - EG_EnergyPerDrainingLevel) / EG_EnergyPerDrainingLevel) x (EG_GlyphOrbsPerDrainedLevel + (Load 6 of EG_UHandle from EG_EnergyGlyphHash))) as 6 of EG_UHandleC in EG_EnergyGlyphHash
          • -------- Orb AOE Range --------
          • Hashtable - Save (Load 7 of EG_UHandle from EG_EnergyGlyphHash) as 7 of EG_UHandleC in EG_EnergyGlyphHash
          • -------- Scaling --------
          • Hashtable - Save (Load 8 of EG_UHandle from EG_EnergyGlyphHash) as 8 of EG_UHandleC in EG_EnergyGlyphHash
          • Unit Group - Add (Last created unit) to EG_EnergyGlyphs
          • Hashtable - Clear all child hashtables of child EG_UHandle in EG_EnergyGlyphHash
        • Else - Actions
          • -------- Death sfx --------
          • Hashtable - Clear all child hashtables of child EG_UHandle in EG_EnergyGlyphHash
          • Unit - Create 1 EG_Unit_SFX for (Owner of EG_u) at EG_TempPoint facing Default building facing degrees
          • Set EG_Tempu = (Last created unit)
          • Animation - Change EG_Tempu's size to (EG_TempRealStore%, EG_TempRealStore%, EG_TempRealStore%) of its original size
          • Unit - Add a 3.00 second Generic expiration timer to EG_Tempu
          • If ((Number of units in EG_EnergyGlyphs) Equal to 0) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
          • -------- ---------- --------
      • Custom script: call RemoveLocation (udg_EG_TempPoint)
  • Energy Glyph
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to EG_Spell
    • Actions
      • Set EG_u = (Triggering unit)
      • Trigger - Turn on Energy Glyph Loop <gen>
      • Trigger - Turn on Energy Glyph Activation <gen>
      • Set EG_TempPoint = (Target point of ability being cast)
      • -------- Glyph --------
      • Unit - Create 1 Energy Glyph for (Owner of EG_u) at EG_TempPoint facing Default building facing degrees
      • Set EG_Tempu = (Last created unit)
      • Set EG_UHandleC = (Key (Last created unit))
      • Hashtable - Save (100.00 x (EG_GlyphScalingBase + (EG_GlyphScalingPerLevel x (Real((Level of Energy Glyph for EG_u)))))) as 8 of EG_UHandleC in EG_EnergyGlyphHash
      • Set EG_TempRealStore = (Load 8 of EG_UHandleC from EG_EnergyGlyphHash)
      • Animation - Change EG_Tempu's size to (EG_TempRealStore%, EG_TempRealStore%, EG_TempRealStore%) of its original size
      • Unit - Add a (EG_GlyphDurationBase + (EG_GlyphDurationPerLevel x (Real((Level of Energy Glyph for EG_u))))) second Generic expiration timer to EG_Tempu
      • Unit Group - Add EG_Tempu to EG_EnergyGlyphs
      • -------- ---------- --------
      • -------- Creation SFX --------
      • Unit - Create 1 Energy Glyph SFX for (Owner of EG_u) at EG_TempPoint facing Default building facing degrees
      • Set EG_Tempu = (Last created unit)
      • Animation - Change EG_Tempu's size to (EG_TempRealStore%, EG_TempRealStore%, EG_TempRealStore%) of its original size
      • Unit - Add a 3.00 second Generic expiration timer to EG_Tempu
      • -------- ---------- --------
      • Custom script: call RemoveLocation (udg_EG_TempPoint)
      • -------- Passing Information --------
      • Set EG_TempRealStore = (Real((Level of Energy Glyph for EG_u)))
      • -------- Glyph Stage Indicator --------
      • Hashtable - Save 1 as 1 of EG_UHandleC in EG_EnergyGlyphHash
      • -------- Energy drain speed --------
      • Hashtable - Save (EG_EnergyDrainBase + (EG_EnergyDrainPerLevel x EG_TempRealStore)) as 2 of EG_UHandleC in EG_EnergyGlyphHash
      • -------- Glyph Creator Indicator --------
      • Hashtable - Save Handle OfEG_u as 3 of EG_UHandleC in EG_EnergyGlyphHash
      • -------- Orb Damage --------
      • Hashtable - Save (EG_OrbDamageBase + (EG_OrbDamagePerLevel x EG_TempRealStore)) as 4 of EG_UHandleC in EG_EnergyGlyphHash
      • -------- Orb AOE --------
      • Hashtable - Save (EG_OrbAoeBase + (EG_OrbAoePerLevel x EG_TempRealStore)) as 5 of EG_UHandleC in EG_EnergyGlyphHash
      • -------- Orb Count --------
      • Hashtable - Save (EG_GlyphOrbsBase + (EG_GlyphOrbsPerLevel x (Level of Energy Glyph for EG_u))) as 6 of EG_UHandleC in EG_EnergyGlyphHash
      • -------- Orb AOE Range --------
      • Hashtable - Save (EG_OrbRangeAOEBase + (EG_OrbRangeAOEPerLevel x (Real((Level of Energy Glyph for EG_u))))) as 7 of EG_UHandleC in EG_EnergyGlyphHash
      • -------- ---------- --------
  • Energy Glyph Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in EG_EnergyGlyphs and do (Actions)
        • Loop - Actions
          • Set EG_UHandle = (Key (Picked unit))
          • Set EG_u = (Picked unit)
          • -------- Stage 1 - Mana drain --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Load 1 of EG_UHandle from EG_EnergyGlyphHash) Equal to 1
            • Then - Actions
              • Set EG_TempPoint = (Position of EG_u)
              • Set EG_TempGroup = (Units within (Load 7 of EG_UHandle from EG_EnergyGlyphHash) of EG_TempPoint)
              • Custom script: call RemoveLocation (udg_EG_TempPoint)
              • Unit Group - Pick every unit in EG_TempGroup and do (Actions)
                • Loop - Actions
                  • Set EG_Tempu = (Picked unit)
                  • Set EG_TempRealStore = (Load 2 of EG_UHandle from EG_EnergyGlyphHash)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (EG_Tempu is A ground unit) Equal to True
                      • (EG_Tempu is alive) Equal to True
                      • (EG_Tempu is Magic Immune) Equal to False
                      • (Mana of EG_Tempu) Greater than or equal to EG_TempRealStore
                    • Then - Actions
                      • Unit - Set mana of EG_Tempu to ((Mana of EG_Tempu) - EG_TempRealStore)
                      • Set EG_TempPoint = (Position of EG_Tempu)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Load 15 of EG_UHandle from EG_EnergyGlyphHash) Equal to 20
                        • Then - Actions
                          • Special Effect - Create a special effect at EG_TempPoint using EG_Unit_SFX2
                          • Special Effect - Destroy (Last created special effect)
                          • Hashtable - Save 0 as 15 of EG_UHandle in EG_EnergyGlyphHash
                        • Else - Actions
                      • Hashtable - Save ((Load 15 of EG_UHandle from EG_EnergyGlyphHash) + 1) as 15 of EG_UHandle in EG_EnergyGlyphHash
                      • Custom script: call RemoveLocation (udg_EG_TempPoint)
                      • Unit - Set mana of EG_u to ((Mana of EG_u) + EG_TempRealStore)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Mana of EG_u) Greater than or equal to EG_GlyphManaStealMax
                        • Then - Actions
                          • Unit Group - Remove EG_u from EG_EnergyGlyphs
                          • Unit - Kill EG_u
                        • Else - Actions
                    • Else - Actions
              • Custom script: call DestroyGroup(udg_EG_TempGroup)
            • Else - Actions
          • -------- Stage 2 - Creating Orbs --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Load 1 of EG_UHandle from EG_EnergyGlyphHash) Equal to 2
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 6 of EG_UHandle from EG_EnergyGlyphHash) Greater than 0
                • Then - Actions
                  • Hashtable - Save ((Load 6 of EG_UHandle from EG_EnergyGlyphHash) - 1) as 6 of EG_UHandle in EG_EnergyGlyphHash
                  • Set EG_TempPoint = (Position of EG_u)
                  • Set EG_TempPoint2 = (EG_TempPoint offset by (Random real number between 50.00 and (Load 7 of EG_UHandle from EG_EnergyGlyphHash)) towards (Random angle) degrees)
                  • Unit - Create 1 EG_Unit_Orb for (Owner of EG_u) at EG_TempPoint facing (Angle from EG_TempPoint to EG_TempPoint2) degrees
                  • Set EG_UHandleC = (Key (Last created unit))
                  • Hashtable - Save (Distance between EG_TempPoint and EG_TempPoint2) as 9 of EG_UHandleC in EG_EnergyGlyphHash
                  • Hashtable - Save ((Load 9 of EG_UHandleC from EG_EnergyGlyphHash) x EG_OrbHeightMultiplyer) as 10 of EG_UHandleC in EG_EnergyGlyphHash
                  • Custom script: call RemoveLocation (udg_EG_TempPoint2)
                  • Custom script: call RemoveLocation (udg_EG_TempPoint)
                  • -------- Glyph Stage Indicator --------
                  • Hashtable - Save 3 as 1 of EG_UHandleC in EG_EnergyGlyphHash
                  • -------- Glyph Creator Indicator --------
                  • Hashtable - Save Handle Of(Load 3 of EG_UHandle in EG_EnergyGlyphHash) as 3 of EG_UHandleC in EG_EnergyGlyphHash
                  • -------- Orb Damage --------
                  • Hashtable - Save (Load 4 of EG_UHandle from EG_EnergyGlyphHash) as 4 of EG_UHandleC in EG_EnergyGlyphHash
                  • -------- Orb AOE --------
                  • Hashtable - Save (Load 5 of EG_UHandle from EG_EnergyGlyphHash) as 5 of EG_UHandleC in EG_EnergyGlyphHash
                  • Unit Group - Add (Last created unit) to EG_EnergyGlyphs
                • Else - Actions
                  • Unit - Kill EG_u
                  • Unit Group - Remove EG_u from EG_EnergyGlyphs
                  • If ((Number of units in EG_EnergyGlyphs) Equal to 0) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
            • Else - Actions
          • -------- Stage 3 - Moving Orbs/Orb damage --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Load 1 of EG_UHandle from EG_EnergyGlyphHash) Equal to 3
            • Then - Actions
              • Custom script: set udg_EG_TempX = GetUnitX(udg_EG_u)
              • Custom script: set udg_EG_TempY = GetUnitY(udg_EG_u)
              • Set EG_Angle = (Facing of EG_u)
              • Custom script: call SetUnitX(udg_EG_u, udg_EG_TempX + udg_EG_OrbSpeed * Cos(udg_EG_Angle * bj_DEGTORAD))
              • Custom script: call SetUnitY(udg_EG_u, udg_EG_TempY + udg_EG_OrbSpeed * Sin(udg_EG_Angle * bj_DEGTORAD))
              • Hashtable - Save ((Load 11 of EG_UHandle from EG_EnergyGlyphHash) + EG_OrbSpeed) as 11 of EG_UHandle in EG_EnergyGlyphHash
              • Hashtable - Save (((4.00 x (Load 10 of EG_UHandle from EG_EnergyGlyphHash)) / (Load 9 of EG_UHandle from EG_EnergyGlyphHash)) x (((Load 11 of EG_UHandle from EG_EnergyGlyphHash) / (Load 9 of EG_UHandle from EG_EnergyGlyphHash)) x ((Load 9 of EG_UHandle from EG_EnergyGlyphHash as 12 of EG_UHandle in EG_EnergyGlyphHash
              • Animation - Change EG_u flying height to (Load 12 of EG_UHandle from EG_EnergyGlyphHash) at 0.00
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 12 of EG_UHandle from EG_EnergyGlyphHash) Less than 0.00
                • Then - Actions
                  • Set EG_TempPoint = (Position of EG_u)
                  • Set EG_TempGroup = (Units within (Load 5 of EG_UHandle from EG_EnergyGlyphHash) of EG_TempPoint)
                  • Unit Group - Pick every unit in EG_TempGroup and do (Actions)
                    • Loop - Actions
                      • Set EG_Tempu = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (EG_Tempu is A ground unit) Equal to True
                          • (EG_Tempu is alive) Equal to True
                          • (EG_Tempu is Magic Immune) Equal to False
                          • (EG_Tempu belongs to an enemy of (Owner of EG_u)) Equal to True
                        • Then - Actions
                          • Unit - Cause (Load 3 of EG_UHandle in EG_EnergyGlyphHash) to damage EG_Tempu, dealing (Load 4 of EG_UHandle from EG_EnergyGlyphHash) damage of attack type Spells and damage type Normal
                        • Else - Actions
                  • Custom script: call RemoveLocation (udg_EG_TempPoint)
                  • Custom script: call DestroyGroup(udg_EG_TempGroup)
                  • Unit Group - Remove EG_u from EG_EnergyGlyphs
                  • Unit - Kill EG_u
                • Else - Actions
            • Else - Actions
          • -------- Movement speed reduction/increase (entry/exit) --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Load 1 of EG_UHandle from EG_EnergyGlyphHash) Equal to 4
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 13 of EG_UHandle from EG_EnergyGlyphHash) Greater than 0
                • Then - Actions
                  • Unit - Set EG_u movement speed to ((Current movement speed of EG_u) / EG_EnergySlowDivider)
                  • Hashtable - Save ((Load 13 of EG_UHandle from EG_EnergyGlyphHash) - 1) as 13 of EG_UHandle in EG_EnergyGlyphHash
                • Else - Actions
                  • Unit - Set EG_u movement speed to ((Current movement speed of EG_u) x EG_EnergySlowDivider)
                  • Unit Group - Remove EG_u from EG_EnergyGlyphs
                  • Hashtable - Save 0 as 1 of EG_UHandle in EG_EnergyGlyphHash
            • Else - Actions
          • -------- Adding units to the movement speed reduction --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of EG_u) Equal to Energy Glyph
            • Then - Actions
              • Set EG_TempPoint = (Position of EG_u)
              • Set EG_TempGroup = (Units within (Load 7 of EG_UHandle from EG_EnergyGlyphHash) of EG_TempPoint)
              • Unit Group - Pick every unit in EG_TempGroup and do (Actions)
                • Loop - Actions
                  • Set EG_Tempu = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (EG_Tempu is A ground unit) Equal to True
                      • (EG_Tempu is alive) Equal to True
                      • (EG_Tempu is Magic Immune) Equal to False
                      • (EG_Tempu belongs to an enemy of (Owner of EG_u)) Equal to True
                    • Then - Actions
                      • Set EG_UHandleC = (Key (Picked unit))
                      • Hashtable - Save ((Load 13 of EG_UHandleC from EG_EnergyGlyphHash) + 1) as 13 of EG_UHandleC in EG_EnergyGlyphHash
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Matching unit) is in EG_EnergyGlyphs) Equal to False
                        • Then - Actions
                          • Hashtable - Save 4 as 1 of EG_UHandleC in EG_EnergyGlyphHash
                          • Unit Group - Add EG_Tempu to EG_EnergyGlyphs
                        • Else - Actions
                    • Else - Actions
              • Custom script: call RemoveLocation (udg_EG_TempPoint)
              • Custom script: call DestroyGroup(udg_EG_TempGroup)
            • Else - Actions



-=V1.00=-
- Initial Upload
- Expecting errors to correct (yay)
-=V1.10=-
- Used Temporary stores for heavy referencing
-=V1.15=-
- Improved Documentation (I think)
- Changed the way of getting units in the unit groups as per Bribe
- Cleaning up anything missed previously
-=V1.20=-
- Changed all variable names to have a prefix of"EG_&"
-=V1.25=-
- Added variables for units
- Now flushes Child Hashtables
- Drain Sfx amount reduced heavily
- Increased documentation/explaination in the configuration
- Fixed leak
- Made code slightly more efficient
- Changed spell Icon
- Activation trigger now turned on/off as appropriate



Keywords:
Energy, Sap, Glyph, Orb, Orbs, Anti-Magic, Drain, Absorb, Ritual, Magic, Mana, Spellcaster.
Contents

Energy Glyph (Map)

Reviews
A well done spell that looks good. You should still pay attention to actions that you do in both then and else. Those can be taken out of the if/then/else most of the time. Like the clear child hashtable. The tooltip text could be redone, I prefer...

Moderator

M

Moderator

Maker, Energy Glyph V1.25, 19th Dec 2011

A well done spell that looks good.

You should still pay attention to actions that you do in both then and else. Those can be taken out of the if/then/else most of the time. Like the clear child hashtable.
The tooltip text could be redone, I prefer the look of abilities done by Blizzard.
Maker, Energy Glyph V1.20, 19th Dec 2011

Set to "needs fix" for the following reasons
  • Not flushing child hashtables
  • Too many effects
  • Lacking importing settings/instructions
Maker, Energy Glyph V1.20, 19th Dec 2011


Check my reply in this thread for more comments.
19 Dec 2011
Bribe: Approved. The code, like for your other spells, is above the requirements and the effects are really great with this one. I give it 5/5 (Highly Recommended) status. It's a great GUI spell.
 
In the trigger "Energy Glyph", you should cache that "Load 8 from bla bla bla" into a real variable because you're referencing it a lot.
Same goes for (Level of bla bla) and anything else you're referencing more than once.
(Last created unit) is another example.

Oh and I wouldn't recommend playing around with unit movement speeds :x
You should create dummy units and order them to cast some "Slow" spell instead.
This is because a user might not want you to touch their base movement speed (He may have editted it somewhere), and this method is very bad with Recursion and stacking.

The Warcraft III engine handles these slow effects much better than anyone does. (Stacking is taken into consideration)

edit
  • Unit - Kill u
Please don't hurt me D:

Instead of killing the units, you should remove them.
 
Noted, Should take about 10-20 minutes to make the changes (laziness)

Edit: The reason I kill units is fairly visible - if they're removed instead the trigger isn't activated to actually start the spell properly as it requires death, and I kill the orbs instead of removing them /mainly/ for the death effect

As for the slow effect I guess I'll take my chances XD *Shrugs childishly* granted I did make a change so it'll only effect current - don't know if that helps at all, but yeah I understand the risks of using it like that - I just wanted to avoid using an object data spell for the slow effect; makes me feel like I'm cheating XD

Edit2: I don't see the dublication Bribe, probably a mistake on my part (spaghetti code)
 
Last edited:
Level 37
Joined
Mar 6, 2006
Messages
9,240

Importing instructions are lacking
  • References to unit types and abilities might point to wrong types
  • Create variables for unit type and ability

Unit dies trigger is on all the time
  • Turn it on when you create a glyph
  • Turn it off when a glyph dies and there are no more living glyphs

You have Custom script: call RemoveLocation (udg_EG_TempPoint) twice in the unit dies trigger, move it out of the if/then/else.

A leak: check the looping trigger, stage 1. In the unit group loop you set TempPoint, but remove TempPoint2.

You should use an active icon for the ability, not a passive ability icon.
The tooltip lists the formulas of the damage and stuff, it doesn't look nice.

I don't see you flushing child hashtables.

The amount of effects is ridiculous. I casted it on four of my units, and it created 536 effects per cast. About 234 effects per second. By my standards this counts as effect spam.
 
Top