1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still haven't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. Weave light to take you to your highest hopes - the 6th Special Effect Contest is here!
    Dismiss Notice
  5. Lead your forces to battle in the 15th Techtree Contest. The call is yours, commander!
    Dismiss Notice
  6. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Impale Shock v1.0

Submitted by JAKEZINC
This bundle is marked as approved. It works and satisfies the submission rules.
Spell Name: Impale Shock [ GUI ] v1.0



Spell Description:

[​IMG]



Spell Screenshots

1
The casters will releasing a clusters of impale to the underground and travels it. While the primary impale traveling, it will releasing some secondary impales in the random angle.

[​IMG]


2
Then if the primary impale reaches the desired distance then it will impact that deals a radius damage and massive knockbacks.

[​IMG]





The Spell Code [GUI].



IS Configuration
  • IS Configuration
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ------------------------ --------
      • -------- The Mega Impale Shock Ability that used in the spell --------
      • Set IS_Ability = Impale Shock - Ability
      • -------- ------------------------ --------
      • -------- The Impale shock dummy unit that used model in dummy.mdl --------
      • Set IS_DummyUnitType = IS Dummy
      • -------- ------------------------ --------
      • -------- The dummy ability of the dummy caster ( stun ) --------
      • Set IS_DummyStunAbility = Impale Shock - DummyStunAbility
      • -------- ------------------------ --------
      • -------- The dummy ability of the dummy caster ( impale ) --------
      • Set IS_DummyImpaleAbility = Impale Shock - DummyImpaleAbility
      • -------- ------------------------ --------
      • -------- Determines the speed of the primary impale ( distance per second ) --------
      • Set IS_ImpaleSpeed[1] = 400.00
      • Set IS_ImpaleSpeed[2] = 500.00
      • Set IS_ImpaleSpeed[3] = 600.00
      • -------- ------------------------ --------
      • -------- Determines collision size or radius of the primary impale. --------
      • Set IS_ImpaleCollisionSize[1] = 100.00
      • Set IS_ImpaleCollisionSize[2] = 100.00
      • Set IS_ImpaleCollisionSize[3] = 100.00
      • -------- ------------------------ --------
      • -------- Determines the damage when it meets a enemy unit in the primary impale's collision size. --------
      • Set IS_ImpaleCollisionDamage[1] = 100.00
      • Set IS_ImpaleCollisionDamage[2] = 150.00
      • Set IS_ImpaleCollisionDamage[3] = 200.00
      • -------- ------------------------ --------
      • -------- Determines the attacktype of the primary impale when it meets some enemies in it's collision size. --------
      • Set IS_ImpaleAttackType = Spells
      • -------- ------------------------ --------
      • -------- Determines the damagetype of the primary impale when it meets some enemies in it's collision size. --------
      • Set IS_ImpaleDamageType = Normal
      • -------- ------------------------ --------
      • -------- Determines the releasing time of the secondary impale. --------
      • Set IS_SecondaryImpaleReleaseTime[1] = 0.60
      • Set IS_SecondaryImpaleReleaseTime[2] = 0.50
      • Set IS_SecondaryImpaleReleaseTime[3] = 0.40
      • -------- ------------------------ --------
      • -------- Determines the bonus range into the targeted point. Formulation: ( Distance Between Caster, Target + Bonus Range ) --------
      • Set IS_ImpaleBonusRange[1] = 100.00
      • Set IS_ImpaleBonusRange[2] = 100.00
      • Set IS_ImpaleBonusRange[3] = 100.00
      • -------- ------------------------ --------
      • -------- Determines the casting factor offset of the secondary impale. Formulation [ 0.00 and Wave Distance of DummyImpaleAbility ( 500 ) ] --------
      • Set IS_ImpaleReleaseOffsetFactor[1] = (Random real number between 0.00 and 500.00)
      • Set IS_ImpaleReleaseOffsetFactor[2] = (Random real number between 0.00 and 500.00)
      • Set IS_ImpaleReleaseOffsetFactor[3] = (Random real number between 0.00 and 500.00)
      • -------- ------------------------ --------
      • -------- Determines the secondary special effect of the leading impale effect. --------
      • Set IS_ImpaleEffect = Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
      • -------- ------------------------ --------
      • -------- Determines the size of the Impale Special Effect --------
      • Set IS_ImpaleEffectSize[1] = 100.00
      • Set IS_ImpaleEffectSize[2] = 125.00
      • Set IS_ImpaleEffectSize[3] = 150.00
      • -------- ------------------------ --------
      • -------- Determines the special effect of the leading impale. --------
      • Set IS_ImpaleLeadEffect = Abilities\Spells\Undead\Impale\ImpaleMissTarget.mdl
      • -------- ------------------------ --------
      • -------- Determines the size of the leading impale special effect. --------
      • Set IS_ImpaleLeadSize[1] = 125.00
      • Set IS_ImpaleLeadSize[2] = 150.00
      • Set IS_ImpaleLeadSize[3] = 175.00
      • -------- ------------------------ --------
      • -------- Determines the special effect of the unit when the primary impale's collision meets an enemy unit in the line. --------
      • Set IS_CollideUnitEffect = Abilities\Spells\Undead\Impale\ImpaleMissTarget.mdl
      • -------- ------------------------ --------
      • -------- Determines the collide effect attachent in the unit. --------
      • Set IS_CollideUnitEffectAttach = origin
      • -------- ------------------------ --------
      • -------- Determines the chance of the lead impale special effect to occurs. --------
      • Set IS_ChanceLeadEffect = 25
      • -------- ------------------------ --------
      • -------- Determines the chance of the impale special effect to occurs. --------
      • Set IS_ChanceEffect = 35
      • -------- ------------------------ --------
      • -------- Determines the impact effect when the primary impale reached the final target point. --------
      • Set IS_ImpactEffect = Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
      • -------- ------------------------ --------
      • -------- Determines the impact radius. --------
      • Set IS_ImpactRadius[1] = 300.00
      • Set IS_ImpactRadius[2] = 350.00
      • Set IS_ImpactRadius[3] = 400.00
      • -------- ------------------------ --------
      • -------- Determines the damage in the impact radius. --------
      • Set IS_ImpactDamage[1] = 100.00
      • Set IS_ImpactDamage[2] = 200.00
      • Set IS_ImpactDamage[3] = 300.00
      • -------- ------------------------ --------
      • -------- Determines the attacktype of the impact. --------
      • Set IS_ImpactAttackType = Siege
      • -------- ------------------------ --------
      • -------- Determines the damage type of the impact. --------
      • Set IS_ImpactDamageType = Demolition
      • -------- ------------------------ --------
      • -------- Acceleration, Speed Added/s to the KB speed --------
      • Set IS_KB_Acceleration[1] = -500.00
      • Set IS_KB_Acceleration[2] = -500.00
      • Set IS_KB_Acceleration[3] = -500.00
      • -------- ------------------------ --------
      • -------- Set this to false if you don't want to crash your map. Set this to true if you want to crash your map. --------
      • -------- ^ xD. Set this to false to not allow the knockbacked unit throughout in the map playable bounds or borders --------
      • Set IS_KB_AllowThroughBorders = False
      • -------- ------------------------ --------
      • -------- Set this to true if you want to destroy trees while knockbacking the target. Set this to false if you don't want to destroy trees --------
      • Set IS_KB_DestroyTree = True
      • -------- ------------------------ --------
      • -------- Set this to true if you want to disable the unit when being knockback, false if you don't. --------
      • Set IS_KB_DisableUnit = True
      • -------- ------------------------ --------
      • -------- The knockback damage every looping second. --------
      • Set IS_KB_LoopDamage[1] = 50.00
      • Set IS_KB_LoopDamage[2] = 75.00
      • Set IS_KB_LoopDamage[3] = 100.00
      • -------- ------------------------ --------
      • -------- Determines the special effect of the unit when knockbacked. --------
      • Set IS_KB_LoopEffect = Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
      • -------- ------------------------ --------
      • -------- ^Attachment of the effect. --------
      • Set IS_KB_LoopEffectAttach = chest
      • -------- ------------------------ --------
      • -------- Determines the ZOffset or the desired max height of the unit when knockbacked --------
      • Set IS_KB_MaxHeight[1] = 300.00
      • Set IS_KB_MaxHeight[2] = 350.00
      • Set IS_KB_MaxHeight[3] = 400.00
      • -------- ------------------------ --------
      • -------- Determines the max distance of the knockback --------
      • Set IS_KB_Range[1] = 350.00
      • Set IS_KB_Range[2] = 500.00
      • Set IS_KB_Range[3] = 650.00
      • -------- ------------------------ --------
      • -------- Determines the speed of the knockback, distance per second. --------
      • Set IS_KB_Speed[1] = 300.00
      • Set IS_KB_Speed[2] = 400.00
      • Set IS_KB_Speed[3] = 500.00
      • -------- ------------------------ --------
      • -------- Determines the attacktype of the knockback looping damage. --------
      • Set IS_KB_AttackType = Magic
      • -------- ------------------------ --------
      • -------- Determines the damagetype of the knockback looping damage. --------
      • Set IS_KB_DamageType = Normal
      • -------- ------------------------ --------
      • -------- Determines the trail effect of the knockbacked unit. --------
      • Set IS_KB_TrailEffect = Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
      • -------- ------------------------ --------
      • -------- Determines the collision size of the unit or radius of the unit. --------
      • Set IS_KB_UnitCollision[1] = 100.00
      • Set IS_KB_UnitCollision[2] = 125.00
      • Set IS_KB_UnitCollision[3] = 150.00
      • -------- ------------------------ --------
      • -------- Set this to true if you want to stop in unpathable area. --------
      • Set IS_KB_UnpathableStop = True
      • -------- ------------------------ --------


IS Execution
  • IS Execution
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to IS_Ability
    • Actions
      • -------- ------------------------ --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • IS_MaxIndex Equal to 0
        • Then - Actions
          • Trigger - Turn on IS Loop <gen>
        • Else - Actions
      • -------- ------------------------ --------
      • Set IS_MaxIndex = (IS_MaxIndex + 1)
      • -------- ------------------------ --------
      • Set IS_Caster[IS_MaxIndex] = (Triggering unit)
      • -------- ------------------------ --------
      • Set IS_Player[IS_MaxIndex] = (Triggering player)
      • -------- ------------------------ --------
      • Set IS_CasterPosition = (Position of IS_Caster[IS_MaxIndex])
      • -------- ------------------------ --------
      • Set IS_Level[IS_MaxIndex] = (Level of IS_Ability for IS_Caster[IS_MaxIndex])
      • -------- ------------------------ --------
      • Set IS_TargetLocation[IS_MaxIndex] = (Target point of ability being cast)
      • -------- ------------------------ --------
      • Set IS_ImpaleAngle[IS_MaxIndex] = (Angle from IS_CasterPosition to IS_TargetLocation[IS_MaxIndex])
      • -------- ------------------------ --------
      • Set IS_ImpaleRangeDistance[IS_MaxIndex] = ((Distance between IS_CasterPosition and IS_TargetLocation[IS_MaxIndex]) + IS_ImpaleBonusRange[IS_Level[IS_MaxIndex]])
      • -------- ------------------------ --------
      • Set IS_ImpaleSpeedCounter[IS_MaxIndex] = 0.00
      • -------- ------------------------ --------
      • Set IS_SecondaryImpaleTimeCounter[IS_MaxIndex] = 0.00
      • -------- ------------------------ --------
      • Set IS_ImpaleSpeedCalculation[IS_MaxIndex] = (IS_ImpaleSpeed[IS_Level[IS_MaxIndex]] x 0.03)
      • -------- ------------------------ --------
      • Custom script: set udg_IS_GroupContainer [ udg_IS_MaxIndex ] = CreateGroup ( )
      • -------- ------------------------ --------
      • Unit - Create 1 IS_DummyUnitType for IS_Player[IS_MaxIndex] at IS_CasterPosition facing Default building facing degrees
      • -------- ------------------------ --------
      • Set IS_ImpaleDummyUnit[IS_MaxIndex] = (Last created unit)
      • -------- ------------------------ --------
      • Custom script: call RemoveLocation ( udg_IS_CasterPosition )
      • -------- ------------------------ --------


IS Loop
  • IS Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- ------------------------ --------
      • Custom script: local real getX
      • Custom script: local real getY
      • -------- ------------------------ --------
      • For each (Integer IS_CurrentIndex) from 1 to IS_MaxIndex, do (Actions)
        • Loop - Actions
          • -------- ------------------------ --------
          • Set IS_SecondaryImpaleTimeCounter[IS_MaxIndex] = (IS_SecondaryImpaleTimeCounter[IS_MaxIndex] + 0.03)
          • -------- ------------------------ --------
          • Set IS_ImpaleDummyUnitPosition = (Position of IS_ImpaleDummyUnit[IS_CurrentIndex])
          • -------- ------------------------ --------
          • Set IS_ImpaleMovementLocation = (IS_ImpaleDummyUnitPosition offset by IS_ImpaleSpeedCalculation[IS_CurrentIndex] towards IS_ImpaleAngle[IS_CurrentIndex] degrees)
          • -------- ------------------------ --------
          • Custom script: set getX = GetLocationX ( udg_IS_ImpaleMovementLocation )
          • Custom script: set getY = GetLocationY ( udg_IS_ImpaleMovementLocation )
          • -------- ------------------------ --------
          • Custom script: call SetUnitX ( udg_IS_ImpaleDummyUnit [ udg_IS_CurrentIndex ], getX )
          • Custom script: call SetUnitY ( udg_IS_ImpaleDummyUnit [ udg_IS_CurrentIndex ], getY )
          • -------- ------------------------ --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Random integer number between 1 and 100) Less than or equal to IS_ChanceLeadEffect
            • Then - Actions
              • -------- ------------------------ --------
              • Unit - Create 1 IS_DummyUnitType for IS_Player[IS_CurrentIndex] at IS_ImpaleMovementLocation facing Default building facing degrees
              • -------- ------------------------ --------
              • Set IS_ImpaleLeadDummyUnit = (Last created unit)
              • -------- ------------------------ --------
              • Animation - Change IS_ImpaleLeadDummyUnit's size to (IS_ImpaleLeadSize[IS_Level[IS_CurrentIndex]]%, 0.00%, 0.00%) of its original size
              • -------- ------------------------ --------
              • Special Effect - Create a special effect attached to the origin of IS_ImpaleLeadDummyUnit using IS_ImpaleLeadEffect
              • -------- ------------------------ --------
              • Special Effect - Destroy (Last created special effect)
              • -------- ------------------------ --------
              • Unit - Add a 0.50 second Generic expiration timer to IS_ImpaleLeadDummyUnit
              • -------- ------------------------ --------
            • Else - Actions
          • -------- ------------------------ --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Random integer number between 1 and 100) Less than or equal to IS_ChanceEffect
            • Then - Actions
              • -------- ------------------------ --------
              • Unit - Create 1 IS_DummyUnitType for IS_Player[IS_CurrentIndex] at IS_ImpaleMovementLocation facing Default building facing degrees
              • -------- ------------------------ --------
              • Set IS_ImpaleEffectDummyUnit = (Last created unit)
              • -------- ------------------------ --------
              • Animation - Change IS_ImpaleEffectDummyUnit's size to (IS_ImpaleEffectSize[IS_Level[IS_CurrentIndex]]%, 0.00%, 0.00%) of its original size
              • -------- ------------------------ --------
              • Special Effect - Create a special effect attached to the origin of IS_ImpaleEffectDummyUnit using IS_ImpaleEffect
              • -------- ------------------------ --------
              • Special Effect - Destroy (Last created special effect)
              • -------- ------------------------ --------
              • Unit - Add a 0.50 second Generic expiration timer to IS_ImpaleEffectDummyUnit
              • -------- ------------------------ --------
            • Else - Actions
          • -------- ------------------------ --------
          • Set IS_ImpaleSpeedCounter[IS_CurrentIndex] = (IS_ImpaleSpeedCounter[IS_CurrentIndex] + IS_ImpaleSpeedCalculation[IS_CurrentIndex])
          • -------- ------------------------ --------
          • Custom script: set bj_wantDestroyGroup = true
          • -------- ------------------------ --------
          • Unit Group - Pick every unit in (Units within IS_ImpaleCollisionSize[IS_Level[IS_CurrentIndex]] of IS_ImpaleMovementLocation) and do (Actions)
            • Loop - Actions
              • Set IS_CollideUnit = (Picked unit)
              • -------- ------------------------ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (IS_CollideUnit is dead) Not equal to True
                  • (Unit-type of IS_CollideUnit) Not equal to No unit-type
                  • (IS_CollideUnit belongs to an enemy of IS_Player[IS_CurrentIndex]) Equal to True
                  • (IS_CollideUnit is in IS_GroupContainer[IS_CurrentIndex]) Not equal to True
                  • (IS_CollideUnit is A structure) Not equal to True
                  • (IS_CollideUnit is Magic Immune) Not equal to True
                  • (IS_CollideUnit is A flying unit) Not equal to True
                  • (IS_CollideUnit is Mechanical) Not equal to True
                • Then - Actions
                  • -------- ------------------------ --------
                  • Set IS_CollideUnitPosition = (Position of IS_CollideUnit)
                  • -------- ------------------------ --------
                  • Unit - Cause IS_Caster[IS_CurrentIndex] to damage IS_CollideUnit, dealing IS_ImpaleCollisionDamage[IS_Level[IS_CurrentIndex]] damage of attack type IS_ImpaleAttackType and damage type IS_ImpaleDamageType
                  • -------- ------------------------ --------
                  • Special Effect - Create a special effect attached to the IS_CollideUnitEffectAttach of IS_CollideUnit using IS_CollideUnitEffect
                  • -------- ------------------------ --------
                  • Special Effect - Destroy (Last created special effect)
                  • -------- ------------------------ --------
                  • Unit - Create 1 IS_DummyUnitType for IS_Player[IS_CurrentIndex] at IS_CollideUnitPosition facing Default building facing degrees
                  • -------- ------------------------ --------
                  • Set IS_ImpaleDummyUnitStunCaster = (Last created unit)
                  • -------- ------------------------ --------
                  • Unit - Add a 1.00 second Generic expiration timer to IS_ImpaleDummyUnitStunCaster
                  • -------- ------------------------ --------
                  • Unit - Add IS_DummyStunAbility to IS_ImpaleDummyUnitStunCaster
                  • -------- ------------------------ --------
                  • Unit - Set level of IS_DummyStunAbility for IS_ImpaleDummyUnitStunCaster to IS_Level[IS_CurrentIndex]
                  • -------- ------------------------ --------
                  • Unit - Order IS_ImpaleDummyUnitStunCaster to Human Mountain King - Storm Bolt IS_CollideUnit
                  • -------- ------------------------ --------
                  • Unit Group - Add IS_CollideUnit to IS_GroupContainer[IS_CurrentIndex]
                  • -------- ------------------------ --------
                  • Custom script: call RemoveLocation ( udg_IS_CollideUnitPosition )
                  • -------- ------------------------ --------
                • Else - Actions
              • -------- ------------------------ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (IS_CollideUnit is dead) Not equal to True
                  • (Unit-type of IS_CollideUnit) Not equal to No unit-type
                  • (IS_CollideUnit belongs to an enemy of IS_Player[IS_CurrentIndex]) Equal to True
                  • (IS_CollideUnit is in IS_GroupContainer[IS_CurrentIndex]) Not equal to True
                  • (IS_CollideUnit is A flying unit) Not equal to True
                • Then - Actions
                  • -------- ------------------------ --------
                  • Unit - Cause IS_Caster[IS_CurrentIndex] to damage IS_CollideUnit, dealing IS_ImpaleCollisionDamage[IS_Level[IS_CurrentIndex]] damage of attack type IS_ImpaleAttackType and damage type IS_ImpaleDamageType
                  • -------- ------------------------ --------
                  • Unit Group - Add IS_CollideUnit to IS_GroupContainer[IS_CurrentIndex]
                  • -------- ------------------------ --------
                • Else - Actions
              • -------- ------------------------ --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • IS_SecondaryImpaleTimeCounter[IS_CurrentIndex] Greater than or equal to IS_SecondaryImpaleReleaseTime[IS_Level[IS_CurrentIndex]]
            • Then - Actions
              • -------- ------------------------ --------
              • Unit - Create 1 IS_DummyUnitType for IS_Player[IS_CurrentIndex] at IS_ImpaleMovementLocation facing Default building facing degrees
              • -------- ------------------------ --------
              • Set IS_ImpaleDummyUnitImpaleCaster = (Last created unit)
              • -------- ------------------------ --------
              • Unit - Add a 1.00 second Generic expiration timer to IS_ImpaleDummyUnitImpaleCaster
              • -------- ------------------------ --------
              • Set IS_ImpaleReleaseAngle = (Random angle)
              • -------- ------------------------ --------
              • Set IS_ImpaleDummyUnitPosition = (Position of IS_ImpaleDummyUnitImpaleCaster)
              • -------- ------------------------ --------
              • Set IS_ImpaleReleaseLocation = (IS_ImpaleDummyUnitPosition offset by IS_ImpaleReleaseOffsetFactor[IS_Level[IS_CurrentIndex]] towards IS_ImpaleReleaseAngle degrees)
              • -------- ------------------------ --------
              • Unit - Add IS_DummyImpaleAbility to IS_ImpaleDummyUnitImpaleCaster
              • -------- ------------------------ --------
              • Unit - Set level of IS_DummyImpaleAbility for IS_ImpaleDummyUnitImpaleCaster to IS_Level[IS_CurrentIndex]
              • -------- ------------------------ --------
              • Unit - Order IS_ImpaleDummyUnitImpaleCaster to Undead Crypt Lord - Impale IS_ImpaleReleaseLocation
              • -------- ------------------------ --------
              • Set IS_SecondaryImpaleTimeCounter[IS_CurrentIndex] = 0.00
              • -------- ------------------------ --------
              • Custom script: call RemoveLocation ( udg_IS_ImpaleDummyUnitPosition )
              • Custom script: call RemoveLocation ( udg_IS_ImpaleReleaseLocation )
              • -------- ------------------------ --------
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • IS_ImpaleSpeedCounter[IS_CurrentIndex] Greater than or equal to IS_ImpaleRangeDistance[IS_CurrentIndex]
            • Then - Actions
              • -------- ------------------------ --------
              • Set IS_ImpactScaleRatio = (IS_ImpactRadius[IS_Level[IS_CurrentIndex]] x 0.53)
              • -------- ------------------------ --------
              • Unit - Create 1 IS_DummyUnitType for IS_Player[IS_CurrentIndex] at IS_ImpaleMovementLocation facing Default building facing degrees
              • -------- ------------------------ --------
              • Set IS_ImpactDummyUnit = (Last created unit)
              • -------- ------------------------ --------
              • Animation - Change IS_ImpactDummyUnit's size to (IS_ImpactScaleRatio%, 0.00%, 0.00%) of its original size
              • -------- ------------------------ --------
              • Special Effect - Create a special effect attached to the origin of IS_ImpactDummyUnit using IS_ImpactEffect
              • -------- ------------------------ --------
              • Special Effect - Destroy (Last created special effect)
              • -------- ------------------------ --------
              • Unit - Add a 1.00 second Generic expiration timer to IS_ImpactDummyUnit
              • -------- ------------------------ --------
              • Set IS_ImpaleScaleRatio = (IS_ImpactRadius[IS_Level[IS_CurrentIndex]] x 0.53)
              • -------- ------------------------ --------
              • Unit - Create 1 IS_DummyUnitType for IS_Player[IS_CurrentIndex] at IS_ImpaleMovementLocation facing Default building facing degrees
              • -------- ------------------------ --------
              • Set IS_ImpactImpaleUnit = (Last created unit)
              • -------- ------------------------ --------
              • Animation - Change IS_ImpactImpaleUnit's size to (IS_ImpaleScaleRatio%, 0.00%, 0.00%) of its original size
              • -------- ------------------------ --------
              • Special Effect - Create a special effect attached to the origin of IS_ImpactImpaleUnit using IS_ImpaleLeadEffect
              • -------- ------------------------ --------
              • Special Effect - Destroy (Last created special effect)
              • -------- ------------------------ --------
              • Unit - Add a 1.00 second Generic expiration timer to IS_ImpactImpaleUnit
              • -------- ------------------------ --------
              • Custom script: set bj_wantDestroyGroup = true
              • -------- ------------------------ --------
              • Unit Group - Pick every unit in (Units within IS_ImpactRadius[IS_Level[IS_CurrentIndex]] of IS_ImpaleMovementLocation) and do (Actions)
                • Loop - Actions
                  • -------- ------------------------ --------
                  • Set IS_PickedUnit = (Picked unit)
                  • -------- ------------------------ --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (IS_PickedUnit is dead) Not equal to True
                      • (Unit-type of IS_PickedUnit) Not equal to No unit-type
                      • (IS_PickedUnit belongs to an enemy of IS_Player[IS_CurrentIndex]) Equal to True
                      • (IS_PickedUnit is A structure) Not equal to True
                      • (IS_PickedUnit is Magic Immune) Not equal to True
                      • (IS_PickedUnit is Mechanical) Not equal to True
                    • Then - Actions
                      • -------- ------------------------ --------
                      • Unit - Cause IS_Caster[IS_CurrentIndex] to damage IS_PickedUnit, dealing IS_ImpactDamage[IS_Level[IS_CurrentIndex]] damage of attack type IS_ImpactAttackType and damage type IS_ImpactDamageType
                      • -------- ------------------------ --------
                      • Set IS_PickedUnitPosition = (Position of IS_PickedUnit)
                      • -------- ------------------------ --------
                      • Set KB3D_Accel = IS_KB_Acceleration[IS_Level[IS_CurrentIndex]]
                      • -------- ------------------------ --------
                      • Set KB3D_AllowOutSiding = IS_KB_AllowThroughBorders
                      • -------- ------------------------ --------
                      • Set KB3D_Angle = (Angle from IS_ImpaleMovementLocation to IS_PickedUnitPosition)
                      • -------- ------------------------ --------
                      • Set KB3D_AttackType = IS_KB_AttackType
                      • -------- ------------------------ --------
                      • Set KB3D_DamageType = IS_KB_DamageType
                      • -------- ------------------------ --------
                      • Set KB3D_Damager = IS_Caster[IS_CurrentIndex]
                      • -------- ------------------------ --------
                      • Set KB3D_DestroyTree = IS_KB_DestroyTree
                      • -------- ------------------------ --------
                      • Set KB3D_DisableUnit = IS_KB_DisableUnit
                      • -------- ------------------------ --------
                      • Set KB3D_Fx = IS_KB_LoopEffect
                      • -------- ------------------------ --------
                      • Set KB3D_Fx_Attach = IS_KB_LoopEffectAttach
                      • -------- ------------------------ --------
                      • Set KB3D_LoopDamage = IS_KB_LoopDamage[IS_Level[IS_CurrentIndex]]
                      • -------- ------------------------ --------
                      • Set KB3D_Range = IS_KB_Range[IS_Level[IS_CurrentIndex]]
                      • -------- ------------------------ --------
                      • Set KB3D_Speed = IS_KB_Speed[IS_Level[IS_CurrentIndex]]
                      • -------- ------------------------ --------
                      • Set KB3D_Targeted_Unit = No unit
                      • -------- ------------------------ --------
                      • Set KB3D_TrailFx = IS_KB_TrailEffect
                      • -------- ------------------------ --------
                      • Set KB3D_Unit = IS_PickedUnit
                      • -------- ------------------------ --------
                      • Set KB3D_UnpathableStop = IS_KB_UnpathableStop
                      • -------- ------------------------ --------
                      • Set KB3D_Zoffset = IS_KB_MaxHeight[IS_Level[IS_CurrentIndex]]
                      • -------- ------------------------ --------
                      • Trigger - Run KB3D_Registration (checking conditions)
                      • -------- ------------------------ --------
                      • Custom script: call RemoveLocation ( udg_IS_PickedUnitPosition )
                      • -------- ------------------------ --------
                    • Else - Actions
                  • -------- ------------------------ --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (IS_PickedUnit is dead) Not equal to True
                      • (Unit-type of IS_PickedUnit) Not equal to No unit-type
                      • (IS_PickedUnit belongs to an enemy of IS_Player[IS_CurrentIndex]) Equal to True
                      • (IS_PickedUnit is Magic Immune) Not equal to True
                    • Then - Actions
                      • -------- ------------------------ --------
                      • Unit - Cause IS_Caster[IS_CurrentIndex] to damage IS_PickedUnit, dealing IS_ImpactDamage[IS_Level[IS_CurrentIndex]] damage of attack type IS_ImpactAttackType and damage type IS_ImpactDamageType
                      • -------- ------------------------ --------
                    • Else - Actions
                  • -------- ------------------------ --------
              • -------- ------------------------ --------
              • Unit Group - Remove all units from IS_GroupContainer[IS_CurrentIndex]
              • Unit - Remove IS_ImpaleDummyUnit[IS_CurrentIndex] from the game
              • -------- ------------------------ --------
              • Custom script: call DestroyGroup ( udg_IS_GroupContainer [ udg_IS_CurrentIndex ] )
              • Custom script: call RemoveLocation ( udg_IS_TargetLocation [ udg_IS_CurrentIndex ] )
              • -------- ------------------------ --------
              • Set IS_Caster[IS_CurrentIndex] = IS_Caster[IS_MaxIndex]
              • Set IS_GroupContainer[IS_CurrentIndex] = IS_GroupContainer[IS_MaxIndex]
              • Set IS_ImpaleAngle[IS_CurrentIndex] = IS_ImpaleAngle[IS_MaxIndex]
              • Set IS_ImpaleDummyUnit[IS_CurrentIndex] = IS_ImpaleDummyUnit[IS_MaxIndex]
              • Set IS_ImpaleRangeDistance[IS_CurrentIndex] = IS_ImpaleRangeDistance[IS_MaxIndex]
              • Set IS_ImpaleSpeedCalculation[IS_CurrentIndex] = IS_ImpaleSpeedCalculation[IS_MaxIndex]
              • Set IS_ImpaleSpeedCounter[IS_CurrentIndex] = IS_ImpaleSpeedCounter[IS_MaxIndex]
              • Set IS_SecondaryImpaleTimeCounter[IS_CurrentIndex] = IS_SecondaryImpaleTimeCounter[IS_MaxIndex]
              • Set IS_Level[IS_CurrentIndex] = IS_Level[IS_MaxIndex]
              • Set IS_Player[IS_CurrentIndex] = IS_Player[IS_MaxIndex]
              • Set IS_TargetLocation[IS_CurrentIndex] = IS_TargetLocation[IS_MaxIndex]
              • -------- ------------------------ --------
              • Set IS_MaxIndex = (IS_MaxIndex - 1)
              • Set IS_CurrentIndex = (IS_CurrentIndex - 1)
              • -------- ------------------------ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • IS_MaxIndex Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
              • -------- ------------------------ --------
            • Else - Actions
          • -------- ------------------------ --------
          • Custom script: call RemoveLocation ( udg_IS_ImpaleMovementLocation )
          • Custom script: call RemoveLocation ( udg_IS_ImpaleDummyUnitPosition )
          • -------- ------------------------ --------
      • -------- ------------------------ --------


Information:

Code (vJASS):

*Spell Name: Mega Impale Shock v1.0 = Initial Upload.

*Spell Author/Creator: by jakeZinc.

*Spell Version: v1.0 = * Initial Released.

*Spell Purpose: Uses KB3D System v1.4.2 ( Highly Recommended )
                Useful from reducing outnumbered armies and it is high range that can chase some enemies
                Can knockback the targeted area and releasing impales in random angle per mini second.

*Spell Idea: None.

*Spell Requested: None.


*Spell Features v1.0 = * Multi- Unit Instanceabilty ( MUI Spell )
                       * Lagless
                       * Leakles


How to Import/Install:
=Preparing for import=
Go to:
File
Preferences
General
Check the box labelled ''Automatically create unknown variables while pasting trigger data''


=Speeding up import of object data-
Go to:
Window
make sure the 'brush list' is unchecked.
You can swap between my map and your map.


=Main importing=

Difficuly in Importing:

"Easy" = 1 to 3 Copy - Paste Required
"Medium" = 4 to 6 Copy - Paste Required
"Hard" = 7 above, Copy - Paste Required

Spell Importing Difficulty: 'Hard'
   
    In order of importing: Copy --> Paste to your Map.
   
    Object Data (OE) - Spell - Impale Shock - Ability
    Object Data (OE) - Spell - Impale Shock - DummyStunAbility
    Object Data (OE) - Spell - Impale Shock - DummyImpaleAbility
    Object Data (OE) - Unit - Impale Shock - Dummy Unit
    Trigger Data (TE) - Folder - IS - Impale Shock
    Trigger Data (TE) - Folder - KnockBack 3D
   
    Import/Export Files:    
   
    You must import the dummy model by Vexorian in Import Manager ( F12 )
   
* Notes:
   
    Note #1: Make sure to Configure the " IS Configuration " trigger in the IS_Ability and IS_DummyUnit.
   
    Note #2: IF your map has already KnockBack 3D System then dont copy the KnockBack 3D System.
   
    Note #3: If the impact model effect didnt show up in the spell then make sure that you copy the "IS Dummy" in your
             map and make sure you import the Dummy Model by Vexorian.
   
    Note #4: Report to the Author If you found a bug or tell the author if the spell is not working.
   
    Note #5: The spell will work if you follow the notes and the Main Importing Instructions.
   
    Note #6: Enjoy
     



=Modification=
All Modifications should be done in the Configuration Trigger, each configuration is explained and elaborated.


//==========================================================================================================================================

Pls Give credits if you use this spell in your map.

Credits: Vexorian ( Dummy.mdl )
Credits: Jad ( KB3D System v1.4.2 )


Sincerely,
    jakeZinc


KB3D System v1.4.2


Author's Note: If you found bugs or suggestions pls don't be afraid to post

Keywords:
GUI,Spell,MUI,jakeZinc,Impale Shock, Clusters of Impale, Uses KB3D System, Impale, Explode, Knockback.
Contents

Just another Warcraft III map (Map)

Reviews
Moderator
Impale Shock v1.0 | Reviewed by Maker | 23th Oct 2013 Concept[/COLOR]] [IMG] It is Impale on steroids, and Impale is a cool ability [IMG] As the ability is derived from Impale, it lacks originality Triggers[/COLOR]] [IMG] Solid and...
  1. Impale Shock v1.0 | Reviewed by Maker | 23th Oct 2013
    • Concept[/COLOR]]
      [​IMG]
      • It is Impale on steroids, and Impale is a cool ability
      [​IMG]
      • As the ability is derived from Impale, it lacks originality
    • Triggers[/COLOR]]
      [​IMG]
      • Solid and organized triggering. Good importing istructions
      [​IMG]
      • You leak two unit groups, indexes 0 and 1 are automatically
        created at map initialization and you overwrite them. This really a non-issue
        but keep that in mind
      • You can't pick units with unit type id 0, remove that condition
      • Think of ways to reduce the amount of variables you use.
        For example, you don't need seven point variables
      • You don't need to locals in the looping trigger,
        include
        GetLocationX/Y
        in
        SetUnitX/Y
      • You only need one dummy impale caster per cast
    • Objects[/COLOR]]
      [​IMG]
      • No unneeded objects
      [​IMG]
      • The death type of the dummy should be can't raise, does not decay
        so it doesn't decay for 90 seconds
      • The dummy could be configured to be able to cast abilities
        instantly on targets so you only would need only one dummy unit
        per cast
      • The dummy ability should deal no damage. The hero who casted
        the main ability should deal all the damage so it gets
        the credit from kills
      • The ability uses "attack, slam" animation, but the hero
        doesn't have that animation
      • The ability description is not very good, the language used
        could be shaped to suit the Warcarft world a bit better
    • Effects[/COLOR]]
      [​IMG]
      • The spikes look great
      • The knockback/impale looks smooth
      [​IMG]
      • Thunderclap is overused, try something different
      • The avenger missile's death effect is a bit out of place
    • Rating[/COLOR]]
      CONCEPT TRIGGERS OBJECTS EFFECTS RATING STATUS
      [​IMG] [​IMG] [​IMG] [​IMG] [​IMG] APPROVED

     
  2. msongyboi

    msongyboi

    Joined:
    Feb 3, 2013
    Messages:
    271
    Resources:
    4
    Spells:
    4
    Resources:
    4
    I haven't really checked the code, but from the test map I think this spell is excellent and sexi as fuq. Good stuff :)
     
  3. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,174
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17
    The triggers look good but how can you pick a unit that has no unit type?
     
  4. Rheiko

    Rheiko

    Joined:
    Aug 27, 2013
    Messages:
    2,925
    Resources:
    7
    Icons:
    2
    Spells:
    3
    Tutorials:
    2
    Resources:
    7
    as maker said
    and nice, you make the triggers easy to read
    good work
     
  5. nhocklanhox6

    nhocklanhox6

    Joined:
    Feb 12, 2012
    Messages:
    335
    Resources:
    28
    Models:
    6
    Spells:
    21
    Tutorials:
    1
    Resources:
    28
    Nice Spell.
     
  6. JAKEZINC

    JAKEZINC

    Joined:
    Aug 13, 2013
    Messages:
    1,565
    Resources:
    9
    Spells:
    9
    Resources:
    9
    It is Not Equal to means if the unit's ID != 0 or == false then. It is efficient and safety than checking the unit if it is alive.

    Thanks both of you ^^.
     
    Last edited: Oct 15, 2013
  7. Rheiko

    Rheiko

    Joined:
    Aug 27, 2013
    Messages:
    2,925
    Resources:
    7
    Icons:
    2
    Spells:
    3
    Tutorials:
    2
    Resources:
    7
    you are welcome
     
  8. T. D. W.

    T. D. W.

    Joined:
    Jul 31, 2012
    Messages:
    1,476
    Resources:
    5
    Spells:
    5
    Resources:
    5
    1.0 Review

    • Yay ^^ the first Spell to benefit from KB3D

    • Note for the KB3D:
      • You MUST leave the variable creator trigger, what if the user doesn't have the implemented KB3D? the WE will pop up missing variables!
      • The System is Updated to 1.5.1
      • -------- ^ xD. Set this to false to not allow the knockbacked unit throughout in the map playable bounds or borders --------
      Please remove this! ^
      Look:
      • -------- Allow going outside playable bounds, Allows the KBed unit to go out of the Playable Bounds, SAFETY notice: this will not crash the game --------
      • Set KB3D_AllowOutSiding = False
      :ogre_frown:
      The Spell is really cool, and there isn't any trigger problems, maybe and "MAYBE" you may change the Thunder Clap Fx to something else :)
      Anyway, great spell! and Good Job, +rep [even if you disabled it]
    • None, great job
    • [​IMG]
    • [​IMG]
    • If You want me to review an Update of This Spell, Please Notifiy me this by VM or PM
     
    Last edited: Oct 15, 2013
  9. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,174
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17
    That is irrelevant. Let me ask you again, how can you (instantly) pick a unit that has no unit type, a unit that has unit type id of 0?
     
  10. Bloody Wolf

    Bloody Wolf

    Joined:
    May 23, 2011
    Messages:
    296
    Resources:
    0
    Resources:
    0
    5/5 nuff said
     
  11. JAKEZINC

    JAKEZINC

    Joined:
    Aug 13, 2013
    Messages:
    1,565
    Resources:
    9
    Spells:
    9
    Resources:
    9
    ^ Thanks