1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  3. Participate in Blizzard's Public Test Realm to give them feedback on the upcoming patches. Info is here.
    Dismiss Notice
  4. Congratulate the winners of the first ATC contest!
    Dismiss Notice
  5. Zwiebelchen is hosting a special UI texturing contest. Whomever wins will get a $150 reward through paypal! Come along and draw your texturing tools for the Fantastic Adventurer UI contest.
    Dismiss Notice
  6. You love Warcraft 3? You love drawing? Than You mustn't miss Icon Contest #16! Display Your skills, have fun and win awards!
    Dismiss Notice
  7. Traverse to a whole new location by voting for the best music pieces on the Music Contest #7 Poll
    Dismiss Notice
  8. Sneak, pickpocket and assassinate! Create a stealth map in Mini-Mapping Contest #14!
    Dismiss Notice

Storming Hammers v1.0 - GUI

Submitted by jakeZinc
This bundle is marked as approved. It works and satisfies the submission rules.
STORMING HAMMERS [ GUI ]

SPELL DESCRIPTION:
[​IMG]


SPELL IMAGES:

  • Creates a storm cloud or cumulonimbushit on a targeted location! xD
    [​IMG]

  • The storm cloud successfully charged
    [​IMG]

  • It has a job to storm the area for the sake of DESTRUCTION! Its hammer time!
    [​IMG]
    [​IMG]


CHANGELOGS: v1.0 - Released

CREDITS: Jad ( KB3D System )

    • Storming Hammers Configuration
      • Events
        • Map initialization
      • Conditions
      • Actions
        • -------- --------
        • -------- * SPELL CONFIGURATION FIELD * --------
        • -------- --------
        • -------- OBJECT EDITOR ( F6 ) --------
        • -------- --------
        • -------- - --------
        • -------- The spell or ability used in the triggers. ( Import the Storming Hammers Ability ) --------
        • Set SH_Ability = Storming Hammers
        • -------- The chain lightning dummy ability used in the triggers. ( Import the Storming Hammers Dummy Ability ) --------
        • Set SH_DummyAbility = Storming Hammers ( Dummy Ability )
        • -------- The dummy unit type used in the triggers. ( Import the Storming Hammers Dummy Unit ) --------
        • Set SH_DummyType = Storming Hammers Dummy
        • -------- - --------
        • -------- --------
        • -------- SPELL DATA --------
        • -------- --------
        • -------- - --------
        • -------- The maximum or numbers of levels of the spell or ability. ( Must be equal to number of levels in Storming Hammers Ability ) --------
        • Set SH_AbilityMaxLevel = 3
        • -------- - --------
        • -------- The maximum radius or the area of effect of the spell or ability. --------
        • Set SH_Radius[1] = 350.00
        • Set SH_Radius[2] = 375.00
        • Set SH_Radius[3] = 400.00
        • -------- - --------
        • -------- The activation delay of the storm cloud to start producing multiple hammers --------
        • Set SH_ActivationDelay[1] = 4.00
        • Set SH_ActivationDelay[2] = 4.00
        • Set SH_ActivationDelay[3] = 4.00
        • -------- - --------
        • -------- The duration of the spell or ability , starts ticking after the activation delay ( SH_ActivationDelay ). --------
        • Set SH_Duration[1] = 6.00
        • Set SH_Duration[2] = 7.50
        • Set SH_Duration[3] = 9.00
        • -------- - --------
        • -------- Destroy Trees? True = Yes , False = No --------
        • Set SH_DestroyTrees = True
        • -------- - --------
        • -------- The attack type and damage type of the source. ( Caster ) --------
        • Set SH_AttackType = Spells
        • Set SH_DamageType = Normal
        • -------- - --------
        • -------- An artificial floor height where hammer units are detected. The value is recommended. --------
        • Set SH_FloorHeight = 25.00
        • -------- - --------
        • -------- The interval of the looping trigger. Recommended Value: 0.03125000 = 1 second / 32 Iterations/Frames --------
        • Set SH_LoopInterval = 0.02
        • -------- ^ I've modified it to 0.02 = 0.02222220 = 1 second / 45 Iterations/Frames ( Smooth Motions ) --------
        • -------- ^ Modify at your own risk: changing this value affects the spell performance. --------
        • -------- - --------
        • -------- --------
        • -------- CLOUD AND HAMMERS DATA --------
        • -------- --------
        • -------- - --------
        • -------- The art model used to attach in the cloud. --------
        • Set SH_Effect[1] = Abilities\Spells\Human\CloudOfFog\CloudOfFog.mdl
        • -------- An effect occurs when the cloud activates. --------
        • Set SH_Effect[7] = Abilities\Spells\Orc\Purge\PurgeBuffTarget.mdl
        • -------- - --------
        • -------- The size of the cloud. --------
        • Set SH_CloudSize[1] = 2.20
        • Set SH_CloudSize[2] = 2.35
        • Set SH_CloudSize[3] = 2.50
        • -------- - --------
        • -------- The creation height of the cloud. --------
        • Set SH_CloudHeight[1] = 500.00
        • Set SH_CloudHeight[2] = 500.00
        • Set SH_CloudHeight[3] = 500.00
        • -------- - --------
        • -------- The art model used and trail effect to attach in the hammers. --------
        • Set SH_Effect[2] = Abilities\Spells\Human\StormBolt\StormBoltMissile.mdl
        • Set SH_Effect[3] = Abilities\Spells\Undead\AbsorbMana\AbsorbManaBirthMissile.mdl
        • -------- ^ If you want to disable the trail effect then you can remove the model path and leave a space "<space>" --------
        • -------- - --------
        • -------- The pitch of the hammers. ( 90 = Upward , -90 = Downward ) --------
        • Set SH_Pitch = -90.00
        • -------- ^ Recommended Value --------
        • -------- - --------
        • -------- Apply Player Colors To Hammers? True = Yes , False = No ( Default: PLAYER_NEUTRAL_PASSIVE COLOR ) --------
        • Set SH_HammerPlayerColor = False
        • -------- - --------
        • -------- The amount or number of hammers created. Value != 0 --------
        • Set SH_HammerAmount[1] = 4
        • Set SH_HammerAmount[2] = 5
        • Set SH_HammerAmount[3] = 6
        • -------- - --------
        • -------- The size of the hammers. --------
        • Set SH_HammerSize[1] = 1.50
        • Set SH_HammerSize[2] = 1.55
        • Set SH_HammerSize[3] = 1.60
        • -------- - --------
        • -------- The minimum and maximum fall time of the hammers. --------
        • Set SH_HammerFallMinTime[1] = 0.60
        • Set SH_HammerFallMinTime[2] = 0.55
        • Set SH_HammerFallMinTime[3] = 0.50
        • Set SH_HammerFallMaxTime[1] = 1.20
        • Set SH_HammerFallMaxTime[2] = 1.15
        • Set SH_HammerFallMaxTime[3] = 1.10
        • -------- - --------
        • -------- The collision radius of the hammers. --------
        • Set SH_HammerCollision[1] = 100.00
        • Set SH_HammerCollision[2] = 125.00
        • Set SH_HammerCollision[3] = 150.00
        • -------- - --------
        • -------- The damage of the hammers in collision radius. --------
        • Set SH_HammerDamage[1] = 10.00
        • Set SH_HammerDamage[2] = 15.00
        • Set SH_HammerDamage[3] = 20.00
        • -------- - --------
        • -------- The interval of creating multiple hammers. --------
        • Set SH_HammerSpawnInterval[1] = 0.75
        • Set SH_HammerSpawnInterval[2] = 0.60
        • Set SH_HammerSpawnInterval[3] = 0.45
        • -------- - --------
        • -------- An effect occurs when the hammers landed on the ground. --------
        • Set SH_Effect[4] = Abilities\Weapons\Bolt\BoltImpact.mdl
        • -------- - --------
        • -------- An effect occurs at the enemy units when damaged by the hammers. --------
        • Set SH_Effect[5] = Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
        • -------- - --------
        • -------- The attachment point of all art models created in dummy units. ( Default: origin ) --------
        • Set SH_EffectAttach = origin
        • -------- - --------
        • -------- * OPTIONAL * --------
        • -------- Hammers Chain Lightning? True = Yes , False = No --------
        • Set SH_HammerChainLightning = True
        • -------- ^ IF: TRUE = Import the Storming Hammers Dummy Ability --------
        • -------- ^ IF: FALSE = Ignore and leave the Storming Hammers Dummy Ability --------
        • -------- - --------
        • -------- * OPTIONAL * --------
        • -------- Hammers Knockback? True = Yes , False = No --------
        • Set SH_HammerKB = True
        • -------- ^ IF: TRUE = Import the KB3D System ( Jad ) --------
        • -------- ^ IF: FALSE = Ignore and leave the KB3D System ( Jad ) and the next KB DATA section. --------
        • -------- - --------
        • -------- --------
        • -------- KB DATA --------
        • -------- --------
        • -------- - --------
        • -------- A looping effect occurs when the enemy unit is in knockback state or motion. --------
        • Set SH_Effect[6] = Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
        • -------- - --------
        • -------- The range of the knockback. --------
        • Set SH_KB_Range[1] = 120.00
        • Set SH_KB_Range[2] = 140.00
        • Set SH_KB_Range[3] = 160.00
        • -------- - --------
        • -------- The speed of the knockback. ( Distance Per Second ) --------
        • Set SH_KB_Speed[1] = 300.00
        • Set SH_KB_Speed[2] = 350.00
        • Set SH_KB_Speed[3] = 400.00
        • -------- - --------
        • -------- The acceleration of the knockback. ( Only NEGATIVE Values ) --------
        • Set SH_KB_Acceleration[1] = -100.00
        • Set SH_KB_Acceleration[2] = -100.00
        • Set SH_KB_Acceleration[3] = -100.00
        • -------- - --------
        • -------- The maximum height of the knockback. --------
        • Set SH_KB_MaxHeight[1] = 100.00
        • Set SH_KB_MaxHeight[2] = 100.00
        • Set SH_KB_MaxHeight[3] = 100.00
        • -------- - --------
        • -------- --------
        • -------- CODE DATA --------
        • -------- * DON'T TOUCH THE CODES BELOW UNLESS SOME OF THEM MALFUNCTIONS * --------
        • -------- --------
        • -------- - --------
        • -------- ............................................................................................................... --------
        • -------- Loop Event --------
        • Trigger - Add to Storming Hammers Loop <gen> the event (Time - Every SH_LoopInterval seconds of game time)
        • -------- ............................................................................................................... --------
        • -------- Tree Checker Setup --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • SH_DestroyTrees Equal to True
          • Then - Actions
            • Custom script: set udg_SH_TreeChecker = CreateUnit( Player( 15 ) , udg_SH_DummyType , 0 , 0 , 0 )
            • Custom script: call UnitAddAbility( udg_SH_TreeChecker , 'Ahar' ) // Harvest Ability
            • -------- single location reference --------
            • Set SH_CustomLocation = (Point(0.00, 0.00))
          • Else - Actions
        • -------- ............................................................................................................... --------
        • -------- Preload Objects --------
        • -------- Abilities and Units: --------
        • Custom script: set udg_SH_PickedUnit = CreateUnit( Player( 15 ) , udg_SH_DummyType , 0 , 0 , 0 )
        • Custom script: call UnitAddAbility( udg_SH_PickedUnit , udg_SH_Ability )
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • SH_HammerChainLightning Equal to True
          • Then - Actions
            • Custom script: call UnitAddAbility( udg_SH_PickedUnit , udg_SH_DummyAbility )
          • Else - Actions
        • Custom script: call RemoveUnit( udg_SH_PickedUnit )
        • -------- Effects: --------
        • Set SH_EffectAmount = 7
        • For each (Integer SH_CustomInteger) from 1 to SH_EffectAmount, do (Actions)
          • Loop - Actions
            • Custom script: call Preload( udg_SH_Effect[ udg_SH_CustomInteger ] )
        • -------- ............................................................................................................... --------
        • -------- Initialize Calculations --------
        • For each (Integer SH_CustomInteger) from 1 to SH_AbilityMaxLevel, do (Actions)
          • Loop - Actions
            • Set SH_CustomReal[SH_CustomInteger] = (SH_CloudHeight[SH_CustomInteger] x 2.00)
        • -------- ............................................................................................................... --------
        • -------- index reference --------
        • Set SH_CurrentIndex = 0
        • -------- ............................................................................................................... --------
        • -------- for global variable declaration and nulling --------
        • Set SH_PickedUnit = No unit
        • -------- ............................................................................................................... --------
        • -------- --------
        • -------- * END OF SPELL CONFIGURATION FIELD * --------
        • -------- --------
        • Custom script: endfunction
        • Custom script:
        • Custom script: // !Custom Pitch Animation! //
        • Custom script: function SH_SetPitch takes unit u, real pitch returns nothing
        • Custom script: local integer i = R2I( pitch * bj_RADTODEG + 90.5 )
        • Custom script: if 179 < i then
        • Custom script: set i = 179
        • Custom script: elseif 0 > i then
        • Custom script: set i = 0
        • Custom script: endif
        • Custom script: call SetUnitAnimationByIndex( u , i )
    • Storming Hammers Execution
      • Events
        • Unit - A unit Starts the effect of an ability
      • Conditions
        • (Ability being cast) Equal to SH_Ability
      • Actions
        • -------- --------
        • -------- OnCast --------
        • -------- --------
        • -------- no locals declared --------
        • -------- --------
        • -------- instance storage --------
        • Set SH_MaxIndex = (SH_MaxIndex + 1)
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • SH_MaxIndex Equal to 1
          • Then - Actions
            • Trigger - Turn on Storming Hammers Loop <gen>
          • Else - Actions
        • -------- --------
        • -------- allocations --------
        • Set SH_Caster[SH_MaxIndex] = (Triggering unit)
        • Set SH_CasterPlayer[SH_MaxIndex] = (Owner of SH_Caster[SH_MaxIndex])
        • Set SH_Level[SH_MaxIndex] = (Level of SH_Ability for SH_Caster[SH_MaxIndex])
        • Custom script: set udg_SH_X[ udg_SH_MaxIndex ] = GetSpellTargetX( )
        • Custom script: set udg_SH_Y[ udg_SH_MaxIndex ] = GetSpellTargetY( )
        • Custom script: set udg_SH_Unit[ udg_SH_MaxIndex ] = CreateUnit( udg_SH_CasterPlayer[ udg_SH_MaxIndex ] , udg_SH_DummyType , udg_SH_X[ udg_SH_MaxIndex ] , udg_SH_Y[ udg_SH_MaxIndex ] , GetRandomReal( 0 , 360 ) )
        • Custom script: set udg_SH_CloudModelHandler[ udg_SH_MaxIndex ] = AddSpecialEffectTarget( udg_SH_Effect[ 1 ] , udg_SH_Unit[ udg_SH_MaxIndex ] , udg_SH_EffectAttach )
        • Custom script: call SetUnitScale( udg_SH_Unit[ udg_SH_MaxIndex ] , udg_SH_CloudSize[ udg_SH_Level[ udg_SH_MaxIndex ] ] , 0 , 0 )
        • Custom script: call SetUnitFlyHeight( udg_SH_Unit[ udg_SH_MaxIndex ] , udg_SH_CloudHeight[ udg_SH_Level[ udg_SH_MaxIndex ] ] , 0 )
        • -------- --------
        • -------- counters --------
        • Set SH_HammerSpawnIntervalCounter[SH_MaxIndex] = 0.00
        • Set SH_ActivationDelayCounter[SH_MaxIndex] = 0.00
        • Set SH_DurationCounter[SH_MaxIndex] = 0.00
        • Set SH_CustomBoolean[SH_MaxIndex] = False
        • -------- --------
        • -------- phase one insert cloud --------
        • Set SH_Phase[SH_MaxIndex] = 1
        • -------- --------
    • Storming Hammers Loop
      • Events
      • Conditions
      • Actions
        • -------- --------
        • -------- OnLoop --------
        • -------- --------
        • -------- declaration of locals: --------
        • Custom script: local real x
        • Custom script: local real y
        • Custom script: local real x2
        • Custom script: local real y2
        • Custom script: local integer i
        • Custom script: local unit u
        • -------- --------
        • For each (Integer SH_CurrentIndex) from 1 to SH_MaxIndex, do (Actions)
          • Loop - Actions
            • -------- --------
            • -------- phase one cloud --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • SH_Phase[SH_CurrentIndex] Equal to 1
              • Then - Actions
                • -------- --------
                • -------- cloud activation --------
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • SH_ActivationDelayCounter[SH_CurrentIndex] Greater than or equal to SH_ActivationDelay[SH_Level[SH_CurrentIndex]]
                  • Then - Actions
                    • -------- --------
                    • -------- cloud activation effect --------
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • SH_CustomBoolean[SH_CurrentIndex] Equal to False
                      • Then - Actions
                        • Custom script: set udg_SH_CloudModelHandler2[ udg_SH_CurrentIndex ] = AddSpecialEffectTarget( udg_SH_Effect[ 7 ] , udg_SH_Unit[ udg_SH_CurrentIndex ] , udg_SH_EffectAttach )
                        • Set SH_CustomBoolean[SH_CurrentIndex] = True
                      • Else - Actions
                    • -------- --------
                    • -------- hammers produce time --------
                    • Set SH_HammerSpawnIntervalCounter[SH_CurrentIndex] = (SH_HammerSpawnIntervalCounter[SH_CurrentIndex] + SH_LoopInterval)
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • SH_HammerSpawnIntervalCounter[SH_CurrentIndex] Greater than or equal to SH_HammerSpawnInterval[SH_Level[SH_CurrentIndex]]
                      • Then - Actions
                        • -------- --------
                        • For each (Integer SH_CustomInteger) from 1 to SH_HammerAmount[SH_Level[SH_CurrentIndex]], do (Actions)
                          • Loop - Actions
                            • -------- --------
                            • -------- spawn offset --------
                            • Custom script: set x = udg_SH_X[ udg_SH_CurrentIndex ] + GetRandomReal( 0 , udg_SH_Radius[ udg_SH_Level[ udg_SH_CurrentIndex ] ] ) * Cos( GetRandomReal( -bj_PI , bj_PI ) )
                            • Custom script: set y = udg_SH_Y[ udg_SH_CurrentIndex ] + GetRandomReal( 0 , udg_SH_Radius[ udg_SH_Level[ udg_SH_CurrentIndex ] ] ) * Sin( GetRandomReal( -bj_PI , bj_PI ) )
                            • -------- --------
                            • -------- hammers creation --------
                            • Set SH_MaxIndex = (SH_MaxIndex + 1)
                            • Custom script: set udg_SH_CustomUnit[ udg_SH_MaxIndex ] = CreateUnit( udg_SH_CasterPlayer[ udg_SH_CurrentIndex ] , udg_SH_DummyType , x , y , GetRandomReal( 0 , 360 ) )
                            • Custom script: set udg_SH_HammerModelHandler[ udg_SH_MaxIndex ] = AddSpecialEffectTarget( udg_SH_Effect[ 2 ] , udg_SH_CustomUnit[ udg_SH_MaxIndex ] , udg_SH_EffectAttach )
                            • Custom script: set udg_SH_TrailModelHandler[ udg_SH_MaxIndex ] = AddSpecialEffectTarget( udg_SH_Effect[ 3 ] , udg_SH_CustomUnit[ udg_SH_MaxIndex ] , udg_SH_EffectAttach )
                            • Custom script: call SetUnitScale( udg_SH_CustomUnit[ udg_SH_MaxIndex ] , udg_SH_HammerSize[ udg_SH_Level[ udg_SH_CurrentIndex ] ] , 0 , 0 )
                            • Custom script: call SetUnitFlyHeight( udg_SH_CustomUnit[ udg_SH_MaxIndex ] , udg_SH_CustomReal[ udg_SH_Level[ udg_SH_CurrentIndex ] ] , 0 )
                            • Custom script: call SH_SetPitch( udg_SH_CustomUnit[ udg_SH_MaxIndex ] , udg_SH_Pitch )
                            • -------- --------
                            • -------- hammers player color boolean --------
                            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • SH_HammerPlayerColor Equal to True
                              • Then - Actions
                                • Unit - Change color of SH_CustomUnit[SH_MaxIndex] to (Color of SH_CasterPlayer[SH_CurrentIndex])
                              • Else - Actions
                                • Unit - Change color of SH_CustomUnit[SH_MaxIndex] to (Color of Neutral Passive)
                            • -------- --------
                            • Set SH_Caster[SH_MaxIndex] = SH_Caster[SH_CurrentIndex]
                            • Set SH_CasterPlayer[SH_MaxIndex] = SH_CasterPlayer[SH_CurrentIndex]
                            • Set SH_Level[SH_MaxIndex] = SH_Level[SH_CurrentIndex]
                            • Set SH_Unit[SH_MaxIndex] = SH_Unit[SH_CurrentIndex]
                            • Set SH_HammerCurrentHeight[SH_MaxIndex] = (Current flying height of SH_CustomUnit[SH_MaxIndex])
                            • Set SH_HammerFallTimeCalculation[SH_MaxIndex] = (SH_HammerCurrentHeight[SH_MaxIndex] / ((Random real number between SH_HammerFallMinTime[SH_Level[SH_MaxIndex]] and SH_HammerFallMaxTime[SH_Level[SH_MaxIndex]]) / SH_LoopInterval))
                            • -------- --------
                            • -------- phase two insert hammer --------
                            • Set SH_Phase[SH_MaxIndex] = 2
                            • -------- --------
                        • -------- --------
                        • -------- reset --------
                        • Set SH_HammerSpawnIntervalCounter[SH_CurrentIndex] = 0.00
                        • -------- --------
                      • Else - Actions
                    • -------- --------
                    • Set SH_DurationCounter[SH_CurrentIndex] = (SH_DurationCounter[SH_CurrentIndex] + SH_LoopInterval)
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • SH_DurationCounter[SH_CurrentIndex] Greater than or equal to SH_Duration[SH_Level[SH_CurrentIndex]]
                      • Then - Actions
                        • -------- --------
                        • -------- !CloudDestroy! --------
                        • Special Effect - Destroy SH_CloudModelHandler[SH_CurrentIndex]
                        • Special Effect - Destroy SH_CloudModelHandler2[SH_CurrentIndex]
                        • Unit - Kill SH_Unit[SH_CurrentIndex]
                        • Set SH_Phase[SH_CurrentIndex] = 3
                        • -------- --------
                      • Else - Actions
                    • -------- --------
                  • Else - Actions
                    • -------- --------
                    • Set SH_ActivationDelayCounter[SH_CurrentIndex] = (SH_ActivationDelayCounter[SH_CurrentIndex] + SH_LoopInterval)
                    • -------- --------
              • Else - Actions
            • -------- --------
            • -------- phase two hammers --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • SH_Phase[SH_CurrentIndex] Equal to 2
              • Then - Actions
                • -------- --------
                • Set SH_HammerCurrentHeight[SH_CurrentIndex] = (SH_HammerCurrentHeight[SH_CurrentIndex] - SH_HammerFallTimeCalculation[SH_CurrentIndex])
                • Custom script: call SetUnitFlyHeight( udg_SH_CustomUnit[ udg_SH_CurrentIndex ] , udg_SH_HammerCurrentHeight[ udg_SH_CurrentIndex ] , 0 )
                • -------- --------
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • SH_HammerCurrentHeight[SH_CurrentIndex] Less than or equal to SH_FloorHeight
                  • Then - Actions
                    • -------- --------
                    • Custom script: set x = GetUnitX( udg_SH_CustomUnit[ udg_SH_CurrentIndex ] )
                    • Custom script: set y = GetUnitY( udg_SH_CustomUnit[ udg_SH_CurrentIndex ] )
                    • Custom script: call DestroyEffect( AddSpecialEffect( udg_SH_Effect[ 4 ] , x , y ) )
                    • -------- --------
                    • -------- single dummy caster creation --------
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • SH_HammerChainLightning Equal to True
                      • Then - Actions
                        • Custom script: set u = CreateUnit( udg_SH_CasterPlayer[ udg_SH_CurrentIndex ] , udg_SH_DummyType , x , y , GetRandomReal( 0 , 360 ) )
                        • Custom script: call UnitAddAbility( u , udg_SH_DummyAbility )
                        • Custom script: call UnitApplyTimedLife( u , 'BTLF' , 1 )
                      • Else - Actions
                    • -------- --------
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • SH_DestroyTrees Equal to True
                      • Then - Actions
                        • -------- --------
                        • Custom script: call MoveLocation( udg_SH_CustomLocation , x , y )
                        • Destructible - Pick every destructible within SH_HammerCollision[SH_Level[SH_CurrentIndex]] of SH_CustomLocation and do (Actions)
                          • Loop - Actions
                            • Set SH_Tree = (Picked destructible)
                            • Unit - Order SH_TreeChecker to Harvest SH_Tree
                            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Current order of SH_TreeChecker) Equal to (Order(harvest))
                              • Then - Actions
                                • Destructible - Kill SH_Tree
                              • Else - Actions
                            • Unit - Order SH_TreeChecker to Stop
                        • -------- --------
                      • Else - Actions
                    • -------- --------
                    • -------- * KB3D SYSTEM * --------
                    • -------- --------
                    • Custom script: call GroupEnumUnitsInRange( bj_lastCreatedGroup , x , y , udg_SH_HammerCollision[ udg_SH_Level[ udg_SH_CurrentIndex ] ] , null )
                    • Custom script: loop
                    • Custom script: set udg_SH_PickedUnit = FirstOfGroup( bj_lastCreatedGroup )
                    • Custom script: exitwhen udg_SH_PickedUnit == null
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (SH_PickedUnit is dead) Equal to False
                        • (SH_PickedUnit is Magic Immune) Equal to False
                        • (SH_PickedUnit is A flying unit) Equal to False
                        • (SH_PickedUnit belongs to an enemy of SH_CasterPlayer[SH_CurrentIndex]) Equal to True
                      • Then - Actions
                        • -------- --------
                        • -------- normal damage effect --------
                        • Custom script: call DestroyEffect( AddSpecialEffectTarget( udg_SH_Effect[ 5 ] , udg_SH_PickedUnit , udg_SH_EffectAttach ) )
                        • Unit - Cause SH_Caster[SH_CurrentIndex] to damage SH_PickedUnit, dealing SH_HammerDamage[SH_Level[SH_CurrentIndex]] damage of attack type SH_AttackType and damage type SH_DamageType
                        • -------- --------
                        • -------- chain lightning boolean --------
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • SH_HammerChainLightning Equal to True
                          • Then - Actions
                            • -------- --------
                            • -------- dummy caster single chain lightning --------
                            • Custom script: call IssueTargetOrder( u , "chainlightning" , udg_SH_PickedUnit )
                            • -------- --------
                          • Else - Actions
                        • -------- --------
                        • -------- knockback boolean --------
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (SH_PickedUnit is A structure) Equal to False
                            • SH_HammerKB Equal to True
                          • Then - Actions
                            • -------- --------
                            • Custom script: set i = GetHandleId( udg_SH_PickedUnit )
                            • Custom script: set x2 = GetUnitX( udg_SH_PickedUnit )
                            • Custom script: set y2 = GetUnitY( udg_SH_PickedUnit )
                            • -------- --------
                            • Custom script: if not LoadBoolean( udg_KB3D_HA , i , i ) then
                            • Set KB3D_Unit = SH_PickedUnit
                            • Set KB3D_Range = SH_KB_Range[SH_Level[SH_CurrentIndex]]
                            • Set KB3D_Speed = SH_KB_Speed[SH_Level[SH_CurrentIndex]]
                            • Custom script: set udg_KB3D_Angle = Atan2( y2 - y , x2 - x ) * bj_RADTODEG
                            • Set KB3D_Accel = SH_KB_Acceleration[SH_Level[SH_CurrentIndex]]
                            • Set KB3D_AttackType = SH_AttackType
                            • Set KB3D_DamageType = SH_DamageType
                            • Set KB3D_Damager = SH_Caster[SH_CurrentIndex]
                            • Set KB3D_DestroyTree = SH_DestroyTrees
                            • Set KB3D_FaceAngle = False
                            • Set KB3D_Fx = SH_Effect[6]
                            • Set KB3D_Attach = SH_EffectAttach
                            • Set KB3D_iKB = True
                            • Set KB3D_UnpathableStop = True
                            • Set KB3D_Zoffset = SH_KB_MaxHeight[SH_Level[SH_CurrentIndex]]
                            • -------- --------
                            • -------- Registed All of the Settings --------
                            • Custom script: call ExecuteFunc( "KB3D_Registration" )
                            • Custom script: endif
                            • -------- --------
                          • Else - Actions
                        • -------- --------
                      • Else - Actions
                    • Custom script: call GroupRemoveUnit( bj_lastCreatedGroup , udg_SH_PickedUnit )
                    • Custom script: endloop
                    • -------- --------
                    • -------- !HammerDestroy! --------
                    • Special Effect - Destroy SH_HammerModelHandler[SH_CurrentIndex]
                    • Special Effect - Destroy SH_TrailModelHandler[SH_CurrentIndex]
                    • Unit - Kill SH_CustomUnit[SH_CurrentIndex]
                    • Set SH_Phase[SH_CurrentIndex] = 3
                    • -------- --------
                    • Custom script: set u = null
                    • -------- --------
                  • Else - Actions
                • -------- --------
              • Else - Actions
            • -------- --------
            • -------- phase three recycling --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • SH_Phase[SH_CurrentIndex] Equal to 3
              • Then - Actions
                • -------- --------
                • -------- recycling indexes --------
                • Set SH_Caster[SH_CurrentIndex] = SH_Caster[SH_MaxIndex]
                • Set SH_CasterPlayer[SH_CurrentIndex] = SH_CasterPlayer[SH_MaxIndex]
                • Set SH_Level[SH_CurrentIndex] = SH_Level[SH_MaxIndex]
                • Set SH_Unit[SH_CurrentIndex] = SH_Unit[SH_MaxIndex]
                • Set SH_CustomUnit[SH_CurrentIndex] = SH_CustomUnit[SH_MaxIndex]
                • Set SH_CloudModelHandler[SH_CurrentIndex] = SH_CloudModelHandler[SH_MaxIndex]
                • Set SH_CloudModelHandler2[SH_CurrentIndex] = SH_CloudModelHandler2[SH_MaxIndex]
                • Set SH_HammerModelHandler[SH_CurrentIndex] = SH_HammerModelHandler[SH_MaxIndex]
                • Set SH_TrailModelHandler[SH_CurrentIndex] = SH_TrailModelHandler[SH_MaxIndex]
                • Set SH_DurationCounter[SH_CurrentIndex] = SH_DurationCounter[SH_MaxIndex]
                • Set SH_ActivationDelayCounter[SH_CurrentIndex] = SH_ActivationDelayCounter[SH_MaxIndex]
                • Set SH_HammerSpawnIntervalCounter[SH_CurrentIndex] = SH_HammerSpawnIntervalCounter[SH_MaxIndex]
                • Set SH_CustomBoolean[SH_CurrentIndex] = SH_CustomBoolean[SH_MaxIndex]
                • Set SH_X[SH_CurrentIndex] = SH_X[SH_MaxIndex]
                • Set SH_Y[SH_CurrentIndex] = SH_Y[SH_MaxIndex]
                • Set SH_HammerCurrentHeight[SH_CurrentIndex] = SH_HammerCurrentHeight[SH_MaxIndex]
                • Set SH_HammerFallTimeCalculation[SH_CurrentIndex] = SH_HammerFallTimeCalculation[SH_MaxIndex]
                • Set SH_Phase[SH_CurrentIndex] = SH_Phase[SH_MaxIndex]
                • -------- --------
                • -------- eliminate instance on storage --------
                • Set SH_CurrentIndex = (SH_CurrentIndex - 1)
                • Set SH_MaxIndex = (SH_MaxIndex - 1)
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • SH_MaxIndex Equal to 0
                  • Then - Actions
                    • Trigger - Turn off (This trigger)
                  • Else - Actions
                • -------- --------
              • Else - Actions
            • -------- --------


Greetings Hivers!

" A cloud is a fascinating environment for spells when gets involved "

" Useful at hammers destruction , chain lightning , storms and damage plus knockback massive group of enemies "

" It should be called raining hammers or falling hammers but I prefer STORMING hammers! "

" Unit Indexer System is perfect for this type of spell but I've decided to index it manually "
Contents

Storming Hammers v1.0 - GUI (Map)

Reviews
KILLCIDE
Ehh what are the point of these? Set SH_CurrentIndex = 0 Set SH_PickedUnit = No unit This should not be hardcoded: Custom script: call IssueTargetOrder( u , "chainlightning" , udg_SH_PickedUnit A user might decide to change the ability Everyting...
  1. KILLCIDE

    KILLCIDE

    Code Moderator

    Joined:
    Jul 22, 2015
    Messages:
    2,861
    • Ehh what are the point of these?
      • Set SH_CurrentIndex = 0
      • Set SH_PickedUnit = No unit


    • This should not be hardcoded:
      • Custom script: call IssueTargetOrder( u , "chainlightning" , udg_SH_PickedUnit

      A user might decide to change the ability

    Everyting else looks good! I actually really enjoyed this spell concept, and it's not overloaded with insane special effects like your other uploads.


    Approved
     
  2. jakeZinc

    jakeZinc

    Joined:
    Aug 13, 2013
    Messages:
    1,378
    * They are for importing purposes. The integer current index is critical, it must be declared onInit with initial value of 0. ( When Im importing especially a spell that uses dynamic indexing, the integer variable that uses in the loops are bugged when you clicked it will show you no type of variable and of course I will make it integer type manually that causes the whole spell to be broken xD. )
     
  3. KILLCIDE

    KILLCIDE

    Code Moderator

    Joined:
    Jul 22, 2015
    Messages:
    2,861
    Ahh I've had this problem before! I will need to remember to do this as well for my submissions. Thank you.
     
  4. jakeZinc

    jakeZinc

    Joined:
    Aug 13, 2013
    Messages:
    1,378
    Especially from those who submitted spells before xD.
     
  5. Jay-B

    Jay-B

    Joined:
    Aug 5, 2016
    Messages:
    36
    WOW cool i like this one
     
  6. Ofel

    Ofel

    Joined:
    Mar 29, 2012
    Messages:
    351
    I like this one.
    Maybe increase a bit the hammer height limit before they get destroyed for a better realistic, physically. Visually.
    But dunno. Cool and stable spell.

    4/5