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

Remaking shadow strike ability

Status
Not open for further replies.
Level 11
Joined
Jul 17, 2013
Messages
544
I want to change maievs shadow strike ability. It would be still single target but every new enemy maiev hits then every enemy is affected with shadow strike


For example maiev click ability that lasts for 10 second hits 1 orc an orc gets shadow strike, maiev hits second orc same thing happens, third orc too. As many enemies as are hited in 10 secs gets shadow strike.

Shadow strike shouldnt be used on orc again if hes alreday affected by shadow strike
 
Level 14
Joined
Feb 7, 2020
Messages
387
I would install a damage engine and turn on a trigger for X seconds that listens for damage taken, then cast a dummy version of Shadow Strike on the enemy if they don't already have the Shadow Strike debuff.

There are several damage engines available. e.g. Damage Engine 5.5.0.0

This would also allow you to make future spells with this kind of event use case.

Alternatively, you could use the damage event natives EVENT_UNIT_DAMAGING or EVENT_UNIT_DAMAGE.

You could also use "attack" events but they are a bit unreliable as they listen for an instance of attacking that doesn't account for animation times.
 
Level 11
Joined
Jul 17, 2013
Messages
544
I would install a damage engine and turn on a trigger for X seconds that listens for damage taken, then cast a dummy version of Shadow Strike on the enemy if they don't already have the Shadow Strike debuff.

There are several damage engines available. e.g. Damage Engine 5.5.0.0

This would also allow you to make future spells with this kind of event use case.

Alternatively, you could use the damage event natives EVENT_UNIT_DAMAGING or EVENT_UNIT_DAMAGE.

You could also use "attack" events but they are a bit unreliable as they listen for an instance of attacking that doesn't account for animation times.



but it should be only casted if maiev turned on ability and managed to hit an enemy so how do i do that?? 2 triggers one for ability used? and enabels the damage engine?
 
Level 3
Joined
Mar 21, 2020
Messages
35
nah, i tired this one and shadow strike jumps randomly over peasants, but it should be casted whenever maiev hits units

Oh that's easy..

  • Event
    • Unit is attacked
  • Conditions
    • Unit-Type of Attacking Unit = Maiev
  • Actions
    • create 1 dummy for Owner of Player of Triggering Unit
    • order Last Created Unit to cast Shadow Strike *use the lines from the map I sent*
 
Level 11
Joined
Jul 17, 2013
Messages
544
Oh that's easy..

  • Event
    • Unit is attacked
  • Conditions
    • Unit-Type of Attacking Unit = Maiev
  • Actions
    • create 1 dummy for Owner of Player of Triggering Unit
    • order Last Created Unit to cast Shadow Strike *use the lines from the map I sent*

hmm, but why guy there said dmg detection system is needed? my friend said same
 
Level 3
Joined
Mar 21, 2020
Messages
35
Maybe, but you can definitely trigger everything yourself. I don't use premade systems myself although I do recommend them so feel free to try what works for you!
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
A unit is attacked suffers the issue of going off before damage is dealt. So if Maiev misses her attack, the shadow strike still casts, if Maiev cancels her attack, the shadow strike still casts.

A damage engine allows you to detect when damage is actually dealt thus the attack has completed.

Here's a simple example of what you could do. Note that I didn't use a Damage Engine because I'm lazy. Also, since Shadow Strike has a delay before it hits it's target, you may be able to cast multiple Shadow Strikes on the same target if you attack extremely fast or spam attack/stop. This is because the target won't have the Shadow Strike buff right away.
  • Cast SS
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Turn On Shadow Strike
    • Actions
      • Unit Group - Add (Triggering unit) to ShadowStrikeGroup
      • Wait 10.00 seconds
      • Unit Group - Remove (Triggering unit) from ShadowStrikeGroup.
  • Attack SS
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) is in ShadowStrikeGroup.) Equal to True
      • ((Attacked unit) has buff Shadow Strike) Equal to False
      • ((Attacked unit) is A structure) Equal to False
    • Actions
      • Set VariableSet TempPoint = (Position of (Attacking unit))
      • Unit - Create 1 Dummy for (Owner of (Attacking unit)) at TempPoint facing Default building facing degrees
      • Unit - Add Shadow Strike (Dummy) to (Last created unit)
      • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Attacked unit)
      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation (udg_TempPoint)
 

Attachments

  • Shadow Strike Example.w3m
    18.8 KB · Views: 19
Level 11
Joined
Jul 17, 2013
Messages
544
A unit is attacked suffers the issue of going off before damage is dealt. So if Maiev misses her attack, the shadow strike still casts, if Maiev cancels her attack, the shadow strike still casts.

A damage engine allows you to detect when damage is actually dealt thus the attack has completed.

Here's a simple example of what you could do. Note that I didn't use a Damage Engine because I'm lazy. Also, since Shadow Strike has a delay before it hits it's target, you may be able to cast multiple Shadow Strikes on the same target if you attack extremely fast or spam attack/stop. This is because the target won't have the Shadow Strike buff right away.
  • Cast SS
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Turn On Shadow Strike
    • Actions
      • Unit Group - Add (Triggering unit) to ShadowStrikeGroup
      • Wait 10.00 seconds
      • Unit Group - Remove (Triggering unit) from ShadowStrikeGroup.
  • Attack SS
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) is in ShadowStrikeGroup.) Equal to True
      • ((Attacked unit) has buff Shadow Strike) Equal to False
      • ((Attacked unit) is A structure) Equal to False
    • Actions
      • Set VariableSet TempPoint = (Position of (Attacking unit))
      • Unit - Create 1 Dummy for (Owner of (Attacking unit)) at TempPoint facing Default building facing degrees
      • Unit - Add Shadow Strike (Dummy) to (Last created unit)
      • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Attacked unit)
      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation (udg_TempPoint)
excatly this what i was looking for however one more thing would be usefull for this how can i limit max targets that can receive shadow strike to be 5? i mean more than 5 enemies cant get shadow strike meanwhile spell is used. i guess i need to do condition to dont add more units to the group if it has alreday 5 units? or? i would also like to make it 5/6/7 per each lvl
 
Status
Not open for further replies.
Top