JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser .
Storming Hammers v1.0 - GUI
This bundle is marked as recommended . It works and satisfies the submission rules.
[TD]
STORMING HAMMERS [ GUI ]
[/TD]
onCreation
onCharge
onStorming
Creates a storm cloud or cumulonimbushit on a targeted location! xD
The storm cloud successfully charged
It has a job to storm the area for the sake of DESTRUCTION! Its hammer time!
[TD]
CHANGELOGS
:[/TD][TD]
v1.0 - Released
[/TD]
[TD]
CREDITS
:[/TD][TD]
Jad
( KB3D System )
[/TD]
Storming Hammers Configuration
Storming Hammers Execution
Storming Hammers Loop
Storming Hammers Configuration
Events
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
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
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 "
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...
* 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. )
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
Ahh I've had this problem before! I will need to remember to do this as well for my submissions. Thank you.
Especially from those who submitted spells before xD.
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
Awesome
Last edited: Jan 25, 2019