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

[GUI] Pierce v1.3

  • Like
Reactions: -Berz-
By Archangel678
[rainbow]Pierce[/rainbow]



Pierce, Point Target, Targeting Image

Ingame Description -
The caster expells a mystical beam in a line. Units in the beam's way will be enveloped in magic, draining mana while causing them to combust. Combusting units will rise up and explode, inflicting heavy damage.

Level 1 - Mana Reduction % - 10
Damage - 90
Level 2 - Mana Reduction % - 20
Damage - 180
Level 3 - Mana Reduction % - 30
Damage - 270

  • PierceCast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Pierce
    • Actions
      • -------- Initialize --------
      • Set Caster = (Triggering unit)
      • Set PP1 = (Position of Caster)
      • Set PP2 = (Target point of ability being cast)
      • Set Real_AnglePierce = (Angle from PP2 to PP1)
      • Custom script: call RemoveLocation(udg_PP2)
      • Set Real_HeightPierce = PierceHeightBase
      • Set Real_HeightPierce2 = Real_HeightPierce
      • Set Real_PierceLightOA = PierceLightOAINT
      • Set Real_PierceLightOB = PierceLightOBINT
      • Set Real_PierceLightningOffsetA = (Real_AnglePierce - Real_PierceLightOA)
      • Set Real_PierceLightningOffsetB = (Real_AnglePierce + Real_PierceLightOA)
      • Set Real_PierceLightningOffsetC = (Real_AnglePierce + Real_PierceLightOB)
      • Set PierceAbilityLevel = (Level of Pierce for Caster)
      • -------- ======================================= --------
      • Unit - Create 1 Dummy (Pierce) Derpdy Derpy Derp for (Triggering player) at PP1 facing (Real_AnglePierce + 270.00) degrees
      • Set Target = (Last created unit)
      • Animation - Change Target flying height to Real_HeightPierce at 0.00
      • Unit Group - Add Target to PierceGroup
      • -------- ======================================= --------
      • Set Real_ManaDrainPierce = (1.00 - (PierceManaDrain x (Real(PierceAbilityLevel))))
      • Set Real_DamagePierce = (PierceDamage x (Real(PierceAbilityLevel)))
      • -------- LightningINT --------
      • -------- ===========No, I can't Loop this.===================== --------
      • Set PP2 = (PP1 offset by PierceLightningLength towards Real_PierceLightningOffsetA degrees)
      • Custom script: set udg_PierceLightningA = AddLightningEx(udg_PierceLightA, true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce), GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce2) )
      • Custom script: call RemoveLocation(udg_PP2)
      • -------- =============================================================== --------
      • Set PP2 = (PP1 offset by PierceLightningLength towards Real_PierceLightningOffsetB degrees)
      • Custom script: set udg_PierceLightningB = AddLightningEx(udg_PierceLightA, true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce), GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce2) )
      • Custom script: call RemoveLocation(udg_PP2)
      • -------- =============================================================== --------
      • Set PP2 = (PP1 offset by PierceLightningLength towards Real_PierceLightningOffsetC degrees)
      • Set Real_HeightPierce3 = (Real_HeightPierce x 1.50)
      • Custom script: set udg_PierceLightningC = AddLightningEx(udg_PierceLightA, true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce), GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce3) )
      • -------- =============================================================== --------
      • Set Real_HeightPierce4 = (Real_HeightPierce x 0.75)
      • Custom script: set udg_PierceLightningD = AddLightningEx(udg_PierceLightA, true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce), GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce4) )
      • Custom script: call RemoveLocation(udg_PP2)
      • -------- ========================================== --------
      • -------- =========Save Hashtables=========== --------
      • Custom script: set udg_Handle_Pierce = GetHandleId(udg_Target)
      • Hashtable - Save Real_DamagePierce as 1 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Real_ManaDrainPierce as 2 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Real_HeightPierce2 as 3 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Real_HeightPierce3 as 4 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Real_HeightPierce4 as 5 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Handle OfCaster as 6 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save False as 7 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Handle OfPierceLightningA as 10 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Handle OfPierceLightningB as 11 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Handle OfPierceLightningC as 12 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Handle OfPierceLightningD as 13 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save (PierceAOE_Base + (PierceAOE_Incre x (Real(PierceAbilityLevel)))) as 14 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Real_PierceLightOA as 20 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save Real_PierceLightOB as 21 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save 0 as 22 of Handle_Pierce in Hashtable_Pierce
      • Hashtable - Save (PierceDuration x PierceAbilityLevel) as 23 of Handle_Pierce in Hashtable_Pierce
      • -------- ========================================== --------
      • -------- ========================================== --------
      • Set PierceTrigger = (PierceTrigger + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (PierceLoop <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on PierceLoop <gen>
        • Else - Actions
      • Custom script: call RemoveLocation(udg_PP1)
  • PierceLoop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in PierceGroup and do (Actions)
        • Loop - Actions
          • Set Caster = (Picked unit)
          • Custom script: set udg_Handle_Pierce = GetHandleId(udg_Caster)
          • Set Boolean_Pierce = (Load 7 of Handle_Pierce from Hashtable_Pierce)
          • -------- The True/False tells the difference between the dummy unit and the targeted units. Yeah, messing with that is a BAD idea. --------
          • -------- Oh, and there's going to be a wall of text below this. --------
          • Set PP1 = (Position of Caster)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Boolean_Pierce Equal to False
            • Then - Actions
              • Set Real_DamagePierce = (Load 1 of Handle_Pierce from Hashtable_Pierce)
              • Set Real_ManaDrainPierce = (Load 2 of Handle_Pierce from Hashtable_Pierce)
              • Set Real_AnglePierce = ((Facing of Caster) + 270.00)
              • Set PP2 = (PP1 offset by PierceBeamSpeed towards Real_AnglePierce degrees)
              • Unit - Move Caster instantly to PP2
              • Custom script: call RemoveLocation(udg_PP2)
              • -------- ========================================== --------
              • Set PierceLightningA = (Load 10 of Handle_Pierce in Hashtable_Pierce)
              • Set PierceLightningB = (Load 11 of Handle_Pierce in Hashtable_Pierce)
              • Set PierceLightningC = (Load 12 of Handle_Pierce in Hashtable_Pierce)
              • Set PierceLightningD = (Load 13 of Handle_Pierce in Hashtable_Pierce)
              • Set Real_HeightPierce = (Current flying height of Caster)
              • Set Real_HeightPierce2 = (Load 3 of Handle_Pierce from Hashtable_Pierce)
              • Set Real_HeightPierce3 = (Load 4 of Handle_Pierce from Hashtable_Pierce)
              • Set Real_HeightPierce4 = (Load 5 of Handle_Pierce from Hashtable_Pierce)
              • Set Real_PierceLightOA = (Load 20 of Handle_Pierce from Hashtable_Pierce)
              • Set Real_PierceLightOB = (Load 21 of Handle_Pierce from Hashtable_Pierce)
              • Set Real_PierceLightningOffsetA = (Real_AnglePierce - Real_PierceLightOA)
              • Set Real_PierceLightningOffsetB = (Real_AnglePierce + Real_PierceLightOA)
              • Set Real_PierceLightningOffsetC = (Real_AnglePierce + Real_PierceLightOB)
              • Set Real_PierceAOE = (Load 14 of Handle_Pierce from Hashtable_Pierce)
              • Set Integer_PierceDuraCurrent = (Load 22 of Handle_Pierce from Hashtable_Pierce)
              • Set Integer_PierceDura = (Load 23 of Handle_Pierce from Hashtable_Pierce)
              • -------- ========================================== --------
              • -------- ========================================== --------
              • -------- ========================================== --------
              • Set PP2 = (PP1 offset by PierceLightningLength towards Real_PierceLightningOffsetA degrees)
              • Custom script: call MoveLightningEx(udg_PierceLightningA , true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce) , GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce2) )
              • Custom script: call RemoveLocation(udg_PP2)
              • -------- ========================================== --------
              • -------- ========================================== --------
              • Set PP2 = (PP1 offset by PierceLightningLength towards Real_PierceLightningOffsetB degrees)
              • Custom script: call MoveLightningEx(udg_PierceLightningB , true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce) , GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce2) )
              • Custom script: call RemoveLocation(udg_PP2)
              • -------- ========================================== --------
              • -------- ========================================== --------
              • -------- ========================================== --------
              • Set PP2 = (PP1 offset by PierceLightningLength towards Real_PierceLightningOffsetC degrees)
              • Custom script: call MoveLightningEx(udg_PierceLightningC , true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce) , GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce3) )
              • -------- ========================================== --------
              • -------- ========================================== --------
              • -------- ========================================== --------
              • -------- ========================================== --------
              • Custom script: call MoveLightningEx(udg_PierceLightningD , true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce) , GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce4) )
              • Custom script: call RemoveLocation(udg_PP2)
              • -------- ========================================== --------
              • Set Real_PierceLightOA = (Real_PierceLightOA + 0.25)
              • Set Real_HeightPierce2 = (Real_HeightPierce2 - 0.25)
              • Set Real_HeightPierce3 = (Real_HeightPierce3 - 0.25)
              • Set Real_HeightPierce4 = (Real_HeightPierce4 + 0.25)
              • Set Integer_PierceDuraCurrent = (Integer_PierceDuraCurrent + 1)
              • Hashtable - Save Real_PierceLightOA as 20 of Handle_Pierce in Hashtable_Pierce
              • Hashtable - Save Real_HeightPierce2 as 3 of Handle_Pierce in Hashtable_Pierce
              • Hashtable - Save Real_HeightPierce3 as 4 of Handle_Pierce in Hashtable_Pierce
              • Hashtable - Save Real_HeightPierce4 as 5 of Handle_Pierce in Hashtable_Pierce
              • Hashtable - Save Integer_PierceDuraCurrent as 22 of Handle_Pierce in Hashtable_Pierce
              • -------- ========================================== --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Integer_PierceDuraCurrent Equal to (Integer_PierceDura - 32)
                • Then - Actions
                  • Set PP2 = (PP1 offset by (PierceBeamSpeed x 26.00) towards Real_AnglePierce degrees)
                  • Special Effect - Create a special effect at PP2 using PierceSFXB
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at PP2 using PierceSFXC
                  • Special Effect - Destroy (Last created special effect)
                  • Custom script: call RemoveLocation(udg_PP2)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Integer_PierceDuraCurrent Greater than or equal to Integer_PierceDura
                • Then - Actions
                  • Lightning - Destroy PierceLightningA
                  • Lightning - Destroy PierceLightningB
                  • Lightning - Destroy PierceLightningC
                  • Lightning - Destroy PierceLightningD
                  • Set PierceTrigger = (PierceTrigger - 1)
                  • Unit - Explode Caster
                  • Unit Group - Remove Caster from PierceGroup
                  • Hashtable - Clear all child hashtables of child Handle_Pierce in Hashtable_Pierce
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PierceTrigger Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within Real_PierceAOE of PP1 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is A flying unit) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is an illusion) Equal to Fa and do (Actions)
                    • Loop - Actions
                      • Set Caster = (Load 6 of Handle_Pierce in Hashtable_Pierce)
                      • Set Target = (Picked unit)
                      • Unit - Set mana of Target to ((Mana of Target) x Real_ManaDrainPierce)
                      • Set PierceTrigger = (PierceTrigger + 1)
                      • Unit Group - Add Target to PierceGroup
                      • Custom script: set udg_Handle_Pierce = GetHandleId(udg_Target)
                      • Hashtable - Save Handle OfCaster as 26 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save 1 as 33 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save PierceTargetMultiplier as 34 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save False as 35 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save Real_DamagePierce as 17 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save Handle OfCaster as 25 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save True as 7 of Handle_Pierce in Hashtable_Pierce
                      • -------- ============================================== --------
                      • Set PP2 = (Position of Target)
                      • Custom script: set udg_PierceLightningA = AddLightningEx(udg_PierceLightB, true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + 60, GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + 60 )
                      • Custom script: set udg_PierceLightningB = AddLightningEx(udg_PierceLightB, true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + 60, GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + 60 )
                      • Custom script: set udg_PierceLightningC = AddLightningEx(udg_PierceLightC, true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + 60, GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + 60 )
                      • Custom script: set udg_PierceLightningD = AddLightningEx(udg_PierceLightC, true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + 60, GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + 60 )
                      • Hashtable - Save Handle OfPierceLightningA as 28 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save Handle OfPierceLightningB as 29 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save Handle OfPierceLightningC as 30 of Handle_Pierce in Hashtable_Pierce
                      • Hashtable - Save Handle OfPierceLightningD as 31 of Handle_Pierce in Hashtable_Pierce
                      • -------- ============================================== --------
                      • Custom script: call RemoveLocation(udg_PP2)
              • -------- ========================================== --------
            • Else - Actions
              • Unit - Order Caster to Stop
              • Set PierceLightningA = (Load 28 of Handle_Pierce in Hashtable_Pierce)
              • Set PierceLightningB = (Load 29 of Handle_Pierce in Hashtable_Pierce)
              • Set PierceLightningC = (Load 30 of Handle_Pierce in Hashtable_Pierce)
              • Set PierceLightningD = (Load 31 of Handle_Pierce in Hashtable_Pierce)
              • -------- ======================================== --------
              • -------- ======================================== --------
              • -------- ======================================== --------
              • Set Boolean_Pierce2 = (Load 35 of Handle_Pierce from Hashtable_Pierce)
              • Set Integer_PierceDuraCurrent = (Load 33 of Handle_Pierce from Hashtable_Pierce)
              • Set Integer_PierceDura = (Load 34 of Handle_Pierce from Hashtable_Pierce)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Boolean_Pierce2 Equal to False
                • Then - Actions
                  • Set Integer_PierceDuraCurrent = (Integer_PierceDuraCurrent + 1)
                  • Set Real_HeightPierce3 = ((Current flying height of Caster) + 6.00)
                • Else - Actions
                  • Set Integer_PierceDuraCurrent = (Integer_PierceDuraCurrent - 1)
                  • Set Real_HeightPierce3 = ((Current flying height of Caster) - 6.00)
              • Set Real_HeightPierce2 = (Real_HeightPierce3 + 50.00)
              • Set Real_PierceLightOA = (Load 32 of Handle_Pierce from Hashtable_Pierce)
              • Set Real_PierceLightOA = (Real_PierceLightOA + 2.50)
              • -------- ======================================== --------
              • -------- ======================================== --------
              • -------- ======================================== --------
              • Hashtable - Save Real_PierceLightOA as 32 of Handle_Pierce in Hashtable_Pierce
              • Hashtable - Save Integer_PierceDuraCurrent as 33 of Handle_Pierce in Hashtable_Pierce
              • -------- ======================================== --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Integer_PierceDuraCurrent Greater than or equal to Integer_PierceDura
                • Then - Actions
                  • Set Real_DamagePierce = (Load 17 of Handle_Pierce from Hashtable_Pierce)
                  • Unit - Cause (Load 26 of Handle_Pierce in Hashtable_Pierce) to damage Caster, dealing Real_DamagePierce damage of attack type Spells and damage type Mind
                  • Set Boolean_Pierce2 = True
                  • Hashtable - Save Boolean_Pierce2 as 35 of Handle_Pierce in Hashtable_Pierce
                • Else - Actions
              • -------- ======================================== --------
              • -------- ======================================== --------
              • -------- ======================================== --------
              • -------- ======================================== --------
              • Set PP2 = (PP1 offset by PierceLightningLength2 towards Real_PierceLightOA degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Boolean_Pierce2 Equal to False
                  • Integer_PierceDuraCurrent Equal to (Integer_PierceDura - 11)
                • Then - Actions
                  • Unit - Create 1 Dummy (Pierce) Derpdy Derpy Derp for Neutral Passive at PP2 facing (Real_PierceLightOA + 270.00) degrees
                  • Set Target = (Last created unit)
                  • Animation - Change Target's size to (PierceBigLightSize%, PierceBigLightSize%, PierceBigLightSize%) of its original size
                  • Animation - Change Target flying height to PierceDummyHeight at 0.00
                  • Animation - Change Target flying height to 0.00 at 100.00
                  • Unit - Add a 0.00 second Generic expiration timer to Target
                  • Unit - Make Target Explode on death
                • Else - Actions
              • Custom script: call MoveLightningEx(udg_PierceLightningA , true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce2) , GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce2) )
              • Custom script: call RemoveLocation(udg_PP2)
              • -------- ======================================== --------
              • Set PP2 = (PP1 offset by PierceLightningLength2 towards (Real_PierceLightOA + 90.00) degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Integer_PierceDuraCurrent Equal to (Integer_PierceDura - 11)
                  • Boolean_Pierce2 Equal to False
                • Then - Actions
                  • Unit - Create 1 Dummy (Pierce) Derpdy Derpy Derp for Neutral Passive at PP2 facing Real_PierceLightOA degrees
                  • Set Target = (Last created unit)
                  • Animation - Change Target's size to (PierceBigLightSize%, PierceBigLightSize%, PierceBigLightSize%) of its original size
                  • Animation - Change Target flying height to PierceDummyHeight at 0.00
                  • Animation - Change Target flying height to 0.00 at 100.00
                  • Unit - Add a 0.00 second Generic expiration timer to Target
                  • Unit - Make Target Explode on death
                • Else - Actions
              • Custom script: call MoveLightningEx(udg_PierceLightningB , true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce2) , GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce2) )
              • Custom script: call RemoveLocation(udg_PP2)
              • -------- ======================================== --------
              • Set PP2 = (PP1 offset by PierceLightningLength2 towards (Real_PierceLightOA + 180.00) degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Integer_PierceDuraCurrent Equal to (Integer_PierceDura - 11)
                  • Boolean_Pierce2 Equal to False
                • Then - Actions
                  • Unit - Create 1 Dummy (Pierce) Derpdy Derpy Derp for Neutral Passive at PP2 facing (Real_PierceLightOA + 90.00) degrees
                  • Set Target = (Last created unit)
                  • Animation - Change Target's size to (PierceBigLightSize%, PierceBigLightSize%, PierceBigLightSize%) of its original size
                  • Animation - Change Target flying height to PierceDummyHeight at 0.00
                  • Animation - Change Target flying height to 0.00 at 100.00
                  • Unit - Add a 0.00 second Generic expiration timer to Target
                  • Unit - Make Target Explode on death
                • Else - Actions
              • Custom script: call MoveLightningEx(udg_PierceLightningC , true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce2) , GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce2) )
              • Custom script: call RemoveLocation(udg_PP2)
              • -------- ======================================== --------
              • Set PP2 = (PP1 offset by PierceLightningLength2 towards (Real_PierceLightOA + 270.00) degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Integer_PierceDuraCurrent Equal to (Integer_PierceDura - 11)
                  • Boolean_Pierce2 Equal to False
                • Then - Actions
                  • Unit - Create 1 Dummy (Pierce) Derpdy Derpy Derp for Neutral Passive at PP2 facing (Real_PierceLightOA + 180.00) degrees
                  • Set Target = (Last created unit)
                  • Animation - Change Target's size to (PierceBigLightSize%, PierceBigLightSize%, PierceBigLightSize%) of its original size
                  • Animation - Change Target flying height to PierceDummyHeight at 0.00
                  • Animation - Change Target flying height to 0.00 at 100.00
                  • Unit - Add a 0.00 second Generic expiration timer to Target
                  • Unit - Make Target Explode on death
                • Else - Actions
              • Custom script: call MoveLightningEx(udg_PierceLightningD , true , GetLocationX(udg_PP1), GetLocationY(udg_PP1), GetLocationZ(udg_PP1) + (udg_Real_HeightPierce2) , GetLocationX(udg_PP2), GetLocationY(udg_PP2), GetLocationZ(udg_PP2) + (udg_Real_HeightPierce2) )
              • Custom script: call RemoveLocation(udg_PP2)
              • -------- ======================================== --------
              • -------- ======================================== --------
              • -------- ======================================== --------
              • -------- ======================================== --------
              • Unit - Add Crow Form to Caster
              • Animation - Change Caster flying height to Real_HeightPierce3 at 0.00
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Caster is dead) Equal to True
                      • Integer_PierceDuraCurrent Equal to 0
                • Then - Actions
                  • Lightning - Destroy PierceLightningA
                  • Lightning - Destroy PierceLightningB
                  • Lightning - Destroy PierceLightningC
                  • Lightning - Destroy PierceLightningD
                  • Animation - Change Caster flying height to (Default flying height of Caster) at 90.00
                  • Unit Group - Remove Caster from PierceGroup
                  • Hashtable - Clear all child hashtables of child Handle_Pierce in Hashtable_Pierce
                  • Set PierceTrigger = (PierceTrigger - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PierceTrigger Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
              • Unit - Remove Crow Form from Caster
          • Custom script: call RemoveLocation(udg_PP1)
170705-albums4602-picture45969.jpg
170705-albums4602-picture45968.jpg
170705-albums4602-picture45966.jpg
170705-albums4602-picture45967.jpg




Update Log
v1.0 Uploaded
v1.1 Removed Useless Variables
v1.2 Fixed a few mistakes, re-configured the special effects... its holy now.
v1.3 Fixed more things.

Keywords:
ray,laser,light,lightning,gui,mui,configurable,leak,leakless,arch,angel,678,light,happy,static,colorful,height,custom,script,holy,shiny
Contents

Pierce (Map)

Reviews
18:59, 2nd Jun 2011 Maker: Do this check only after you reduce the integer by one: PierceTrigger Equal to 0. You should not do it during every loop. In the loop, you're moving the caster to PP2 and then you remove the PP2. Then you set PP1 = caster...

Moderator

M

Moderator

18:59, 2nd Jun 2011
Maker:
Do this check only after you reduce the integer by one: PierceTrigger Equal to 0. You should not do it during every loop.
In the loop, you're moving the caster to PP2 and then you remove the PP2. Then you set PP1 = caster loc. Use PP2 instead.
The flying height could use some parabola function.
The lightning effects could look better.
 
Level 10
Joined
Apr 25, 2009
Messages
296
[rainbow]Please comment and rate.[/rainbow]

Q:Is this Gui?
A: Yeah.

Q:This looks like an effect spam.
A: "Definition of a spell" Its an effect spam when you use it on 20+ units.

Q:This looks like it'll lag.
A:Yeah, if you cast it on like 50 wisps. As with all spells like this.

Q:Loop the lightning.
A:I could if I converted them into an array, or used a different If/Then/Else function for the loop for each lightning. I believe the most efficient way is to do it the way I did, as it avoids If/Then/Else massing.

Q:That trigger is huge...
A:Yep. Its basically two spells combined in size. No, I can't reduce it without reducing the effects.

Q:Hashtables suck.
A:..............................
They're slower, but they're easier to use.

Q:How do you come up with this stuff?
A:You get 100 ml of... You use your 'imagination'

Q:What's this based of off?
A:pokemon evolving animation.

Q:How the ..... what? Hows this like pokemon evolving?
A:Its not.

Q:The title picture looks like an effect spam.
A:Cast the spell on the wisps in the bottom right corner of the map, there's 32 wisps...

Q:Does massing the spell lagg?
A:No, atleast not on my computer. Like I've said, it'll lagg when cast on alot of packed together units, with 'alot' being around 40+.

Any others?
 
Level 6
Joined
Aug 20, 2009
Messages
95
Looks good, very editable for a GUI spell, (Heck its Very editable anyways).
Coding looks good, didn't spot any leaks in my quick overview. It looks good. I vote for approval, and I'll rate 4/5.

The only thing I didn't like, was how the lightning effects look, but thats a personal preference.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
Set the follow through time to something other than 0. The caster doesn't have time enough to complete the cast animation, and it is interrupted abruptly. Doesn't look good.

As mentionde, move these to the init triggger:
Set Real_PierceLightOA = x
Set Real_PierceLightOB = y

Mana drain pierce could be calculated in one line.

You could store GetLocationX(PP1), GetLocationY(PP1), GetLocationZ(PP1) in variables and use the variables.

The loop trigger is never turned off.

You're setting the caster's position into a variable in both then and else branches. So set it before the if condition. Remove it after the IF/THEN/ELSE.

The lightnings on the affected units don't look good in my eyes.


Overall the triggering is good in my opinion.
 
Last edited:
Level 4
Joined
Nov 24, 2010
Messages
61
You always like a spell with so much Special Effect?
If I called the mystical beam is a sword, I could see the Sword Blade disappear before its handle...
I think you should pause the blade animation before it disappear...

I will try to add so much Special Effect to my spell too :p
 
Level 10
Joined
Apr 25, 2009
Messages
296
I hope you do download it - I need feedback on how to improve the lightning effects. Also, the 'Pierce' letters was intended to be obnoxiously large.


I'll do the updates asap. Also, could you inform me on what I could improve on the lightning effects?

Also, most of those mistakes were me forgetting to add them.


You always like a spell with so much Special Effect?
If I called the mystical beam is a sword, I could see the Sword Blade disappear before its handle...
I think you should pause the blade animation before it disappear...

I like special effects, honestly. Warcraft Spells are generally bland. However, others don't. I'm still trying to find balance between the effects.

The Beam effect problem occurs when one cast is in progress - I'll try to fix it the best I can.


Reworked the SFX... yeah. Its... pretty bright.
 
Last edited:
Top