• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Volcanic Crush V1.01

Earlier today, I read a comment from HammerFist saying "Personaly I dont thhink to ur spells could be usefull for anykind of pvp maps, but I think to they would be awesome for some boss fight and dungeon stile maps."

I happen to agree, I certainly don't tend to make spells which are "small" enough as it were, for PvP use, hopefully this will make a bit of a change to that, my first single-target spell (although does have AOE damage. Because reasons) which I think would fit my purposes for both a PvP spell, but also still quite nice for a boss battle.


- Heavily Configurable
- Importing Instructions
- Aoe damage
- Single Target ability
- Not very demanding on your PC sfx-wise
- Channeling spell



Summons 5 Flaming rocks which mark a target for a volcanic energy bomb. The bomb will grow to a critical mass, and then fall onto the location of the target. Can target both enemy and friendly targets, though only damages enemies.

Level 1 - Deals 340 damage at full size.
Level 2 - Deals 380 damage at full size.
Level 3 - Deals 420 damage at full size.



  • Volcanic Crush
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- -------- --------
      • -------- Theme Controls --------
      • -------- Randomise Theme --------
      • Set VC_Conditions[0] = False
      • -------- Cycle Themes --------
      • Set VC_Conditions[1] = True
      • -------- If cycle themes is set to False, this determines which Theme will be used --------
      • Set VC_DefaultTheme = 1
      • -------- Total amount of themes available (for randomisation) --------
      • Set VC_SpellsThemeCount = 3
      • -------- Damage Health --------
      • Set VC_Conditions[2] = True
      • -------- Damage Mana --------
      • Set VC_Conditions[3] = True
      • -------- Determines the targets available for the spell --------
      • -------- Target is alive --------
      • Set VC_Conditions[4] = True
      • -------- Target is Magic Immune --------
      • Set VC_Conditions[5] = False
      • -------- Target is Structure --------
      • Set VC_Conditions[6] = False
      • -------- Target is Ground unit --------
      • Set VC_Conditions[7] = True
      • -------- Target is Belongs to an enemy --------
      • Set VC_Conditions[8] = True
      • -------- Spin Clockwise/Spin AntiClockwise --------
      • Set VC_Conditions[9] = True
      • -------- Rock spin TrueSpeed/TimeSpeed --------
      • Set VC_Conditions[10] = False
      • -------- Rock fall TrueSpeed/TimeSpeed --------
      • Set VC_Conditions[11] = True
      • -------- Controls the Distance of the spinning sub-rocks from the centre --------
      • Set VC_RockDistanceBase = 150.00
      • Set VC_RockDistancePerLevel = 0.00
      • -------- Controls the Spinning speed of the rocks --------
      • Set VC_RockSpinSpeedBase = 7.00
      • Set VC_RockSpinSpeedPerLevel = 0.00
      • Set VC_ActivatedSpeedMultiplyer = 1.50
      • Set VC_RockSpinIncomingTimeBase = 1.50
      • Set VC_RockSpinIncomingTimePL = 0.00
      • -------- Controls the facing of the rocks (relative to the direction and from the target) --------
      • Set VC_RockFacingAngle = 90.00
      • -------- Determines the area that the Rock will damage upon falling --------
      • Set VC_AoeBase = 150.00
      • Set VC_AoePerLevel = 25.00
      • -------- Determines The Z offset of the various parts --------
      • Set VC_ZHeightSubRocksBase = 200.00
      • Set VC_ZHeightSubRocksPerLevel = 0.00
      • Set VC_ZHeightVolRockBase = 300.00
      • Set VC_ZHeightVolRockPerLevel = 0.00
      • -------- Determines the amount of Drain areas created --------
      • Set VC_SpinningRocksBase = 5
      • Set VC_SpinningRocksPerLevel = 0
      • -------- Determines how much Health damage a unit takes per second --------
      • Set VC_HealthDamageBase = 300.00
      • Set VC_HealthDamagePerLevel = 40.00
      • -------- Determines how much Mana damage a unit takes per second --------
      • Set VC_ManaDamageBase = 0.00
      • Set VC_ManaDamagePerLevel = 0.00
      • -------- Determines the Falling speed of the rock --------
      • Set VC_VolRockFallSpeedBase = 200.00
      • Set VC_VolRockFallSpeedPerLevel = 0.00
      • Set VC_VolRockFallIncomingTimeBase = 3.00
      • Set VC_VolRockFallIncomingTimePL = 0.00
      • Set VC_ImpactHeight = 90.00
      • -------- Determines the Max scaling of the rock --------
      • Set VC_EffectScalingVolRockMaxBase = 1000.00
      • Set VC_EffectScalingVolRockMaxPL = 300.00
      • -------- Determines the scaling of the spinning sub-rocks --------
      • Set VC_EffectScalingSpinRocksBase = 150.00
      • Set VC_EffectScalingSpinRocksPL = 0.00
      • -------- Determines the scaling of the Rock at the start of the spell --------
      • Set VC_EffectScalingVolRockBase = 0.00
      • Set VC_EffectScalingVolRockPL = 0.00
      • -------- Determines the scaling increase of the rock per second --------
      • Set VC_EffectScalingVolSpeedBase = 100.00
      • Set VC_EffectScalingVolSpeedPL = 100.00
      • -------- Determines the scaling of the explosion --------
      • Set VC_EffectScalingExplosionBase = 200.00
      • Set VC_EffectScalingExplosionPL = 50.00
      • -------- Determines the SFX used as the Volcanic Rock --------
      • Set VC_CrushingRockSFX[1] = Abilities\Weapons\BloodElfMissile\BloodElfMissile.mdl
      • Set VC_CrushingRockSFX[2] = Abilities\Weapons\BloodElfMissile\BloodElfMissile.mdl
      • Set VC_CrushingRockSFX[3] = Abilities\Weapons\BloodElfMissile\BloodElfMissile.mdl
      • -------- Determines the SFX used as the Summoning sfx --------
      • Set VC_SummonSFX[1] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Set VC_SummonSFX[2] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Set VC_SummonSFX[3] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • -------- Determines the unit model used for the spinning rocks --------
      • Set VC_SpinningRocksSFX[1] = Abilities\Weapons\LavaSpawnMissile\LavaSpawnMissile.mdl
      • Set VC_SpinningRocksSFX[2] = Abilities\Weapons\LavaSpawnMissile\LavaSpawnMissile.mdl
      • Set VC_SpinningRocksSFX[3] = Abilities\Weapons\LavaSpawnMissile\LavaSpawnMissile.mdl
      • -------- Determines the unit model used as the Explosion --------
      • Set VC_EndSpellSFX[1] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Set VC_EndSpellSFX[2] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Set VC_EndSpellSFX[3] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • -------- Determines the unit model used when the spell stops channeling --------
      • Set VC_EndChannelSFX[1] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Set VC_EndChannelSFX[2] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Set VC_EndChannelSFX[3] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • -------- Determines how fast dummys are removed (needs to be about a second and a half to allow ending effects to occur) --------
      • Set VC_ExpireTime = 1.50
      • -------- Determines the unit model use when the effect is cancelled early --------
      • Set VC_Spell = Volcanic Crush
      • -------- Determines the order string of the spell used (should match ability used as a base) --------
      • Set VC_Order = channel
      • -------- Determines the Dummy used to attach all the effects to --------
      • Set VC_DummyType = Volcanic Crush
      • -------- -------- --------
      • -------- Determines the Speed of the loop trigger --------
      • Set VC_TimerSpeed = 0.03
      • Trigger - Add to Volcanic Crush Loop <gen> the event (Time - Every VC_TimerSpeed seconds of game time)
      • -------- -------- --------
  • Volcanic Crush Activation
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to VC_Spell
    • Actions
      • Set VC_TempUnit2 = (Triggering unit)
      • Set VC_TempUnit3 = (Target unit of ability being cast)
      • Set VC_TempPlayer = (Owner of VC_TempUnit2)
      • Set VC_TempInteger2 = (Level of VC_Spell for VC_TempUnit2)
      • Set VC_TempReal = (Real(VC_TempInteger2))
      • Set VC_TempReal2 = 0.00
      • Set VC_TempInteger = (VC_SpinningRocksBase + (VC_SpinningRocksPerLevel x (Integer(VC_TempReal))))
      • Set VC_TempReal3 = (360.00 / (Real(VC_TempInteger)))
      • Set VC_TempPoint2 = (Position of VC_TempUnit3)
      • -------- Identifies if you want the theme to change upon level up, randomly, or not at all --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • VC_Conditions[0] Equal to True
        • Then - Actions
          • Set VC_TempInteger2 = (Random integer number between 1 and VC_SpellsThemeCount)
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VC_Conditions[1] Equal to False
            • Then - Actions
              • Set VC_TempInteger2 = VC_DefaultTheme
            • Else - Actions
      • -------- Deactivates any previous casts --------
      • For each (Integer VC_Index) from 1 to VC_MaxIndex, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VC_OriginalCaster[VC_Index] Equal to VC_TempUnit2
              • VC_StageID[VC_Index] Equal to 1
            • Then - Actions
              • Special Effect - Create a special effect attached to the origin of VC_UnitIndex[VC_Index] using VC_EndChannelSFX[VC_Index]
              • Special Effect - Destroy (Last created special effect)
              • Set VC_StageID[VC_Index] = 2
            • Else - Actions
      • -------- Spinning sub-rocks creation --------
      • For each (Integer VC_Index) from 1 to VC_TempInteger, do (Actions)
        • Loop - Actions
          • Set VC_TempReal2 = (VC_TempReal2 + VC_TempReal3)
          • Set VC_MaxIndex = (VC_MaxIndex + 1)
          • Set VC_RockDistance[VC_MaxIndex] = (VC_RockDistanceBase + (VC_RockDistancePerLevel x VC_TempReal))
          • Set VC_TempPoint = (VC_TempPoint2 offset by VC_RockDistance[VC_MaxIndex] towards VC_TempReal2 degrees)
          • Set VC_CurrentAngle[VC_MaxIndex] = (Angle from VC_TempPoint2 to VC_TempPoint)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VC_Conditions[10] Equal to True
            • Then - Actions
              • Set VC_RockSpinSpeed[VC_MaxIndex] = (VC_RockSpinSpeedBase + (VC_RockSpinSpeedPerLevel x VC_TempReal))
            • Else - Actions
              • Set VC_RockSpinSpeed[VC_MaxIndex] = ((360.00 x VC_TimerSpeed) / (VC_RockSpinIncomingTimeBase + (VC_RockSpinIncomingTimePL x VC_TempReal)))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VC_Conditions[9] Equal to True
            • Then - Actions
              • Set VC_Rotation[VC_MaxIndex] = (VC_RockFacingAngle x -1.00)
              • Set VC_RockSpinSpeed[VC_MaxIndex] = (VC_RockSpinSpeed[VC_MaxIndex] x -1.00)
            • Else - Actions
              • Set VC_Rotation[VC_MaxIndex] = VC_RockFacingAngle
          • Unit - Create 1 VC_DummyType for VC_TempPlayer at VC_TempPoint facing (VC_CurrentAngle[VC_MaxIndex] + VC_Rotation[VC_MaxIndex]) degrees
          • Set VC_TempUnit = (Last created unit)
          • Custom script: call SetUnitFacing(udg_VC_TempUnit, udg_VC_CurrentAngle[udg_VC_Index] + udg_VC_Rotation[udg_VC_Index])
          • Animation - Change VC_TempUnit's size to ((VC_EffectScalingSpinRocksBase + (VC_EffectScalingSpinRocksPL x VC_TempReal))%, 0.00%, 0.00%) of its original size
          • Special Effect - Create a special effect attached to the origin of VC_TempUnit using VC_SummonSFX[VC_TempInteger2]
          • Special Effect - Destroy (Last created special effect)
          • Special Effect - Create a special effect attached to the origin of VC_TempUnit using VC_SpinningRocksSFX[VC_TempInteger2]
          • Set VC_SpecialEffect[VC_MaxIndex] = (Last created special effect)
          • Set VC_OriginalCaster[VC_MaxIndex] = VC_TempUnit2
          • Set VC_ZHeight[VC_MaxIndex] = (VC_ZHeightSubRocksBase + (VC_ZHeightSubRocksPerLevel x VC_TempReal))
          • Animation - Change VC_TempUnit flying height to VC_ZHeight[VC_MaxIndex] at 0.00
          • Set VC_VolRock[VC_MaxIndex] = False
          • Set VC_Target[VC_MaxIndex] = VC_TempUnit3
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VC_Conditions[11] Equal to True
            • Then - Actions
              • Set VC_FallSpeed[VC_MaxIndex] = ((VC_VolRockFallSpeedBase + (VC_VolRockFallSpeedPerLevel x VC_TempReal)) x VC_TimerSpeed)
            • Else - Actions
              • Set VC_RockSpinSpeed[VC_MaxIndex] = ((VC_ZHeight[VC_MaxIndex] x VC_TimerSpeed) / (VC_VolRockFallIncomingTimeBase + (VC_VolRockFallIncomingTimePL x VC_TempReal)))
          • Set VC_GrowthSpeed[VC_MaxIndex] = ((VC_EffectScalingVolSpeedBase + (VC_EffectScalingVolSpeedPL x VC_TempReal)) x VC_TimerSpeed)
          • Set VC_MaxSize[VC_MaxIndex] = (VC_EffectScalingVolRockMaxBase + (VC_EffectScalingVolRockMaxPL x VC_TempReal))
          • Set VC_ExpirationTimer[VC_MaxIndex] = 0.00
          • Set VC_ZHeight[VC_MaxIndex] = (VC_ZHeightVolRockBase + (VC_ZHeightVolRockPerLevel x VC_TempReal))
          • Set VC_CurrentSize[VC_MaxIndex] = 0.00
          • Set VC_Theme[VC_MaxIndex] = VC_TempInteger2
          • Custom script: set udg_VC_CasterX[udg_VC_MaxIndex] = GetUnitX(udg_VC_TempUnit2)
          • Custom script: set udg_VC_CasterY[udg_VC_MaxIndex] = GetUnitY(udg_VC_TempUnit2)
          • Set VC_UnitIndex[VC_MaxIndex] = VC_TempUnit
          • Set VC_StageID[VC_MaxIndex] = 1
          • Custom script: call RemoveLocation (udg_VC_TempPoint)
          • Custom script: set udg_VC_TempPoint = null
      • -------- Main Rock creation --------
      • Set VC_MaxIndex = (VC_MaxIndex + 1)
      • Unit - Create 1 VC_DummyType for VC_TempPlayer at VC_TempPoint2 facing (VC_CurrentAngle[VC_MaxIndex] + VC_Rotation[VC_MaxIndex]) degrees
      • Set VC_TempUnit = (Last created unit)
      • Animation - Change VC_TempUnit's size to ((VC_EffectScalingVolRockBase + (VC_EffectScalingVolRockPL x VC_TempReal))%, 0.00%, 0.00%) of its original size
      • Special Effect - Create a special effect attached to the origin of VC_TempUnit using VC_CrushingRockSFX[VC_TempInteger2]
      • Set VC_SpecialEffect[VC_MaxIndex] = (Last created special effect)
      • Set VC_OriginalCaster[VC_MaxIndex] = VC_TempUnit2
      • Set VC_ZHeight[VC_MaxIndex] = (VC_ZHeightVolRockBase + (VC_ZHeightVolRockPerLevel x VC_TempReal))
      • Animation - Change VC_TempUnit flying height to VC_ZHeight[VC_MaxIndex] at 0.00
      • Set VC_VolRock[VC_MaxIndex] = True
      • Set VC_Target[VC_MaxIndex] = VC_TempUnit3
      • Set VC_CurrentAngle[VC_MaxIndex] = 0.00
      • Set VC_GrowthSpeed[VC_MaxIndex] = ((VC_EffectScalingVolSpeedBase + (VC_EffectScalingVolSpeedPL x VC_TempReal)) x VC_TimerSpeed)
      • Set VC_AOE[VC_MaxIndex] = (VC_AoeBase + (VC_AoePerLevel x VC_TempReal))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • VC_Conditions[11] Equal to True
        • Then - Actions
          • Set VC_FallSpeed[VC_MaxIndex] = ((VC_VolRockFallSpeedBase + (VC_VolRockFallSpeedPerLevel x VC_TempReal)) x VC_TimerSpeed)
        • Else - Actions
          • Set VC_FallSpeed[VC_MaxIndex] = ((VC_ZHeight[VC_MaxIndex] x VC_TimerSpeed) / (VC_VolRockFallIncomingTimeBase + (VC_VolRockFallIncomingTimePL x VC_TempReal)))
      • Set VC_HealthDamage[VC_MaxIndex] = (VC_HealthDamageBase + (VC_HealthDamagePerLevel x VC_TempReal))
      • Set VC_ManaDamage[VC_MaxIndex] = (VC_ManaDamageBase + (VC_ManaDamagePerLevel x VC_TempReal))
      • Set VC_ExplosionScale[VC_MaxIndex] = (VC_EffectScalingExplosionBase + (VC_EffectScalingExplosionPL x VC_TempReal))
      • Set VC_ExpirationTimer[VC_MaxIndex] = 0.00
      • Set VC_RockDistance[VC_MaxIndex] = 0.00
      • Set VC_MaxSize[VC_MaxIndex] = (VC_EffectScalingVolRockMaxBase + (VC_EffectScalingVolRockMaxPL x VC_TempReal))
      • Set VC_CurrentSize[VC_MaxIndex] = 0.00
      • Set VC_Theme[VC_MaxIndex] = VC_TempInteger2
      • Custom script: set udg_VC_CasterX[udg_VC_MaxIndex] = GetUnitX(udg_VC_TempUnit2)
      • Custom script: set udg_VC_CasterY[udg_VC_MaxIndex] = GetUnitY(udg_VC_TempUnit2)
      • Set VC_UnitIndex[VC_MaxIndex] = VC_TempUnit
      • Set VC_StageID[VC_MaxIndex] = 1
      • Custom script: call RemoveLocation (udg_VC_TempPoint2)
      • Custom script: set udg_VC_TempPoint2 = null
      • -------- Activates the loop --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Volcanic Crush Loop <gen> is on) Equal to False
          • VC_MaxIndex Greater than or equal to 1
        • Then - Actions
          • Trigger - Turn on Volcanic Crush Loop <gen>
        • Else - Actions
  • Volcanic Crush Loop
    • Events
    • Conditions
    • Actions
      • For each (Integer VC_Index) from 1 to VC_MaxIndex, do (Actions)
        • Loop - Actions
          • -------- Growth/Spin Controls --------
          • Set VC_TempUnit = VC_UnitIndex[VC_Index]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VC_StageID[VC_Index] Equal to 1
            • Then - Actions
              • Custom script: set udg_VC_TempX = GetUnitX(udg_VC_Target[udg_VC_Index])
              • Custom script: set udg_VC_TempY = GetUnitY(udg_VC_Target[udg_VC_Index])
              • Set VC_CurrentSize[VC_Index] = (VC_CurrentSize[VC_Index] + VC_GrowthSpeed[VC_Index])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • VC_VolRock[VC_Index] Equal to True
                • Then - Actions
                  • Animation - Change VC_TempUnit's size to (VC_CurrentSize[VC_Index]%, 0.00%, 0.00%) of its original size
                  • Custom script: set udg_VC_Angle = 0.00
                • Else - Actions
                  • Custom script: set udg_VC_CurrentAngle[udg_VC_Index] = udg_VC_CurrentAngle[udg_VC_Index] + udg_VC_RockSpinSpeed[udg_VC_Index]
                  • Custom script: call SetUnitFacing(udg_VC_TempUnit, udg_VC_CurrentAngle[udg_VC_Index] + udg_VC_Rotation[udg_VC_Index])
                  • Custom script: set udg_VC_Angle = udg_VC_CurrentAngle[udg_VC_Index] * bj_DEGTORAD
              • Custom script: call SetUnitX(udg_VC_TempUnit, udg_VC_TempX + udg_VC_RockDistance[udg_VC_Index] * Cos(udg_VC_Angle))
              • Custom script: call SetUnitY(udg_VC_TempUnit, udg_VC_TempY + udg_VC_RockDistance[udg_VC_Index] * Sin(udg_VC_Angle))
              • Custom script: set udg_VC_TempX = GetUnitX(udg_VC_OriginalCaster[udg_VC_Index])
              • Custom script: set udg_VC_TempY = GetUnitY(udg_VC_OriginalCaster[udg_VC_Index])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • VC_CurrentSize[VC_Index] Greater than or equal to VC_MaxSize[VC_Index]
                      • (Current order of VC_OriginalCaster[VC_Index]) Not equal to (Order(VC_Order))
                      • VC_CasterX[VC_Index] Not equal to VC_TempX
                      • VC_CasterY[VC_Index] Not equal to VC_TempY
                • Then - Actions
                  • Special Effect - Create a special effect attached to the origin of VC_TempUnit using VC_EndChannelSFX[VC_Theme[VC_Index]]
                  • Special Effect - Destroy (Last created special effect)
                  • Set VC_StageID[VC_Index] = 2
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • VC_VolRock[VC_Index] Equal to False
                    • Then - Actions
                      • Set VC_RockSpinSpeed[VC_Index] = (VC_RockSpinSpeed[VC_Index] x VC_ActivatedSpeedMultiplyer)
                      • Custom script: set udg_VC_TargetX[udg_VC_Index] = GetUnitX(udg_VC_Target[udg_VC_Index])
                      • Custom script: set udg_VC_TargetY[udg_VC_Index] = GetUnitY(udg_VC_Target[udg_VC_Index])
                    • Else - Actions
                      • Set VC_HealthDamage[VC_Index] = ((VC_CurrentSize[VC_Index] / VC_MaxSize[VC_Index]) x VC_HealthDamage[VC_Index])
                • Else - Actions
              • Custom script: set udg_VC_CasterX[udg_VC_Index] = udg_VC_TempX
              • Custom script: set udg_VC_CasterY[udg_VC_Index] = udg_VC_TempY
            • Else - Actions
              • -------- Falling/Detonation --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • VC_StageID[VC_Index] Equal to 2
                • Then - Actions
                  • Set VC_ZHeight[VC_Index] = (VC_ZHeight[VC_Index] - VC_FallSpeed[VC_Index])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • VC_VolRock[VC_Index] Equal to True
                    • Then - Actions
                      • Animation - Change VC_TempUnit flying height to VC_ZHeight[VC_Index] at 0.00
                    • Else - Actions
                      • Custom script: set udg_VC_CurrentAngle[udg_VC_Index] = udg_VC_CurrentAngle[udg_VC_Index] + udg_VC_RockSpinSpeed[udg_VC_Index]
                      • Custom script: call SetUnitFacing(udg_VC_TempUnit, udg_VC_CurrentAngle[udg_VC_Index] + udg_VC_Rotation[udg_VC_Index])
                      • Custom script: set udg_VC_Angle = udg_VC_CurrentAngle[udg_VC_Index] * bj_DEGTORAD
                      • Custom script: call SetUnitX(udg_VC_TempUnit, udg_VC_TargetX[udg_VC_Index] + udg_VC_RockDistance[udg_VC_Index] * Cos(udg_VC_Angle))
                      • Custom script: call SetUnitY(udg_VC_TempUnit, udg_VC_TargetY[udg_VC_Index] + udg_VC_RockDistance[udg_VC_Index] * Sin(udg_VC_Angle))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • VC_ZHeight[VC_Index] Less than or equal to VC_ImpactHeight
                    • Then - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • VC_VolRock[VC_Index] Equal to True
                        • Then - Actions
                          • Animation - Change VC_TempUnit's size to (VC_ExplosionScale[VC_Index]%, 0.00%, 0.00%) of its original size
                          • Animation - Change VC_TempUnit flying height to 0.00 at 0.00
                          • Set VC_TempPoint = (Position of VC_TempUnit)
                          • Set VC_TempGroup = (Units within VC_AOE[VC_Index] of VC_TempPoint)
                          • Unit Group - Pick every unit in VC_TempGroup and do (Actions)
                            • Loop - Actions
                              • Set VC_TempUnit2 = (Picked unit)
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (VC_TempUnit2 is alive) Equal to VC_Conditions[4]
                                  • (VC_TempUnit2 is Magic Immune) Equal to VC_Conditions[5]
                                  • (VC_TempUnit2 is A structure) Equal to VC_Conditions[6]
                                  • (VC_TempUnit2 is A ground unit) Equal to VC_Conditions[7]
                                  • (VC_TempUnit2 belongs to an enemy of (Owner of VC_OriginalCaster[VC_Index])) Equal to VC_Conditions[8]
                                • Then - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • VC_Conditions[2] Equal to True
                                    • Then - Actions
                                      • Unit - Cause VC_OriginalCaster[VC_Index] to damage VC_TempUnit2, dealing VC_HealthDamage[VC_Index] damage of attack type Spells and damage type Normal
                                    • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • VC_Conditions[3] Equal to True
                                    • Then - Actions
                                      • Unit - Set mana of VC_TempUnit2 to ((Mana of VC_TempUnit2) - VC_ManaDamage[VC_Index])
                                    • Else - Actions
                                • Else - Actions
                          • Set VC_StageID[VC_Index] = 3
                          • Custom script: call RemoveLocation (udg_VC_TempPoint)
                          • Custom script: call DestroyGroup (udg_VC_TempGroup)
                          • Custom script: set udg_VC_TempGroup = null
                          • Custom script: set udg_VC_TempPoint = null
                        • Else - Actions
                      • Special Effect - Create a special effect attached to the origin of VC_TempUnit using VC_EndSpellSFX[VC_Theme[VC_Index]]
                      • Special Effect - Destroy (Last created special effect)
                      • Set VC_StageID[VC_Index] = 3
                      • Special Effect - Destroy VC_SpecialEffect[VC_Index]
                    • Else - Actions
                • Else - Actions
                  • -------- Cleanup --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • VC_StageID[VC_Index] Equal to 3
                    • Then - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • VC_ExpirationTimer[VC_Index] Greater than or equal to VC_ExpireTime
                        • Then - Actions
                          • Unit - Remove VC_TempUnit from the game
                          • Set VC_SpecialEffect[VC_Index] = VC_SpecialEffect[VC_MaxIndex]
                          • Set VC_OriginalCaster[VC_Index] = VC_OriginalCaster[VC_MaxIndex]
                          • Set VC_ZHeight[VC_Index] = VC_ZHeight[VC_MaxIndex]
                          • Set VC_VolRock[VC_Index] = VC_VolRock[VC_MaxIndex]
                          • Set VC_ExpirationTimer[VC_Index] = VC_ExpirationTimer[VC_MaxIndex]
                          • Set VC_Target[VC_Index] = VC_Target[VC_MaxIndex]
                          • Set VC_GrowthSpeed[VC_Index] = VC_GrowthSpeed[VC_MaxIndex]
                          • Set VC_FallSpeed[VC_Index] = VC_FallSpeed[VC_MaxIndex]
                          • Set VC_ExplosionScale[VC_Index] = VC_ExplosionScale[VC_MaxIndex]
                          • Set VC_CurrentAngle[VC_Index] = VC_CurrentAngle[VC_MaxIndex]
                          • Set VC_HealthDamage[VC_Index] = VC_HealthDamage[VC_MaxIndex]
                          • Set VC_Rotation[VC_Index] = VC_Rotation[VC_MaxIndex]
                          • Set VC_RockDistance[VC_Index] = VC_RockDistance[VC_MaxIndex]
                          • Set VC_RockSpinSpeed[VC_Index] = VC_RockSpinSpeed[VC_MaxIndex]
                          • Set VC_ManaDamage[VC_Index] = VC_ManaDamage[VC_MaxIndex]
                          • Set VC_AOE[VC_Index] = VC_AOE[VC_MaxIndex]
                          • Set VC_ExplosionScale[VC_Index] = VC_ExplosionScale[VC_MaxIndex]
                          • Set VC_MaxSize[VC_Index] = VC_MaxSize[VC_MaxIndex]
                          • Set VC_CurrentSize[VC_Index] = VC_CurrentSize[VC_MaxIndex]
                          • Set VC_Theme[VC_Index] = VC_Theme[VC_MaxIndex]
                          • Set VC_CasterX[VC_Index] = VC_CasterX[VC_MaxIndex]
                          • Set VC_CasterY[VC_Index] = VC_CasterY[VC_MaxIndex]
                          • Set VC_TargetX[VC_Index] = VC_TargetX[VC_MaxIndex]
                          • Set VC_TargetY[VC_Index] = VC_TargetY[VC_MaxIndex]
                          • Set VC_UnitIndex[VC_Index] = VC_UnitIndex[VC_MaxIndex]
                          • Set VC_StageID[VC_Index] = VC_StageID[VC_MaxIndex]
                          • Set VC_MaxIndex = (VC_MaxIndex - 1)
                          • Set VC_Index = (VC_Index - 1)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • VC_MaxIndex Equal to 0
                            • Then - Actions
                              • Trigger - Turn off Volcanic Crush Loop <gen>
                            • Else - Actions
                        • Else - Actions
                          • Set VC_ExpirationTimer[VC_Index] = (VC_ExpirationTimer[VC_Index] + VC_TimerSpeed)
                    • Else - Actions



-=V1.00=-
- Initial Upload
-=V1.01=-
- Rearranged the ability button
- Nulled variables after use (locations and groups)
- Moved TempUnit set to earlier
- Made order configurable


Give credits if you use this spell in your map, and enjoy.

Keywords:
Volcanic, Bomb, Single Target, Channel, Crush, Explosion, Homing, Explode, Detonate, Grow.
Contents

Volcanic Crush (Map)

Reviews
Volcanic Crush V1.00 | Reviewed by Maker | 20th Mar 2013 APPROVED [tr] This is a nice, smooth spell with no lag or leaks

Moderator

M

Moderator


Volcanic Crush V1.00 | Reviewed by Maker | 20th Mar 2013
APPROVED


126248-albums6177-picture66521.png

  • This is a nice, smooth spell with no lag or leaks
[tr]
 
Level 33
Joined
Apr 24, 2012
Messages
5,113
Oh you <3
Now i have to spread reputation just to give you one XD

Btw, I found out that your spell code is much shorter than your past spells :D


edit

I like the idea of using Kael's missile :D , it looks like a burning pearl XD

edit
  • -------- Determines the SFX used as the Summong sfx --------
Typo :D
 
Last edited:
Level 4
Joined
Apr 14, 2012
Messages
72
I wish I could make so (LONG triggered) good spells... ;D
Sooo many variables :vw_wtf:

Good job the spell is very good, keep the good work, there aren't many ppl so good
:goblin_good_job:
 
Level 1
Joined
May 22, 2011
Messages
1
please help :\
i got compile error...
for 7 lines and this line is one of them
set udg_VC_Angle = 0.00
why is this happening ?? some spells when i try to import them the same problem come even they are working in the original map the creator create...
 
Top