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

HyperStomp V0.2

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
this is my first spell.
i hope you like my spell

Update V0.2

  • Hyper Stomp
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Hyper Stomp
    • Actions
      • -------- Spell Settings --------
      • Set StompCaster = (Triggering unit)
      • Set StompOwner = (Owner of StompCaster)
      • Set StompLocation = (Position of StompCaster)
      • Set StompLevel = (Level of (Ability being cast) for StompCaster)
      • -------- ----------------------------------------------- --------
      • -------- Spell Value --------
      • -------- ----------------------------------------------- --------
      • Set StompDamageBase = 0.00
      • Set StompDamageBonus = 600.00
      • Set StompDamageTotal = (StompDamageBase + (StompDamageBonus x (Real(StompLevel))))
      • Set StompAOE = 500.00
      • Set StompBonusAOE = 0.00
      • Set StompTotalAOE = (StompAOE + (StompBonusAOE x (Real(StompLevel))))
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within StompTotalAOE of StompLocation matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True))) and do (Actions)
        • Loop - Actions
          • Set StompPickedUnit = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (StompPickedUnit belongs to an ally of StompOwner) Equal to False
            • Then - Actions
              • -------- Damaging and Creating Special Effect --------
              • Unit - Cause StompCaster to damage (Picked unit), dealing StompDamageTotal damage of attack type Spells and damage type Normal
              • Special Effect - Create a special effect at StompLocation using Abilities\Spells\NightElf\BattleRoar\RoarCaster.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
      • Set Angel = 360.00
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • Set TempLoc = (StompLocation offset by 150.00 towards Angel degrees)
          • Special Effect - Create a special effect at TempLoc using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set TempLoc = (StompLocation offset by 250.00 towards Angel degrees)
          • Special Effect - Create a special effect at TempLoc using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set TempLoc = (StompLocation offset by 350.00 towards Angel degrees)
          • Special Effect - Create a special effect at TempLoc using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set TempLoc = (StompLocation offset by 450.00 towards Angel degrees)
          • Special Effect - Create a special effect at TempLoc using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set Angel = (Angel - 30.00)
          • Custom script: call RemoveLocation(udg_TempLoc)
  • Meteor Strike
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Meteor Strike
    • Actions
      • -------- Spell Settings --------
      • Set MeteorCaster = (Triggering unit)
      • Set MeteorOwner = (Owner of MeteorCaster)
      • Set MeteorLocation = (Position of MeteorCaster)
      • Set MeteorLevel = (Level of (Ability being cast) for MeteorCaster)
      • -------- ----------------------------------------------- --------
      • -------- Spell Value --------
      • -------- ----------------------------------------------- --------
      • Set MeteorDamageBase = 0.00
      • Set MeteorDamageBonus = 100.00
      • Set MeteorDamageTotal = (MeteorDamageBase + (MeteorDamageBonus x (Real(MeteorLevel))))
      • Set MeteorAOE = 500.00
      • Set MeteorBonusAOE = 0.00
      • Set MeteorTotalAOE = (MeteorAOE + (MeteorBonusAOE x (Real(MeteorLevel))))
      • Custom script: set bj_wantDestroyGroup = true
      • -------- Pause Unit --------
      • Unit - Pause MeteorCaster
      • Unit Group - Pick every unit in (Units within MeteorTotalAOE of MeteorLocation matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True))) and do (Actions)
        • Loop - Actions
          • Set MeteorPickedUnit = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (MeteorPickedUnit belongs to an ally of MeteorOwner) Equal to False
            • Then - Actions
              • -------- Damaging and Creating Special Effect --------
              • Unit - Cause MeteorCaster to damage (Picked unit), dealing MeteorDamageTotal damage of attack type Spells and damage type Normal
              • Special Effect - Create a special effect at MeteorLocation using Units\Demon\Infernal\InfernalBirth.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
      • Set Angel2 = 360.00
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in (Units within MeteorTotalAOE of MeteorLocation matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True))) and do (Actions)
            • Loop - Actions
              • Set MeteorPickedUnit = (Picked unit)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (MeteorPickedUnit belongs to an ally of MeteorOwner) Equal to False
                • Then - Actions
                  • -------- Damaging --------
                  • Unit - Cause MeteorCaster to damage (Picked unit), dealing MeteorDamageTotal damage of attack type Spells and damage type Normal
                • Else - Actions
          • Set TempLoc2 = (MeteorLocation offset by 120.00 towards Angel2 degrees)
          • Special Effect - Create a special effect at TempLoc2 using Units\Demon\Infernal\InfernalBirth.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set TempLoc2 = (MeteorLocation offset by 250.00 towards Angel2 degrees)
          • Special Effect - Create a special effect at TempLoc2 using Units\Demon\Infernal\InfernalBirth.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set TempLoc2 = (MeteorLocation offset by 350.00 towards Angel2 degrees)
          • Special Effect - Create a special effect at TempLoc2 using Units\Demon\Infernal\InfernalBirth.mdl
          • Special Effect - Destroy (Last created special effect)
          • Wait 0.01 seconds
          • Set TempLoc2 = (MeteorLocation offset by 120.00 towards Angel2 degrees)
          • Special Effect - Create a special effect at TempLoc2 using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set TempLoc2 = (MeteorLocation offset by 250.00 towards Angel2 degrees)
          • Special Effect - Create a special effect at TempLoc2 using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set TempLoc2 = (MeteorLocation offset by 350.00 towards Angel2 degrees)
          • Special Effect - Create a special effect at TempLoc2 using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
          • Special Effect - Destroy (Last created special effect)
          • Set Angel2 = (Angel2 - 30.00)
          • Custom script: call RemoveLocation(udg_TempLoc2)
      • -------- Unpause Unit --------
      • Unit - Unpause MeteorCaster
Keywords:
spell, stomp, meteor, strike, wave
Contents

HyperStompAndMeteorStrike (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 13:18, 17th Jul 2012 Magtheridon96: You should use a loop when creating the special effects in both triggers. You're leaking locations because you aren't removing them with the...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

13:18, 17th Jul 2012
Magtheridon96:

  • You should use a loop when creating the special effects in both triggers.
  • You're leaking locations because you aren't removing them with the RemoveLocation native.
  • When you overwrite a location variable without destroying the location, you're leaking it.
  • The wait is totally unneeded.
 
All of those special effects could be in a loop reducing the amount of times you call that function in the script to once instead of a million times, (this applies for both the creation and removal of sfx) both of these are AOE Sfx spam spells with extremely simple functioning, basically warstomp with a bit of graphic overkill, I'd suggest trying something with a bit more dynamics to it other than this block damage warstomp also remove that wait, it makes the spell not Mui (graphically)

Edit: Oh 800th post
 
A timer.
Waits are not accurate at all especially when you have low wait-times.
0.27 is the lowest wait-time possible with the normal Wc3 sleep function (Wait X.XX seconds).

Also, the wait function randomly adds 0.1, 0.125, 0.15, 0.175 or 0.2 seconds randomly to the wait time.

Timers are incredibly accurate.
You can get as low as 0.0001 seconds with them.
 
(Position of (Triggering unit)) leaks.

What this means is that whenever you're doing this, the computer is creating 0.3KB of memory and throwing it away, never to be destroyed every again throughout the game.

Yes, this sounds like a little, but when the memory leaks accumulate, you're going to have several hundreds of MBs that weren't cleared.

You're already storing the position of this the triggering unit in a variable in the first trigger, so instead of using (Position of (Triggering unit)), just use that StompLocation variable.

And instead of putting all the actions like that, you could do them in a loop.

  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 360.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 330.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 300.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 270.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 240.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 210.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 180.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 150.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 120.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 90.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 60.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
  • Special Effect - Create a special effect at ((Position of (Triggering unit)) offset by 360.00 towards 30.00 degrees) using Units\Demon\Infernal\InfernalBirth.mdl
  • Special Effect - Destroy (Last created special effect)
->

  • Set Angle = 360
  • For each (Integer A) from 1 to 12, do (Actions)
    • Loop - Actions
      • Special Effect - Create a special effect at StompLocation offset by 360.00 towards Angle degrees) using Units\Demon\Infernal\InfernalBirth.mdl
      • Special Effect - Destroy (Last created special effect)
      • Set Angle = (Angle - 30.00)
This is MUCH shorter.
 
You can still make a spell MUI even while using waits.
It takes a bit of complexity.

  • Example
    • Events
    • Conditions
    • Actions
      • Set BufferWriteIndex = BufferReadIndex + 1
      • Set myUnit[BufferWriteIndex] = GetTriggerUnit()
      • Wait 0.5 seconds
      • Set BufferReadIndex = BufferReadIndex + 1
      • // Use myUnit[BufferReadIndex] over here.
      • Custom script: if udg_BufferReadIndex == BufferWriteIndex then
      • Custom script: set udg_BufferReadIndex = 0
      • Custom script: set udg_BufferWriteIndex = 0
      • Custom script: endif
 
Top