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

Dash Strikes MUI Hashtable v1.02

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
The Queen of Suffering launches herself toward front location at incredible speed, attacking enemies as she passes by them.

this spell is MUI from hashtable

  • Dash Strikes Hashcache
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set DSHash = (Last created hashtable)
  • Dash Strikes
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Dash Strikes
    • Actions
      • Special Effect - Destroy (Load (Key left) of (Key (Triggering unit)) in DSHash)
      • Special Effect - Destroy (Load (Key right) of (Key (Triggering unit)) in DSHash)
      • Special Effect - Destroy (Load (Key foot) of (Key (Triggering unit)) in DSHash)
      • Special Effect - Destroy (Load (Key origin) of (Key (Triggering unit)) in DSHash)
      • Special Effect - Destroy (Load (Key chest) of (Key (Triggering unit)) in DSHash)
      • Set TempUnit = (Triggering unit)
      • Set TempInt = (20 + (4 x (Level of (Ability being cast) for (Triggering unit))))
      • Set TempReal = (Facing of (Triggering unit))
      • Hashtable - Save Handle OfTempUnit as (Key unit) of (Key (Triggering unit)) in DSHash
      • Hashtable - Save Handle OfTempUnit as (Key unit) of (Key (Triggering unit)) in DSHash
      • Hashtable - Save TempInt as (Key index) of (Key (Triggering unit)) in DSHash
      • Hashtable - Save Handle OfTempUnit as (Key unit) of (Key (Triggering unit)) in DSHash
      • Hashtable - Save TempReal as (Key angle) of (Key (Triggering unit)) in DSHash
      • Set TempReal = (75.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))
      • Hashtable - Save TempReal as (Key deal) of (Key (Triggering unit)) in DSHash
      • Special Effect - Create a special effect attached to the left + hand of (Triggering unit) using Abilities\Weapons\IllidanMissile\IllidanMissile.mdx
      • Hashtable - Save Handle Of(Last created special effect) as (Key left) of (Key (Triggering unit)) in DSHash
      • Special Effect - Create a special effect attached to the right + hand of (Triggering unit) using Abilities\Weapons\IllidanMissile\IllidanMissile.mdx
      • Hashtable - Save Handle Of(Last created special effect) as (Key right) of (Key (Triggering unit)) in DSHash
      • Special Effect - Create a special effect attached to the foot of (Triggering unit) using Abilities\Weapons\IllidanMissile\IllidanMissile.mdx
      • Hashtable - Save Handle Of(Last created special effect) as (Key foot) of (Key (Triggering unit)) in DSHash
      • Special Effect - Create a special effect attached to the chest of (Triggering unit) using Abilities\Spells\NightElf\TargetArtLumber\TargetArtLumber.mdx
      • Hashtable - Save Handle Of(Last created special effect) as (Key chest) of (Key (Triggering unit)) in DSHash
      • Special Effect - Create a special effect attached to the origin of (Triggering unit) using Abilities\Spells\NightElf\TargetArtLumber\TargetArtLumber.mdx
      • Hashtable - Save Handle Of(Last created special effect) as (Key origin) of (Key (Triggering unit)) in DSHash
      • Unit - Turn collision for (Triggering unit) Off
      • Custom script: set udg_TempGroup2 = CreateGroup()
      • Hashtable - Save Handle OfTempGroup2 as (Key damage) of (Key (Triggering unit)) in DSHash
      • Unit Group - Add (Triggering unit) to DashGroup
      • Trigger - Turn on Dash Strikes Index <gen>
  • Dash Strikes Index
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in DashGroup) Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
          • Hashtable - Clear all child hashtables of child (Key left) in DSHash
          • Hashtable - Clear all child hashtables of child (Key right) in DSHash
          • Hashtable - Clear all child hashtables of child (Key foot) in DSHash
          • Hashtable - Clear all child hashtables of child (Key origin) in DSHash
          • Hashtable - Clear all child hashtables of child (Key chest) in DSHash
          • Hashtable - Clear all child hashtables of child (Key damage) in DSHash
          • Hashtable - Clear all child hashtables of child (Key deal) in DSHash
          • Hashtable - Clear all child hashtables of child (Key angle) in DSHash
          • Skip remaining actions
        • Else - Actions
      • Unit Group - Pick every unit in DashGroup and do (Actions)
        • Loop - Actions
          • Set TempReal = (Load (Key angle) of (Key (Picked unit)) from DSHash)
          • Set TempInt = (Load (Key index) of (Key (Picked unit)) from DSHash)
          • Set TempInt = (TempInt - 1)
          • Hashtable - Save TempInt as (Key index) of (Key (Picked unit)) in DSHash
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • TempInt Greater than 0
            • Then - Actions
              • Set TempLoc = (Position of (Picked unit))
              • Set TempLoc2 = (TempLoc offset by 25.00 towards TempReal degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain pathing at TempLoc2 of type Walkability is off) Not equal to True
                • Then - Actions
                  • Unit - Move (Picked unit) instantly to TempLoc2, facing TempReal degrees
                • Else - Actions
                  • Hashtable - Save 0 as (Key index) of (Key (Picked unit)) in DSHash
                  • Special Effect - Destroy (Load (Key left) of (Key (Picked unit)) in DSHash)
                  • Special Effect - Destroy (Load (Key right) of (Key (Picked unit)) in DSHash)
                  • Special Effect - Destroy (Load (Key foot) of (Key (Picked unit)) in DSHash)
                  • Special Effect - Destroy (Load (Key origin) of (Key (Picked unit)) in DSHash)
                  • Special Effect - Destroy (Load (Key chest) of (Key (Picked unit)) in DSHash)
                  • Unit Group - Remove (Picked unit) from DashGroup
                  • Unit Group - Remove all units from TempGroup2
                  • Unit - Turn collision for (Picked unit) On
                  • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in DSHash
              • Set TempUnit = (Load (Key unit) of (Key (Picked unit)) in DSHash)
              • Set TempGroup = (Units within 175.00 of TempLoc matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) belongs to an enemy of (Owner of (Picked unit))) Equal to True) and ((((Matching unit) is Magic Immune) Not equal to True) and ((Owner of (Ma
              • Custom script: /*set udg_TempGroup2 = LoadGroupHandleBJ(StringHashBJ("damage"), GetHandleIdBJ(udg_TempUnit), udg_DSHash )*/
              • Custom script: set udg_TempGroup2 = LoadGroupHandle(udg_DSHash,GetHandleId(udg_TempUnit),StringHash("damage"))
              • Unit Group - Pick every unit in TempGroup and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is in TempGroup2) Not equal to True
                    • Then - Actions
                      • Unit Group - Add (Picked unit) to TempGroup2
                      • Custom script: /*call SaveGroupHandleBJ( udg_TempGroup2, StringHashBJ("damage"), GetHandleIdBJ(udg_TempUnit), udg_DSHash )*/
                      • Custom script: call SaveGroupHandle(udg_DSHash,GetHandleId(udg_TempUnit),StringHash("damage"),udg_TempGroup2)
                      • Custom script: set udg_TempReal = LoadRealBJ(StringHashBJ("deal"), GetHandleIdBJ(udg_TempUnit), udg_DSHash)
                      • Unit - Cause TempUnit to damage (Picked unit), dealing TempReal damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Weapons\IllidanMissile\IllidanMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                    • Else - Actions
              • Custom script: call DestroyGroup( udg_TempGroup )
              • Custom script: call RemoveLocation( udg_TempLoc)
              • Custom script: call RemoveLocation( udg_TempLoc2 )
            • Else - Actions
              • Special Effect - Destroy (Load (Key left) of (Key (Picked unit)) in DSHash)
              • Special Effect - Destroy (Load (Key right) of (Key (Picked unit)) in DSHash)
              • Special Effect - Destroy (Load (Key foot) of (Key (Picked unit)) in DSHash)
              • Special Effect - Destroy (Load (Key origin) of (Key (Picked unit)) in DSHash)
              • Special Effect - Destroy (Load (Key chest) of (Key (Picked unit)) in DSHash)
              • Unit Group - Remove (Picked unit) from DashGroup
              • Unit Group - Remove all units from TempGroup2
              • Custom script: call DestroyGroup( udg_TempGroup2 )
              • Unit - Turn collision for (Picked unit) On
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in DSHash
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is dead) Equal to True
            • Then - Actions
              • Hashtable - Save 0 as (Key index) of (Key (Picked unit)) in DSHash
              • Special Effect - Destroy (Load (Key left) of (Key (Picked unit)) in DSHash)
              • Special Effect - Destroy (Load (Key right) of (Key (Picked unit)) in DSHash)
              • Special Effect - Destroy (Load (Key foot) of (Key (Picked unit)) in DSHash)
              • Special Effect - Destroy (Load (Key origin) of (Key (Picked unit)) in DSHash)
              • Special Effect - Destroy (Load (Key chest) of (Key (Picked unit)) in DSHash)
              • Unit Group - Remove (Picked unit) from DashGroup
              • Unit Group - Remove all units from TempGroup2
              • Custom script: call DestroyGroup( udg_TempGroup2 )
              • Unit - Turn collision for (Picked unit) On
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in DSHash
            • Else - Actions


Keywords:
dash,posion,fast,jump,damage,dhguardianes,dh-g,shadow,mui,hashtable
Contents

Dash Strikes MUI Hashtable v1.02 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Required changes: You should check whether the effects are stored, and then not create new ones if they exist. Use boolean, Hashtable - value exists You're saving the handle id of...

Moderator

M

Moderator

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

Reviewed by Maker, Dash Strikes v1.02, 11th Jan 2012

Required changes:
  • You should check whether the effects are stored, and then not create new ones if they exist. Use boolean, Hashtable - value exists
  • You're saving the handle id of TempUnit thrice
  • Remove the lines where you clear child hashtables for keys left, right, origin, foot and chest. You're not storing anything with those parent keys
  • You could store triggering unit/picked unit, Key(Triggering unit) and Key(Picked unit) into variables, and use the variables
  • Delete the actions that have custom script functions in comments
  • You don't need to store then handle of the unit for itself
  • You don't need to save the handle of a group for a unit in the looping trigger, you have already saved it in the cast trigger
  • Do the caster is dead check when you check TempInt

Reviewed by Maker, Dash Strikes, 3rd Jan 2012

  • You should check whether the effects are stored, and then not create new ones if they exist. Use boolean, Hashtable - value exists
  • You're saving the handle id of TempUnit thrice
  • Instead of GetLastCreatedGroup(), you should use CreateGroup()
  • Remove the lines where you clear child hashtables for keys left, right, origin, foot and chest. You're not storing anything with those parent keys
  • You could store triggering unit/picked unit, Key(Triggering unit) and Key(Picked unit) into variables, and use the variables
  • Get rid of BJs in your custom scripts. LoadRealBJ -> LoadReal, GetHandleIdBJ -> GetHandleId...
  • You don't need to store then handle of the unit for itself
  • You don't need to save the handle of a group for a unit in the looping trigger, you have already saved it in the cast trigger
  • You should destroy the stored group when a spell ends
  • Do the caster is dead check when you check TempInt
  • Don't edit a standard ability directly. Copy and paste the ability so it is on custom abilities folder
  • You can go out of map bounds, and then you can't get back
  • Learn tooltip should list stats of each level
 
Top