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

Need help with triggered spells!

Status
Not open for further replies.
Level 6
Joined
Jul 21, 2019
Messages
168
Hello, lately i got a lot of free time and decided to try the world editor again, this time starting with something simpler than a map, a custom hero.

Now first of all i want to clarify that i don't own any of the resources used on this hero, everything from the 3d model and special effects to all the triggered spells was created by Hiveworkshop members, i just downloaded what i needed and put it together.

My problems involve some triggering i want to make but i am unable to because of my limited knowledge of the editor, some spells are just fine, but others do things they should not, and i would like to add stuff to others but as i said, my knowledge of the editor is basic.

Hero description:



First ability (No target, Instant Cast)



Video:


My problem:

The shield only blocks physical damage, and what i'd call "direct damage spells", like chain lighting, others like mana burn and shadow strike seem to bypass the shield, in the case of shadow strike the damage over time bypasses the shield, the hero is also affected by negative buffs such as faerie fire and envenomed weapons and also by passive abilites like bash (this one should do the extra damage but not stun the hero).

Solution:

The easiest solution (i think) is to make the hero spell imune and "negative buff inmune" during the lifespan of the shield, but i'm afraid it would make the ability a little too OP, i need your opinion with this one, i also preffer not to use a damage detection system, so if it's needed to block specific types of damage i think the spell and negative buff inmunity solution will do.

  • ShieldIni
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set Shield_LifeBonus = Shield Life Bonus
      • Hashtable - Create a hashtable
      • Set Shield_Hashtabe = (Last created hashtable)
  • ShieldCast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Power Shield
    • Actions
      • Set i = (Key (Triggering unit))
      • -------- If you don't want shield to stack set r = 0 --------
      • Set r = (Load 0 of i from Shield_Hashtabe)
      • -------- Shield hitpoints --------
      • Hashtable - Save (75.00 + (75.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))) as 0 of i in Shield_Hashtabe
      • -------- Duration in seconds --------
      • Hashtable - Save 30.00 as 1 of i in Shield_Hashtabe
      • Special Effect - Destroy (Load 0 of i in Shield_Hashtabe)
      • Special Effect - Create a special effect attached to the chest of (Triggering unit) using war3mapImported\Liberty Blue.mdx
      • Hashtable - Save Handle Of(Last created special effect) as 0 of i in Shield_Hashtabe
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Triggering unit) is in Shield_EventGroup) Equal to False
        • Then - Actions
          • Unit Group - Add (Triggering unit) to Shield_EventGroup
          • Trigger - Add to ShieldBlock <gen> the event (Unit - (Triggering unit) Takes damage)
        • Else - Actions
      • Unit Group - Add (Triggering unit) to Shield_Group
      • Trigger - Turn on ShieldLoop <gen>
  • ShieldLoop
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Shield_Group and do (Actions)
        • Loop - Actions
          • Set i = (Key (Picked unit))
          • Set r = ((Load 1 of i from Shield_Hashtabe) - 0.10)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • r Less than or equal to 0.00
            • Then - Actions
              • Special Effect - Destroy (Load 0 of i in Shield_Hashtabe)
              • Floating Text - Create floating text that reads 0 above (Picked unit) with Z offset 0.00, using font size 10.00, color (0.00%, 100.00%, 100.00%), and 50.00% transparency
              • Floating Text - Set the velocity of (Last created floating text) to 90.00 towards 90.00 degrees
              • Floating Text - Change (Last created floating text): Disable permanence
              • Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
              • Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
              • Unit Group - Remove (Picked unit) from Shield_Group
              • Hashtable - Clear all child hashtables of child i in Shield_Hashtabe
              • If ((Shield_Group is empty) Equal to True) then do (Trigger - Turn off (This trigger)) else do (-------- Do Nothing --------)
            • Else - Actions
              • Hashtable - Save r as 1 of i in Shield_Hashtabe
  • ShieldBlock
    • Events
    • Conditions
    • Actions
      • Set i = (Key (Triggering unit))
      • Set r = (Load 0 of i from Shield_Hashtabe)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • r Greater than 0.00
        • Then - Actions
          • -------- Heal if timer did not finish yet (0.00 sec seem to be quite a long time...) --------
          • If (Shield_Target Not equal to No unit) then do (Trigger - Run ShieldHeal <gen> (ignoring conditions)) else do (-------- Do Nothing --------)
          • Set Shield_Damage = (Damage taken)
          • Set r = (r - Shield_Damage)
          • Floating Text - Create floating text that reads (String((Integer(r)))) above (Triggering unit) with Z offset 0.00, using font size 10.00, color (0.00%, 100.00%, 100.00%), and 50.00% transparency
          • Floating Text - Set the velocity of (Last created floating text) to 90.00 towards 90.00 degrees
          • Floating Text - Change (Last created floating text): Disable permanence
          • Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
          • Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • r Less than or equal to 0.00
            • Then - Actions
              • Set Shield_Damage = r
              • Special Effect - Destroy (Load 0 of i in Shield_Hashtabe)
              • Unit Group - Remove (Triggering unit) from Shield_Group
              • Hashtable - Clear all child hashtables of child i in Shield_Hashtabe
            • Else - Actions
              • Hashtable - Save r as 0 of i in Shield_Hashtabe
          • Set Shield_Target = (Triggering unit)
          • -------- Using big life bonus to prevent death if damage>=max hp --------
          • Unit - Add Shield_LifeBonus to Shield_Target
          • Countdown Timer - Start Shield_Timer as a One-shot timer that will expire in 0.00 seconds
        • Else - Actions
  • ShieldHeal
    • Events
      • Time - Shield_Timer expires
    • Conditions
    • Actions
      • Unit - Set life of Shield_Target to ((Life of Shield_Target) + Shield_Damage)
      • Unit - Remove Shield_LifeBonus from Shield_Target
      • Set Shield_Target = No unit

Second ability (No target, instant cast):



Video:


My Problem:

As this spell briefly disables collision, the hero is able to go through units and buildings, which is ok, but it also enables it to go through trees and doodads, this is problematic because it's very easy to get stuck on trees or similar.

Solution:

I need the trigger to somehow detect if the ground ahead has trees or doodads, and interrupt the dash when it collides with it, i only want it to go through units and buildings.

What i want to add to this spell:

As the name suggests, i want the dash to also burn/damage over time (negative buff) enemy units caught in the AOE, this should only last a couple of seconds, like the effect inmolation has.

Solution:

Extra triggering, i'm guessing with a dummy unit, but i have no idea how to do it because i'm a uge noob.

  • Searing Charge
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Searing Charge
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • DashInteger[0] Equal to 0
        • Then - Actions
          • Trigger - Turn on Searing Charge Loop <gen>
        • Else - Actions
      • -------- ----------------------------------------------------- --------
      • Set DashInteger[0] = (DashInteger[0] + 1)
      • Set DashInteger[1] = (DashInteger[1] + 1)
      • -------- ----------------------------------------------------- --------
      • Set DashCaster[DashInteger[1]] = (Triggering unit)
      • -------- ----------------------------------------------------- --------
      • Unit - Pause DashCaster[DashInteger[1]]
      • -------- ----------------------------------------------------- --------
      • Set DashReal1[DashInteger[1]] = (Facing of DashCaster[DashInteger[1]])
      • -------- ----------------------------------------------------- --------
      • -------- -----------Configure The Spell--------------------------- --------
      • -------- ----------------------------------------------------- --------
      • Set DashDamage[DashInteger[1]] = ((Real((Level of Searing Charge for DashCaster[DashInteger[1]]))) x 75.00)
      • -------- ----------------------------------------------------- --------
      • Set DashSpeed[DashInteger[1]] = 40.00
      • -------- ----------------------------------------------------- --------
      • -------- ----------------How Much the Caster to Dash-------------------- --------
      • -------- ----------------------------------------------------- --------
      • Set DashDistance[DashInteger[1]] = 15
      • -------- ----------------------------------------------------- --------
      • -------- ----------------How Much the Caster to Dash-------------------- --------
      • -------- ----------------------------------------------------- --------
      • -------- -------------Turn Collision off----------------------- --------
      • -------- ----------------------------------------------------- --------
      • Custom script: call SetUnitAnimationByIndex (udg_DashCaster[udg_DashInteger[1]] , 2)
      • Animation - Play DashCaster[DashInteger[1]]'s stand ready animation
      • Special Effect - Create a special effect attached to the origin of DashCaster[DashInteger[1]] using war3mapImported\Valiant Charge Royal.mdx
      • Set DashEffect[1] = (Last created special effect)
      • Unit - Turn collision for DashCaster[DashInteger[1]] Off
      • -------- ----------------------------------------------------- --------
  • Searing Charge Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer DashInteger[2]) from 1 to DashInteger[1], do (Actions)
        • Loop - Actions
          • Set DashDistance[DashInteger[2]] = (DashDistance[DashInteger[2]] - 1)
          • -------- ----------------------------------------------------- --------
          • Set DashPoint3[DashInteger[2]] = (Position of DashCaster[DashInteger[2]])
          • Set DashPoint4[DashInteger[2]] = (DashPoint3[DashInteger[2]] offset by DashSpeed[DashInteger[2]] towards DashReal1[DashInteger[2]] degrees)
          • -------- ----------------------------------------------------- --------
          • Unit - Move DashCaster[DashInteger[2]] instantly to DashPoint4[DashInteger[2]]
          • -------- ----------------------------------------------------- --------
          • -------- ----------------------------------------------------- --------
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in DashGroup3 and do (Actions)
            • Loop - Actions
              • Set DashPoint5[DashInteger[2]] = (Position of (Picked unit))
              • Set DashReal2[DashInteger[2]] = ((Distance between DashPoint3[DashInteger[2]] and DashPoint5[DashInteger[2]]) / 5.00)
              • Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with DashReal2[DashInteger[2]]% transparency
          • -------- ----------------------------------------------------- --------
          • Set DashGroup1 = (Units within 150.00 of DashPoint4[DashInteger[2]] matching ((((Matching unit) belongs to an enemy of (Owner of DashCaster[DashInteger[2]])) Equal to True) and (((Matching unit) is in DashGroup2) Equal to False)))
          • Unit Group - Pick every unit in DashGroup1 and do (Actions)
            • Loop - Actions
              • Unit Group - Add (Picked unit) to DashGroup2
              • Unit - Cause DashCaster[DashInteger[2]] to damage (Picked unit), dealing DashDamage[DashInteger[2]] damage of attack type Spells and damage type Normal
          • -------- ----------------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • DashDistance[DashInteger[2]] Less than or equal to 0
                  • (Terrain pathing at DashPoint3[DashInteger[2]] of type Walkability is off) Equal to True
            • Then - Actions
              • Unit Group - Remove all units from DashGroup2
              • For each (Integer DashInteger[2]) from 1 to DashInteger[1], do (Actions)
                • Loop - Actions
                  • -------- ----------------------------------------------------- --------
                  • Unit - Unpause DashCaster[DashInteger[2]]
                  • Animation - Reset DashCaster[DashInteger[1]]'s animation
                  • Special Effect - Destroy DashEffect[1]
                  • Unit - Turn collision for DashCaster[DashInteger[2]] On
                  • -------- ----------------------------------------------------- --------
              • -------- ----------------------------------------------------- --------
              • Set DashInteger[1] = 0
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • DashInteger[0] Equal to 0
                • Then - Actions
                  • -------- ----------------------------------------------------- --------
                  • Set DashInteger[1] = 0
                  • -------- ----------------------------------------------------- --------
                  • Trigger - Turn off (This trigger)
                • Else - Actions
            • Else - Actions
          • -------- ----------------------------------------------------- --------
          • Custom script: call RemoveLocation (udg_DashPoint3[udg_DashInteger[2]])
          • Custom script: call RemoveLocation (udg_DashPoint4[udg_DashInteger[2]])
          • Custom script: call DestroyGroup (udg_DashGroup1)
          • -------- ----------------------------------------------------- --------
  • Unit Leak
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Dying unit)) Equal to Dash Dummy
        • Then - Actions
          • Unit - Remove (Dying unit) from the game
        • Else - Actions

Third ability (Target object):



Video:


This ability works as intended, i added it in order to satisfy curiousity, however, i will add the triggers anyway incase they have any kind of leak or something wrong:

  • Knockback Index
    • Events
    • Conditions
    • Actions
      • Set KB_Max = (KB_Max + 1)
      • Set kb = KB_Max
  • Knockback Move
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer kb) from 1 to KB_Max, do (Actions)
        • Loop - Actions
          • Set point = (Position of KB_Unit[kb])
          • Set point2 = (point offset by KB_Speed[kb] towards KB_Angle[kb] degrees)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Terrain pathing at point2 of type Walkability is off) Equal to True
                  • KB_Dist[kb] Greater than or equal to KB_MaxDist[kb]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • KB_Max Equal to 1
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • -------- Recycle index --------
                  • Set KB_Angle[kb] = KB_Angle[KB_Max]
                  • Set KB_Dist[kb] = KB_Dist[KB_Max]
                  • Set KB_MaxDist[kb] = KB_MaxDist[KB_Max]
                  • Set KB_Speed[kb] = KB_Speed[KB_Max]
                  • Set KB_Unit[kb] = KB_Unit[KB_Max]
                  • Set kb = (kb - 1)
              • Set KB_Max = (KB_Max - 1)
            • Else - Actions
              • Unit - Move KB_Unit[kb] instantly to point2
              • Special Effect - Create a special effect at point2 using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Set KB_Dist[kb] = (KB_Dist[kb] + KB_Speed[kb])
          • Custom script: call RemoveLocation( udg_point )
          • Custom script: call RemoveLocation( udg_point2 )
  • Shocking Thrust
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shocking Thrust
    • Actions
      • Trigger - Run Knockback Index <gen> (ignoring conditions)
      • Set KB_Unit[kb] = (Target unit of ability being cast)
      • Set point = (Position of (Triggering unit))
      • Set point2 = (Position of KB_Unit[kb])
      • Special Effect - Create a special effect at point2 using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Set KB_Angle[kb] = (Angle from point to point2)
      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
      • -------- CUSTOMIZE: change here to set the knockback range/speed --------
      • Set KB_MaxDist[kb] = 525.00
      • Set KB_Speed[kb] = 55.00
      • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
      • Set KB_Dist[kb] = 0.00
      • Trigger - Turn on Knockback Move <gen>
      • Custom script: call RemoveLocation( udg_point )
      • Custom script: call RemoveLocation( udg_point2 )
  • Cast Animation
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shocking Thrust
    • Actions
      • Animation - Change (Triggering unit)'s animation speed to 150.00% of its original speed
      • Animation - Play (Triggering unit)'s attack slam animation
      • Wait 0.20 game-time seconds
      • Animation - Reset (Triggering unit)'s animation
      • Animation - Change (Triggering unit)'s animation speed to 100.00% of its original speed
(The last trigger "cast animation" was created by me, i'm pretty sure it has leaks so i need help here)

Ultimate ability (No target, passive)



Video:


My problem:

The passive triggers when using ANY ability, this including using items like potions and scroll of town portal, which is stupid, the passive should only be triggered when any of the other 3 abilities of the hero is cast.

Solution:

A trigger to detect if the (Q),(W) or (E) abilities are cast

  • Fervor Index
    • Events
    • Conditions
    • Actions
      • Set BF_Max = (BF_Max + 1)
      • Set bf = BF_Max
  • Fervor
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Level of Skill_BattleFury for (Triggering unit)) Greater than 0
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Skill_BattleFurrySpeed for (Triggering unit)) Equal to 0
        • Then - Actions
          • Trigger - Run Fervor Index <gen> (ignoring conditions)
          • Set BF_Hero[bf] = (Triggering unit)
          • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
          • -------- CUSTOMIZE: change here to change the effects --------
          • Special Effect - Create a special effect attached to the hand left of BF_Hero[bf] using war3mapImported\Radiance Royal.mdx
          • Set BF_SpecEffect1[bf] = (Last created special effect)
          • Special Effect - Create a special effect attached to the hand right of BF_Hero[bf] using war3mapImported\Radiance Royal.mdx
          • Set BF_SpecEffect2[bf] = (Last created special effect)
          • -------- lZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZl --------
          • Set BF_Time[bf] = BF_DefautInterval
          • Unit - Add Skill_BattleFurrySpeed to BF_Hero[bf]
          • Unit - Set level of Skill_BattleFurrySpeed for BF_Hero[bf] to (((Level of Skill_BattleFury for BF_Hero[bf]) x 11) + 0)
          • Trigger - Turn on Fervor Downgrade <gen>
        • Else - Actions
          • Unit - Set level of Skill_BattleFurrySpeed for (Triggering unit) to (((Level of Skill_BattleFury for (Triggering unit)) x 11) + 0)
  • Fervor Downgrade
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer bf) from 1 to BF_Max, do (Actions)
        • Loop - Actions
          • Set BF_Time[bf] = (BF_Time[bf] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BF_Time[bf] Equal to 0
            • Then - Actions
              • Set integer = (Level of Battle Fury - Attackspeed for BF_Hero[bf])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • integer Equal to 1
                • Then - Actions
                  • Unit - Remove Skill_BattleFurrySpeed from BF_Hero[bf]
                  • Special Effect - Destroy BF_SpecEffect1[bf]
                  • Special Effect - Destroy BF_SpecEffect2[bf]
                  • -------- Recycle Index --------
                  • Set BF_Hero[bf] = BF_Hero[BF_Max]
                  • Set BF_SpecEffect1[bf] = BF_SpecEffect1[BF_Max]
                  • Set BF_SpecEffect2[bf] = BF_SpecEffect2[BF_Max]
                  • Set BF_Time[bf] = BF_Time[BF_Max]
                  • Set BF_Max = (BF_Max - 1)
                  • Set bf = (bf - 1)
                • Else - Actions
                  • Unit - Set level of Skill_BattleFurrySpeed for BF_Hero[bf] to (integer - 1)
                  • Set BF_Time[bf] = BF_DefautInterval
            • Else - Actions


That's all i need help with related to triggers, i will really appreciate any help as i have tried to do these fixes myself but i lack the required knowledge, Thanks in advance!


---------------------------------------------------------------------------------------------------------

On a sidenote, i would like some advice about how to balance this hero for melee maps, i dont want it to either be over or under-powered compared to the original heros, i tried to search in google but this specific information is very scarce, all i found was a post from "world edit tutorials" but it only covered regular units without abilities.

Here are some pictures with the stats of the hero:

Level 1 stats:


Attack and movement rate:


Starting stats and gains per level:

Agi: 23 / 1.50
Int: 12 / 2.00
Str: 20 / 2.50

---------------------------------------------------------------------------------------------------------

Finally, a minor gripe about the 3d model: It doesn't seem to leave footprints or move water upon walking on it, i think the tauren's would do because i scale up the model a little and it towers over most heros (eredar are all tall in W3).

Here is the model (Zodiac warrior by Dickxunder):
Zodiac Warrior

Again, thanks in advance for any help!

EDIT: I have included the map containing the spells.

The custom hero is available at the Tavern on the center of the map.
 

Attachments

  • (2)Zangarmarsh.w3x
    444.4 KB · Views: 30
Last edited:
Level 6
Joined
Jul 21, 2019
Messages
168
Images are all broken, i will fix it asap. Done.

EDIT: I re-uploaded the map on the original post, i changed the name of some of the triggers to avoid confusion (as shown on the triggers posted on the main post), but i had world edit open and forgot to save the map before uploading it.

If anyone downloaded the map already i recomend to re-download it now.
 
Last edited:
Level 24
Joined
Feb 9, 2009
Messages
1,787
  1. For the shield, I would recommend using berserk and setting the damage increment to instead decrease damage dealt to the caster, perhaps 20/30/40% reduction for 15 seconds, the point of the shield was to reduce damage and you can wholly achieve this with simple reduction, other wise you could opt for a toned down version of mountain king's ultimate ability with only the "anti-debuff" aspect.

  2. Searing Charge, I used the trigger, "pick every destructible - Within 150 of X point" just before the move trigger, this way it will stop before going into trees and such.

  3. Use of And & Or in the conditions can filter what spells will signal the effect
Attached, is your map with the above changes, along with a placement of said hero for testing in the center.

Edit:
As for stat balance, all the heroes have 54 stats distributed to strength, intelligence, and agility, as well as 6 increment per level, distribute them as you wish!

(Note your guy has 55 points instead of 54...)
 

Attachments

  • (2)Zangarmarsh.w3x
    445.2 KB · Views: 34
Last edited:
Level 39
Joined
Feb 27, 2007
Messages
5,012
i also preffer not to use a damage detection system
You absolutely should use a DDS for this; it will simplify your triggers significantly. It's really easy to implement such a thing, gives you a huge amount of control over damage events, and is relatively intuitive to use. Damage Engine 5.4.2.3 is what I would recommend. Inevitably you will have another spell idea that requires the use of a DDS and then you already have it implemented/know how to use it. Resources exist to be used!

Your Unit Leak trigger for the dash spell is unnecessary and actually does nothing. Units dont 'leak', they are automatically garbage collected by the game when they finish decaying. This spell also does not check for units that are magic immune, invulnerable, or have resistant skin. If you intend this spell to fit into wc3 melee you may want to consider filtering out units that have those properties.

Cast Animation does not leak anything. Since you seem to be unclear on what exactly a leak is I suggest you read Things That Leak

In order to make your spells MUI you should adopt some type of Dynamic Indexing. You can read about that here: Visualize: Dynamic Indexing
 
Status
Not open for further replies.
Top