Rapid Slash v 1.0

A kinda simple spell I made because I often see in Hero Arena maps that there are spells of this type and all of them pauses both the caster and the target and makes the caster invulnerable. This one won't do any of these things.

Slashes the target unit several times rapidly, dealing damage per slash.
Level 1: Slashes 5 times. Each slash deals 40 damage.
Level 2: Slashes 7 times. Each slash deals 55 damage.
Level 3: Slashes 9 times. Each slash deals 70 damage.
Level 4: Slashes 11 times. Each slash deals 85 damage.
Level 5: Slashes 13 times. Each slash deals 100 damage.

Import instructions in the init trigger

  • Skill Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set DummyUnit = Dark Stalker Dummy
      • Set DummySkill = Fade 0.35 sec
      • Set DummyEffect = Rapid Slash Effect
      • Set HeroEffect = Rapid Slash Effect 2
  • Rapid Slash
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Rapid Slash
    • Actions
      • Set TempInt = (Player number of (Triggering player))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • RSHas[RSLastRecycled] Equal to True
        • Then - Actions
          • Set RSMax = (RSMax + 1)
          • Set RSIndex = RSMax
        • Else - Actions
          • Set RSIndex = RSLastRecycled
          • Set RSLastRecycled = RSRecycledList[RSLastRecycled]
      • Set RSCaster[RSIndex] = (Triggering unit)
      • Set RSTarget[RSIndex] = (Target unit of ability being cast)
      • Set RSHas[RSIndex] = True
      • Set RSCount = (RSCount + 1)
      • Set RSEffectDelayer[RSIndex] = 1
      • Set RSRemaining[RSIndex] = (3 + (2 x (Level of Rapid Slash for RSCaster[RSIndex])))
      • Set RSDamage[RSIndex] = (25.00 + (15.00 x (Real((Level of Rapid Slash for RSCaster[RSIndex])))))
      • Unit - Add HeroEffect to RSCaster[RSIndex]
      • Unit - Turn collision for RSCaster[RSIndex] Off
      • Animation - Change RSCaster[RSIndex]'s animation speed to 200.00% of its original speed
      • Animation - Change RSCaster[RSIndex]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
      • Set TempLoc = (Position of RSCaster[RSIndex])
      • Set TempLoc2 = (Position of RSTarget[RSIndex])
      • Set RSDistance[RSIndex] = (Distance between TempLoc and TempLoc2)
      • Custom script: call RemoveLocation (udg_TempLoc)
      • Custom script: call RemoveLocation (udg_TempLoc2)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Rapid Slash Loop <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Rapid Slash Loop <gen>
        • Else - Actions
  • Rapid Slash Loop
    • Events
      • Time - Every 0.08 seconds of game time
    • Conditions
    • Actions
      • For each (Integer RSInteger) from 0 to RSMax, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • RSHas[RSInteger] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • RSRemaining[RSInteger] Greater than 0
                • Then - Actions
                  • Set RSEffectDelayer[RSInteger] = (RSEffectDelayer[RSInteger] + 1)
                  • Set TempLoc = (Position of RSCaster[RSInteger])
                  • Set TempLoc2 = (Position of RSTarget[RSInteger])
                  • Set TempLoc3 = (TempLoc2 offset by RSDistance[RSInteger] towards (Angle from TempLoc2 to TempLoc) degrees)
                  • Unit - Order RSTarget[RSInteger] to Stop
                  • Unit - Move RSCaster[RSInteger] instantly to TempLoc3, facing TempLoc2
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (RSEffectDelayer[RSInteger] mod 3) Equal to 0
                    • Then - Actions
                      • Set RSRemaining[RSInteger] = (RSRemaining[RSInteger] - 1)
                      • Unit - Create 1 DummyUnit for Neutral Passive at TempLoc3 facing (Angle from TempLoc to TempLoc2) degrees
                      • Set TempUnit = (Last created unit)
                      • Unit - Add DummyEffect to TempUnit
                      • Unit - Turn collision for TempUnit Off
                      • Unit - Add a 0.50 second Generic expiration timer to TempUnit
                      • Unit - Add DummySkill to TempUnit
                      • Unit - Order TempUnit to Orc Blademaster - Wind Walk
                      • Animation - Change TempUnit's vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
                      • Animation - Play TempUnit's attack animation
                      • Animation - Play RSCaster[RSInteger]'s attack animation
                      • Unit - Cause RSCaster[RSInteger] to damage RSTarget[RSInteger], dealing RSDamage[RSInteger] damage of attack type Hero and damage type Normal
                    • Else - Actions
                  • Custom script: call RemoveLocation (udg_TempLoc)
                  • Custom script: call RemoveLocation (udg_TempLoc2)
                  • Custom script: call RemoveLocation (udg_TempLoc3)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (RSTarget[RSInteger] is dead) Equal to True
                          • (RSCaster[RSInteger] is dead) Equal to True
                    • Then - Actions
                      • Set RSRemaining[RSInteger] = 0
                    • Else - Actions
                • Else - Actions
                  • Animation - Change RSCaster[RSInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                  • Animation - Change RSCaster[RSInteger]'s animation speed to 100.00% of its original speed
                  • Animation - Play RSCaster[RSInteger]'s stand animation
                  • Unit - Remove HeroEffect from RSCaster[RSInteger]
                  • Unit - Turn collision for RSCaster[RSInteger] On
                  • Set RSCount = (RSCount - 1)
                  • Set RSHas[RSInteger] = False
                  • Set RSRecycledList[RSInteger] = RSLastRecycled
                  • Set RSLastRecycled = RSInteger
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • RSCount Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                      • For each (Integer A) from 0 to RSMax, do (Set RSRecycledList[(Integer A)] = 0)
                      • Set RSLastRecycled = 0
                      • Set RSMax = 0
                    • Else - Actions
            • Else - Actions
Keywords:
illidan, demon, hunter, terror, blade, dark, stalker, physical, hero, damage, slash, rapid, choppin', bladestorm, nerd rage,
Contents

Just another Warcraft III map (Map)

Reviews
14th Jan 2012 Bribe: The indexing is really weird. You don't need a "has" variable because there is no reason to iterate over dead indices. Check out Hanky's Dynamic Indexing which is the best GUI indexing out there. Looking at the comments I can...

Moderator

M

Moderator

14th Jan 2012
Bribe: The indexing is really weird. You don't need a "has" variable because there is no reason to iterate over dead indices. Check out Hanky's Dynamic Indexing which is the best GUI indexing out there.

Looking at the comments I can see that Maker has already mentioned this. His system works just fine in its current state so maybe the version you tried last March was buggy (I do recall he said he fixed some bugs in the past few months).

However I happen to know that your indexing works (it simply could be "better"). So I will approve this with a 3/5 rating for now.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
You could use proper dynamic indexing, where "dead" instances are removed and you don't need the Has boolean.
Improve the learn tooltip, you should list the damage of every level there. Look at standard Blizzard abilities.
Change the learned icon position.
Ordering the unit to constantly stop causes the stop and attack icons to flash which doesn't look professional.
You could try to make the spell support being able to abort it by ordering the unit to move. You move the unit instantly periodically so the unit can't be ordered to do anything else. Maybe that is instended, but I like being able to abort my spells.
Maybe you could change the colour of the dummies to the owner of the caster.

Good job with the ability, triggering looks ok.

Somehow this reminds me of my Lightning Speed Laceration spell.
 
Level 16
Joined
Jun 24, 2009
Messages
1,409
You could use proper dynamic indexing, where "dead" instances are removed and you don't need the Has boolean.
Well if you can tell me what the hell is the problem of this spell then I will try it(again).
http://www.hiveworkshop.com/forums/1873973-post6.html
That was the first time(and the last as well) when I've tried to make a spell with other's index recycling system. This one was made with Hanky's template and it often crashed.

Improve the learn tooltip, you should list the damage of every level there. Look at standard Blizzard abilities.
Change the learned icon position.
Okay.

Ordering the unit to constantly stop causes the stop and attack icons to flash which doesn't look professional.
Then how could I make it without stunning the target? If I just change the movement speed of the target to nearly zero and order a dummy unit to cast a spell on the target that disables the attack is more complicated and I have to use another one dummy and spell.

You could try to make the spell support being able to abort it by ordering the unit to move. You move the unit instantly periodically so the unit can't be ordered to do anything else. Maybe that is instended, but I like being able to abort my spells.
I'll try it.

Maybe you could change the colour of the dummies to the owner of the caster.
I've changed it to neutral because it looked kinda strange for that hero. The glow was too bright.

Good job with the ability, triggering looks ok.
Then why won't you approve it? T~T

Somehow this reminds me of my Lightning Speed Laceration spell.
Well, this type of spell can be found in almost every Hero Arena map.
 
Level 12
Joined
Aug 12, 2008
Messages
349
You should check only after you reduce the integer; move the block into it.
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • FIndexS Equal to 0
    • Then - Actions
      • Trigger - Turn off (This trigger)
    • Else - Actions
If I'm not mistaken, it automatically creates the unit group after you set it. You don't need to use native to create it anymore.
  • Custom script: set udg_FFreezeGroup[udg_TempInt] = CreateGroup()
  • Set FFreezeGroup[TempInt] = (Units within 750.00 of FCastPoint[TempInt] matching ((((Matching unit) is alive) Equal to True) and ((Matching unit) Not equal to FCaster[TempInt])))
Marsal said:
Well, this type of spell can be found in almost every Hero Arena map.
Lightning Speed Laceration spell is one of Maker's spell. lol.

EDIT:
Marsal said:
Then how could I make it without stunning the target? If I just change the movement speed of the target to nearly zero and order a dummy unit to cast a spell on the target that disables the attack is more complicated and I have to use another one dummy and spell.
My suggestion would be to create a dummy and order the dummy unit to stun the target. In the end of the duration, remove the buff.
 
Level 16
Joined
Jun 24, 2009
Messages
1,409
You should check only after you reduce the integer; move the block into it.
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • FIndexS Equal to 0
    • Then - Actions
      • Trigger - Turn off (This trigger)
    • Else - Actions
If I'm not mistaken, it automatically creates the unit group after you set it. You don't need to use native to create it anymore.
  • Custom script: set udg_FFreezeGroup[udg_TempInt] = CreateGroup()
  • Set FFreezeGroup[TempInt] = (Units within 750.00 of FCastPoint[TempInt] matching ((((Matching unit) is alive) Equal to True) and ((Matching unit) Not equal to FCaster[TempInt])))
Lightning Speed Laceration spell is one of Maker's spell. lol.

EDIT:
My suggestion would be to create a dummy and order the dummy unit to stun the target. In the end of the duration, remove the buff.

Read again my comment -.-"
Let me emphasize the keywords. Almost every HERO ARENA have a spell of THIS TYPE.
 
Top